/**
  * getMockEntityManger
  *
  * @param $testCase
  *
  * @return \PHPUnit_Framework_MockObject_MockObject
  */
 public function getMockEntityManger($testCase)
 {
     $result = null;
     if (!empty($testCase['entity'])) {
         $result = new RcmGoogleAnalyticsEntity();
         $result->populate($testCase['entity']);
     }
     $repo = $this->getMockBuilder('\\Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $repo->expects($this->any())->method('findOneBy')->will($this->returnValue($result));
     $service = $this->getMockBuilder('\\Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $service->expects($this->any())->method('getRepository')->will($this->returnValue($repo));
     return $service;
 }
 /**
  * Create a new resource
  *
  * @param  mixed $data
  *
  * @return mixed
  */
 public function create($data)
 {
     if (!$this->hasAccess()) {
         $this->response->setStatusCode(401);
         return new ApiJsonModel(null, 401, $this->translate('Access Denied'));
     }
     $service = $this->getRcmGoogleAnalyticsService();
     $currentSite = $this->getCurrentSite();
     $entity = $service->getSiteAnalyticEntity($currentSite);
     if (!empty($entity)) {
         $this->response->setStatusCode(400);
         return new ApiJsonModel($entity, 400, $this->translate('Analytics already exist for this site'));
     }
     // INPUT VALIDATE
     $inputFilter = new RcmGoogleAnalyticsFilter();
     $inputFilter->setData($data);
     if (!$inputFilter->isValid()) {
         $this->response->setStatusCode(400);
         return new ApiJsonModel($data, 400, $this->translate('Analytics data is not valid'), $inputFilter->getMessages());
     }
     $entity = new RcmGoogleAnalytics();
     $entity->populate($inputFilter->getValues(), ['id', 'site']);
     $entity->setSite($this->getCurrentSite());
     $entityManager = $this->getEntityManager();
     try {
         $entityManager->persist($entity);
         $entityManager->flush($entity);
     } catch (\Exception $exception) {
         $this->response->setStatusCode(400);
         return new ApiJsonModel($entity, 400, $this->translate('Analytics failed to save') . ': ' . $exception->getMessage());
     }
     return new ApiJsonModel($entity);
 }