loadMe(); $this->layout()->set("me", $me); $this->me = $me; if (!$this->me->isAdmin()) { $this->redirect("dashboard"); } $this->kolmisoftMore = new KolmisoftMore($this->VOICE_PORTAL_HOST, $this->VOICE_PORTAL_API_KEY, $this->VOICE_PORTAL_USERNAME); } protected function indexAction(): void { $this->layout()->setTemplate("VoiceCallHistoryJob/Index"); } protected function apiAction() { $do = $this->request->do; if (!$this->me->isAdmin()) { $this->redirect("dashboard"); } switch ($do) { case "runJobs": $return = $this->runJobs(); break; case "importCallsFromToday": $return = $this->importCallsFromToday(); break; default: $return = false; break; } if (!$return) { $return = [ "status" => "error", "message" => "Invalid request." ]; } die(json_encode($return)); } private function runJobs(): array { VoiceCallHistoryJobModel::createJobsUntilToday(); $jobs = VoiceCallHistoryJobModel::getJobsNotDone(); $messages = [ "success" => [], "error" => [] ]; foreach ($jobs as $job) { $startDate = strtotime(date("Y-m-d 00:00:00", strtotime($job->date))); $endDate = strtotime(date("Y-m-d 00:00:00", strtotime($job->date . " +1 day"))); $callHistory = $this->kolmisoftMore->getVoiceCallHistory($startDate, $endDate); $importedCalls = VoiceCallHistoryModel::importCallsFromKolmisoft($callHistory); if ($importedCalls) { $messages["success"][$job->date] = $importedCalls["message"]; VoiceCallHistoryJobModel::updateJobStatus($job->id, "success"); } else { $messages["error"][$job->date] = "Failed to import calls for job $job->id."; VoiceCallHistoryJobModel::updateJobStatus($job->id, "failed"); } } return $messages; } }