getParsedBody(); if (empty($data->id)) { throw new BadRequest(); } $id = $data->id; return $this->getRecordService()->getCopiedAttachments($id); } /** * @todo Move to service. */ public function postActionSendTestEmail(Request $request) { $data = $request->getParsedBody(); if (!$this->acl->checkScope('Email')) { throw new Forbidden(); } if (is_null($data->password)) { if ($data->type == 'preferences') { if (!$this->user->isAdmin() && $data->id !== $this->user->id) { throw new Forbidden(); } $preferences = $this->getEntityManager()->getEntity('Preferences', $data->id); if (!$preferences) { throw new NotFound(); } if (is_null($data->password)) { $data->password = $this->getContainer() ->get('crypt') ->decrypt($preferences->get('smtpPassword')); } } else if ($data->type == 'emailAccount') { if (!$this->acl->checkScope('EmailAccount')) { throw new Forbidden(); } if (!empty($data->id)) { $emailAccount = $this->getEntityManager() ->getEntity('EmailAccount', $data->id); if (!$emailAccount) { throw new NotFound(); } if (!$this->user->isAdmin()) { if ($emailAccount->get('assignedUserId') !== $this->user->id) { throw new Forbidden(); } } if (is_null($data->password)) { $data->password = $this->getContainer() ->get('crypt') ->decrypt($emailAccount->get('smtpPassword')); } } } else if ($data->type == 'inboundEmail') { if (!$this->user->isAdmin()) { throw new Forbidden(); } if (!empty($data->id)) { $emailAccount = $this->getEntityManager()->getEntity('InboundEmail', $data->id); if (!$emailAccount) { throw new NotFound(); } if (is_null($data->password)) { $data->password = $this->getContainer() ->get('crypt') ->decrypt($emailAccount->get('smtpPassword')); } } } else { if (!$this->user->isAdmin()) { throw new Forbidden(); } if (is_null($data->password)) { $data->password = $this->getConfig()->get('smtpPassword'); } } } return $this->getRecordService()->sendTestEmail(get_object_vars($data)); } public function postActionMarkAsRead(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->markAsReadByIdList($idList); } public function postActionMarkAsNotRead(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->markAsNotReadByIdList($idList); } public function postActionMarkAllAsRead() { return $this->getRecordService()->markAllAsRead(); } public function postActionMarkAsImportant(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->markAsImportantByIdList($idList); } public function postActionMarkAsNotImportant(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->markAsNotImportantByIdList($idList); } public function postActionMoveToTrash(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->moveToTrashByIdList($idList); } public function postActionRetrieveFromTrash(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } return $this->getRecordService()->retrieveFromTrashByIdList($idList); } public function getActionGetFoldersNotReadCounts() { return $this->getRecordService()->getFoldersNotReadCounts(); } protected function fetchSearchParamsFromRequest(Request $request): SearchParams { $searchParams = parent::fetchSearchParamsFromRequest($request); $folderId = $request->getQueryParam('folderId'); if (!$folderId) { return $searchParams; } return $searchParams->withWhereAdded( WhereItem::fromRaw([ 'type' => 'inFolder', 'attribute' => 'folderId', 'value' => $folderId, ]) ); } public function postActionMoveToFolder(Request $request) { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } if (empty($data->folderId)) { throw new BadRequest(); } return $this->getRecordService()->moveToFolderByIdList($idList, $data->folderId); } public function getActionGetInsertFieldData(Request $request) { if (!$this->acl->checkScope('Email', 'create')) { throw new Forbidden(); } return $this->getServiceFactory() ->create('EmailTemplate') ->getInsertFieldData([ 'parentId' => $request->getQueryParam('parentId'), 'parentType' => $request->getQueryParam('parentType'), 'to' => $request->getQueryParam('to'), ]); } }