/**
  * @param Campaign $campaign
  * @param Mailgun  $mg
  * @param string   $domain
  * @param          $campaignRepository
  * @return string
  */
 private function setRemoteCampaignId(Campaign $campaign, MailGun $mg, $domain, CampaignRepository $campaignRepository)
 {
     $params['name'] = $campaign->campaignName();
     $result = $mg->post($domain . '/campaigns', $params);
     $campaign->setRemoteCampaignId($result->http_response_body->campaign->id);
     $campaignRepository->save($campaign);
     return $campaign;
 }
 /**
  * @param CampaignFactory    $campaignFactory
  * @param CampaignRepository $campaignRepository
  * @return \Response
  */
 public function store(CampaignFactory $campaignFactory, CampaignRepository $campaignRepository)
 {
     $campaign = $campaignFactory->create(['clientId' => $this->client_id, 'campaignName' => Request::input('campaign_name'), 'subjectLine' => Request::input('subject_line'), 'fromName' => Request::input('from_name'), 'trackOpens' => Request::input('track_opens'), 'trackClicks' => Request::input('track_clicks'), 'html' => Request::input('html'), 'plaintext' => Request::input('plaintext'), 'fromEmail' => Request::input('from_email'), 'replyToEmail' => Request::input('reply_to_email'), 'bounceEmail' => Request::input('bounce_email'), 'domain' => Request::input('domain')]);
     $campaign = $campaignRepository->save($campaign);
     if (!$campaign) {
         return $this->failure('Unable to create new campaign');
     }
     return $this->success(['id' => $campaign->id()]);
 }