/**
  * create - Create a site
  *
  * @param array $data
  *
  * @return mixed|JsonModel
  */
 public function create($data)
 {
     /* ACCESS CHECK */
     if (!$this->rcmIsAllowed('sites', 'admin')) {
         $this->getResponse()->setStatusCode(Response::STATUS_CODE_401);
         return $this->getResponse();
     }
     /* */
     $inputFilter = new SiteInputFilter();
     $inputFilter->setData($data);
     if (!$inputFilter->isValid()) {
         return new ApiJsonModel([], 1, 'Some values are missing or invalid.', $inputFilter->getMessages());
     }
     $data = $inputFilter->getValues();
     $siteManager = $this->getSiteManager();
     try {
         $data = $siteManager->prepareSiteData($data);
         /** @var \Rcm\Repository\Domain $domainRepo */
         $domainRepo = $this->getEntityManager()->getRepository('\\Rcm\\Entity\\Domain');
         $data['domain'] = $domainRepo->createDomain($data['domainName']);
     } catch (\Exception $e) {
         return new ApiJsonModel(null, 1, $e->getMessage());
     }
     /** @var \Rcm\Entity\Site $newSite */
     $newSite = new Site();
     $newSite->populate($data);
     // make sure we don't have a siteId
     $newSite->setSiteId(null);
     try {
         $newSite = $siteManager->createSite($newSite);
     } catch (\Exception $e) {
         return new ApiJsonModel(null, 1, $e->getMessage());
     }
     return new ApiJsonModel($newSite, 0, 'Success');
 }
 /**
  * getMockSite
  *
  * @param $data
  *
  * @return Site
  */
 public function getMockSite($data)
 {
     $site = new Site();
     $site->populate($data);
     return $site;
 }