Fixed some issues to allow all the campaign types and some code refactor
Added campaignModel unit test