public function pullVersion($vksId, $versionId) { if ($versionId == 0) { $vks = Vks::full()->findOrFail($vksId); $vks->version = new stdClass(); $vks->version->version = null; } else { $vksD = unserialize(VksVersion::where("vks_id", $vksId)->where("version", $versionId)->first(['dump'])->dump); $vks = new Vks(); foreach ((array) $vksD as $param => $value) { $vks->{$param} = $value; } $vks->version = VksVersion::where("vks_id", $vksId)->with('changer')->where("version", $versionId)->first(['vks_id', 'version', 'created_at', 'changed_by'])->toArray(); } $vksCtrl = new Vks_controller(); $vksCtrl->humanize($vks); $res = array(); foreach ($vks->toArray() as $key => $val) { if (!is_object($val)) { $res[$key] = $val; } else { $res[$key] = (array) $val; } } return $res; }
public function pullAndSendRequests() { $vc = new Vks_controller(); $requests = TechSupportRequest::where("status", TechSupportRequest::STATUS_READY_FOR_SEND)->with('attendance', 'owner')->get(); $temp_mails = 'Tomarov1-iv@mail.ca.sbrf.ru; DenisovDE@ab.srb.local'; if (count($requests)) { foreach ($requests as $request) { $vks = Vks::full()->find($request->vks_id); $vc->humanize($vks); $appHttpPath = NODE_HTTP_PATH; $message = App::$instance->twig->render('mails/v2/tech_support/new.twig', compact('request', 'vks', 'appHttpPath')); Mail::sendMailToStack($temp_mails, 'Запрос тех. поддержки для точки ' . $request->attendance->name . ' на ВКС #' . $vks->id, $message); $request->status = TechSupportRequest::STATUS_DELIVERED; $request->save(); } } }
function pullAndSendFromStack() { $vc = new Vks_controller(); $pullMails = OutlookCalendarRequest::notSended()->get(); if (count($pullMails)) { foreach ($pullMails as $outlookRequest) { $vks = Vks::full()->find($outlookRequest->vks_id); if ($vks) { $vc->humanize($vks); Mail::sendIcalEvent($vks, $outlookRequest->request_type, $outlookRequest->user); App::$instance->log->logWrite(LOG_MAIL_SENDED, 'Outlook event invite sended to: ' . $outlookRequest->user->email); $outlookRequest->send_status = OutlookCalendarRequest::SEND_STATUS_COMPLETED; $outlookRequest->save(); } else { App::$instance->log->logWrite(LOG_MAIL_SENDED, 'Outlook event invite can\'t be sended, vks not found, vks_id:' . $outlookRequest->vks_id . ', request_id:' . $outlookRequest->id); } } } }
function process($vksId) { Token::checkToken(); $connCtrl = new ConnectionCode_controller(); try { $vks = Vks::findOrFail($vksId); } catch (Exception $e) { $this->error('404'); } if (!self::isVksCanBeApproved($vks)) { $this->error('500', "Эта ВКС не может быть согласована, т.к. не имеет соответвующего статуса"); } $request = $this->request->request; //validate $this->validator->validate(['Комментарий для пользователя' => [$request->get('comment_for_user'), 'max(255)'], 'Статус ВКС' => [$request->get('status'), 'required|between(1,2)']]); //if no passes if (!$this->validator->passes()) { $this->backWithData($this->validator->errors()->all()); } /* * if declined */ if ($request->get('status') == VKS::APPROVE_STATUS_DECLINED) { $backMessage = "<p>Вкс #{$vks->id}, отказ в проведении</p>"; $vks->comment_for_user = $request->get('comment_for_user'); $vks->status = $request->get('status'); $vks->approved_by = App::$instance->user->id; $vks->save(); //delete related VKS in CA if ($vks->other_tb_required && $vks->link_ca_vks_type == 1 && isset($vks->link_ca_vks_id)) { $caVks = CAVksNoSupport::find($vks->link_ca_vks_id); if ($caVks->status == VKS_STATUS_TRANSPORT_FOR_TB) { App::$instance->log->logWrite(LOG_OTHER_EVENTS, "Транспортная ВКС " . $caVks->id . " удалена"); $backMessage .= "<p>Транспортная ВКС " . $caVks->id . " удалена</p>"; $caVks->delete(); } } $vks = Vks::full()->find($vks->id); $this->humanize($vks); App::$instance->callService('vks_report_builder')->sendDeclineMail($vks, false); //revoke all outlook requests requests OutlookCalendarRequest_controller::changeRequestTypeAndPutToResend($vks->id, OutlookCalendarRequest::REQUEST_TYPE_DELETE); if (count($vks->tech_support_requests)) { foreach ($vks->tech_support_requests as $request) { if ($request->status == TechSupportRequest::STATUS_WAIT_VKS_DECISION) { $request->status = TechSupportRequest::STATUS_VKS_REFUSED; $request->save(); } } } App::$instance->MQ->setMessage($backMessage); ST::redirect(ST::route("Vks/notApproved")); } if (!$request->has('no-codes') && !count($request->get('code'))) { $this->error('500', 'bad params combined'); } /* * if no codes * */ if ($request->has('no-codes')) { $backMessage = "<p>Вкс #{$vks->id} согласована без кода подключения</p>"; //delete old $oldCodes = ConnectionCode::where('vks_id', $vks->id)->get(); if (count($oldCodes)) { foreach ($oldCodes as $oldCode) { $oldCode->delete(); } } $vks->comment_for_user = $request->get('comment_for_user'); $vks->status = $request->get('status'); $vks->flag = $request->get('flag') ? 1 : 0; //set admin id $vks->approved_by = App::$instance->user->id; $vks->save(); //vks ca process $transportVksMessage = App::$instance->callService('vks_ca_negotiator')->transportVksProcessor($this->request, $vks); if ($transportVksMessage->getStatusCode() != Response::HTTP_OK) { $this->backWithData($transportVksMessage->getContent()); } $vks = Vks::full()->find($vks->id); $this->humanize($vks); App::$instance->callService('vks_report_builder')->sendReportMail($vks, false); App::$instance->MQ->setMessage($backMessage . $transportVksMessage->getContent()); ST::redirect(ST::route("Vks/notApproved")); } /* * standart process */ //validate codes if (!count($request->get('code'))) { $this->error('500', 'no code was passed, error!'); } foreach ($request->get('code') as $code) { $this->validator->validate(['Префикс' => [$code['prefix'], 'required|max(160)'], 'Постфикс' => [$code['postfix'], 'required|max(4)'], 'Подсказка' => [$code['tip'], 'max(255)']]); //if no passes if (!$this->validator->passes()) { $this->backWithData($this->validator->errors()->all()); } } Capsule::beginTransaction(); $oldCodes = ConnectionCode::where('vks_id', $vks->id)->get(); if (count($oldCodes)) { foreach ($oldCodes as $oldCode) { $oldCode->delete(); } } foreach ($request->get('code') as $code) { $compiledCode = $code['prefix'] . $code['postfix']; if ($request->has('no-check')) { $checkVks = false; } else { $checkVks = $connCtrl->isCodeInUse($code['postfix'], $vks->start_date_time, $vks->end_date_time); } if ($checkVks) { App::$instance->MQ->setMessage('Ошибка: Код ' . $code['postfix'] . ' уже используется в ' . ST::linkToVksPage($checkVks->id), 'danger'); ST::redirect("back"); } else { $newCodes[] = ConnectionCode::create(['vks_id' => $vks->id, 'value' => $compiledCode, 'tip' => $code['tip']]); } } $vks->comment_for_user = $request->get('comment_for_user'); $vks->status = $request->get('status'); $vks->flag = $request->get('flag') ? 1 : 0; //set admin id $vks->approved_by = App::$instance->user->id; $vks->save(); //vks ca process $transportVksMessage = App::$instance->callService('vks_ca_negotiator')->transportVksProcessor($this->request, $vks); if ($transportVksMessage->getStatusCode() != Response::HTTP_OK) { $this->backWithData($transportVksMessage->getContent()); } Capsule::commit(); //now send mails //send mail to user, if it not anon user if ($vks->status == VKS_STATUS_APPROVED) { $vks = Vks::full()->find($vks->id); $this->humanize($vks); App::$instance->callService('vks_report_builder')->sendReportMail($vks, false); //revoke all outlook requests requests OutlookCalendarRequest_controller::changeRequestTypeAndPutToResend($vks->id, OutlookCalendarRequest::REQUEST_TYPE_UPDATE); } if ($vks->status == VKS_STATUS_APPROVED) { App::$instance->MQ->setMessage("<p>ВКС {$vks->id} согласована </p>" . $transportVksMessage->getContent()); if (count($vks->tech_support_requests)) { foreach ($vks->tech_support_requests as $request) { if ($request->status == TechSupportRequest::STATUS_WAIT_VKS_DECISION) { $request->status = TechSupportRequest::STATUS_READY_FOR_SEND; $request->save(); } } } } else { App::$instance->MQ->setMessage("Отказ по ВКС {$vks->id}"); if (count($vks->tech_support_requests)) { foreach ($vks->tech_support_requests as $request) { if ($request->status == TechSupportRequest::STATUS_WAIT_VKS_DECISION) { $request->status = TechSupportRequest::STATUS_VKS_REFUSED; $request->save(); } } } } ST::redirect(ST::route("Vks/notApproved")); }