/**
  * @param int                     $campaignId
  * @param CampaignEventRepository $campaignEventRepository
  * @param CampaignRepository      $campaignRepository
  * @return \Response
  */
 public function show($campaignId, CampaignEventRepository $campaignEventRepository, CampaignRepository $campaignRepository)
 {
     $campaign = $campaignRepository->find($campaignId);
     if (!$campaign) {
         return $this->failure('Invalid Campaign ID');
     }
     // possible events to pass
     $availableEvents = ['clicked', 'opened', 'complained', 'bounced', 'dropped'];
     $event = Request::get('event');
     if ($event && !in_array($event, $availableEvents)) {
         $this->failure('Invalid parameter: event. Options are ' . implode(" | ", $availableEvents));
     }
     $offset = Request::get('offset', 0);
     $limit = Request::get('limit', 100);
     $params['id'] = $campaign->remoteCampaignId();
     $params['event'] = $event;
     $params['recipient'] = Request::get('recipient', null);
     $params['count'] = Request::get('count', false);
     $campaignEventRepository->setDomain($campaign->getFromEmailDomain());
     $campaignStats = $campaignEventRepository->search($params, $limit, $offset);
     $final = [];
     foreach ($campaignStats as $entry) {
         $final[] = $entry->toArray();
     }
     return $this->success($final);
 }