webservice = $webservice; $this->devicePostUrl = $devicePostUrl; $this->deviceDeletePostUrl = $deviceDeletePostUrl; $this->devicePutUrl = $devicePutUrl; } /** * @param LifecycleEventArgs $args */ public function postPersist(LifecycleEventArgs $args) { $this->send($args, $this->devicePostUrl, HttpRequestInterface::METHOD_POST); } /** * @param LifecycleEventArgs $args */ public function preRemove(LifecycleEventArgs $args) { $entity = $args->getEntity(); if ($entity instanceof DeviceInterface) { if($deviceId = $this->getRemoteDeviceId($entity)) { $data = array('id' => $deviceId); return $this->webservice->makeGetRequest($this->deviceDeletePostUrl, HttpRequestInterface::METHOD_DELETE, $data); } } } /** * @param LifecycleEventArgs $args */ public function postUpdate(LifecycleEventArgs $args) { $entity = $args->getEntity(); if ($entity instanceof DeviceInterface) { if($deviceId = $this->getRemoteDeviceId($entity)) { $url = "{$this->devicePutUrl}{$deviceId}"; $this->send($args, $url, HttpRequestInterface::METHOD_PUT); } } } /** * @param LifecycleEventArgs $args * @param string $url * @param string $method */ private function send(LifecycleEventArgs $args, $url, $method) { $entity = $args->getEntity(); if ($entity instanceof DeviceInterface) { $data = $entity->getDeviceData(); return $this->webservice->makeGetRequest($url, $method, $data); } } /** * @param object $entity */ private function getRemoteDeviceId($entity) { $deviceId = $entity->getId(); $deviceType = get_class($entity); $tenancyId = $entity->getTenancyId(); $filters = array('deviceId'=>$deviceId,'deviceType'=>$deviceType,'tenancyId'=>$tenancyId); $data = $this->webservice->getData("device_post_url",$filters); $deviceId = null; if(isset($data[0])) $deviceId = $data[0]['id']; return $deviceId; } }