getEntityManager()->getRepository('UniqueId')->where(array('name' => $uid))->findOne(); if (!$uniqueId) { throw new NotFound(); } $data = $uniqueId->get('data'); $eventType = $data->eventType; $eventId = $data->eventId; $inviteeType = $data->inviteeType; $inviteeId = $data->inviteeId; $link = $data->link; if (!empty($eventType) && !empty($eventId) && !empty($inviteeType) && !empty($inviteeId) && !empty($link)) { $event = $this->getEntityManager()->getEntity($eventType, $eventId); $invitee = $this->getEntityManager()->getEntity($inviteeType, $inviteeId); if (!$event || !$invitee) { throw new NotFound(); } if ($event->get('status') === 'Held' || $event->get('status') === 'Not Held') { throw new NotFound(); } $status = 'None'; $hookMethodName = 'afterConfirmation'; if ($action == 'accept') { $status = 'Accepted'; } else if ($action == 'decline') { $status = 'Declined'; } else if ($action == 'tentative') { $status = 'Tentative'; } $data = (object) [ 'status' => $status ]; $this->getEntityManager()->getRepository($eventType)->updateRelation($event, $link, $invitee->id, $data); $actionData = [ 'eventName' => $event->get('name'), 'eventType' => $event->getEntityType(), 'eventId' => $event->id, 'dateStart' => $event->get('dateStart'), 'action' => $action, 'status' => $status, 'link' => $link, 'inviteeType' => $invitee->getEntityType(), 'inviteeId' => $invitee->id ]; $this->getEntityManager()->getHookManager()->process($event->getEntityType(), $hookMethodName, $event, [], $actionData); $runScript = " Espo.require('crm:controllers/event-confirmation', function (Controller) { var controller = new Controller(app.baseController.params, app.getControllerInjection()); controller.masterView = app.masterView; controller.doAction('confirmEvent', ".json_encode($actionData)."); }); "; $this->getClientManager()->display($runScript); return; } throw new Error(); } }