getAcl()->getLevel('Opportunity', 'read'); if (!$level || $level == 'no') { throw new Forbidden(); } $dateFrom = $request->getQueryParam('dateFrom'); $dateTo = $request->getQueryParam('dateTo'); $dateFilter = $request->getQueryParam('dateFilter'); if (!$dateFilter) { throw new BadRequest("No `dateFilter` parameter."); } return $this->getOpportunityService()->reportByLeadSource($dateFilter, $dateFrom, $dateTo); } public function getActionReportByStage(Request $request): stdClass { $level = $this->getAcl()->getLevel('Opportunity', 'read'); if (!$level || $level == 'no') { throw new Forbidden(); } $dateFrom = $request->getQueryParam('dateFrom'); $dateTo = $request->getQueryParam('dateTo'); $dateFilter = $request->getQueryParam('dateFilter'); if (!$dateFilter) { throw new BadRequest("No `dateFilter` parameter."); } return $this->getOpportunityService()->reportByStage($dateFilter, $dateFrom, $dateTo); } public function getActionReportSalesByMonth(Request $request): stdClass { $level = $this->getAcl()->getLevel('Opportunity', 'read'); if (!$level || $level == 'no') { throw new Forbidden(); } $dateFrom = $request->getQueryParam('dateFrom'); $dateTo = $request->getQueryParam('dateTo'); $dateFilter = $request->getQueryParam('dateFilter'); if (!$dateFilter) { throw new BadRequest("No `dateFilter` parameter."); } return $this->getOpportunityService()->reportSalesByMonth($dateFilter, $dateFrom, $dateTo); } public function getActionReportSalesPipeline(Request $request): stdClass { $level = $this->getAcl()->getLevel('Opportunity', 'read'); if (!$level || $level == 'no') { throw new Forbidden(); } $dateFrom = $request->getQueryParam('dateFrom'); $dateTo = $request->getQueryParam('dateTo'); $dateFilter = $request->getQueryParam('dateFilter'); $useLastStage = $request->getQueryParam('useLastStage') === 'true'; $teamId = $request->getQueryParam('teamId') ?? null; if (!$dateFilter) { throw new BadRequest("No `dateFilter` parameter."); } return $this->getOpportunityService() ->reportSalesPipeline($dateFilter, $dateFrom, $dateTo, $useLastStage, $teamId); } /** * @return stdClass[] * @throws Forbidden * @throws BadRequest */ public function getActionEmailAddressList(Request $request): array { if (!$request->getQueryParam('id')) { throw new BadRequest(); } if (!$this->getAcl()->checkScope($this->name, 'read')) { throw new Forbidden(); } return $this->getOpportunityService()->getEmailAddressList($request->getQueryParam('id')); } private function getOpportunityService(): Service { /** @var Service */ return $this->getRecordService(); } }