public function transportVksProcessor(Request $request, Vks $vks) { $ca_pool_codes = App::$instance->callService("vks_ca_negotiator")->askForPool(); // die(dump($request)); //if flag no create set return false if (!count($ca_pool_codes)) { App::$instance->callService('standart_controller')->backWithData('Пул из ЦА не удалось получить'); } if ($request->get('ca_transport_no_create') || !$vks->other_tb_required || $vks->status != VKS_STATUS_APPROVED) { return new Response('Создание транспортной ВКС не запрошено', Response::HTTP_OK); } //check if received code if (!$request->get('ca_transport_code') || !strlen($request->get('ca_transport_code'))) { App::$instance->callService('standart_controller')->backWithData('Запрашивается выдача кода из ЦА, но значение не передано'); } //check if code from pool if (!in_array($request->get('ca_transport_code'), $ca_pool_codes)) { App::$instance->callService('standart_controller')->backWithData('Запрашиваемый код вне пула ТБ'); } //check if code can be given $currentVksStart = $vks->start_date_time; $currentVksEnd = $vks->end_date_time; $ca_transport_vkses = App::$instance->callService("vks_ca_negotiator")->aksTransportVksInPeriod($currentVksStart, $currentVksEnd, $ca_pool_codes); $codesFiltrated = array(); foreach ($ca_pool_codes as $code) { $codesFiltrated[$code] = array(); if (count($ca_transport_vkses)) { foreach ($ca_transport_vkses as $ca_tr_vks) { if ($code == $ca_tr_vks->v_room_num) { $codesFiltrated[$code][] = $ca_tr_vks; } } } } if (isset($codesFiltrated[$request->get('ca_transport_code')]) && count($codesFiltrated[$request->get('ca_transport_code')])) { return new Response('Запрашиваемый код уже выдан и не может быть использован повторно', Response::HTTP_INTERNAL_SERVER_ERROR); } else { //create CA Object and send it $transportCaVks = new CaTransportVks(); $transportCaVks->setTitle($vks->title); $transportCaVks->setDate($vks->date); $transportCaVks->setStartTime($vks->start_date_time); $transportCaVks->setEndTime($vks->end_date_time); $transportCaVks->setLocation(MY_NODE); $transportCaVks->setCaParticipants($vks->CaInPlaceParticipantCount->participants_count); $transportCaVks->setParticipants($vks->compileCaTransportIdsParticipants()); $transportCaVks->setTb(MY_NODE); $transportCaVks->setIp(App::$instance->user->ip); $transportCaVks->setVRoomNum($request->get('ca_transport_code')); $transportCaVks->setOwnerId(App::$instance->user->id); $transportVks = App::$instance->callService("vks_ca_negotiator")->createTransitVksOnCA($transportCaVks); if (isset($transportVks->id)) { $vks->link_ca_vks_type = VKS_NS; $vks->link_ca_vks_id = $transportVks->id; $vks->save(); return new Response("<p>Транспортная ВКС #" . $transportVks->id . " в ЦА, успешно создана</p>", Response::HTTP_OK); } else { // dump($transportVks); // die; return new Response("<p>Транспортная ВКС не может быть создана из-за ошибки: " . $transportVks . "</p>", Response::HTTP_INTERNAL_SERVER_ERROR); } } }
public function joinCaStore($referral) { $request = $this->request->request; $this->fillParticipants("vks_participants_create", $this->request); $report = new VksReport($request); $this->validator->validate(['ФИО ответственного' => [$request->get('init_customer_fio'), 'required|max(255)'], 'Почта ответственного' => [$request->get('init_customer_mail'), 'required|max(255)'], 'Тел. ответственного' => [$request->get('init_customer_phone'), 'required|max(255)'], 'Подразделение' => [$request->get('department'), 'required|int'], 'Кол-во участников с рабочих мест (IP телефоны)' => [$request->get('in_place_participants_count'), 'int'], 'Участники ВКС' => [$request->get('inner_participants'), 'array'], 'Точка для технической поддержки' => [$request->get('tech_support_att_id'), "int|attendance_is_tech_supportable"], 'Комментарий для Тех. поддержки' => [$request->get('user_message'), 'max(255)'], 'Комментарий для Администратора' => [$request->get('comment_for_admin'), 'max(255)']]); //if no passes if (!$this->validator->passes()) { $this->backWithData($this->validator->errors()->all()); } //any participants required if (!intval($request->get('in_place_participants_count')) && !count($request->get('inner_participants'))) { $this->backWithData('Вы не выбрали участников для ВКС'); } Capsule::beginTransaction(); $caWS = CAVks::where('referral', $referral)->with('connection_codes')->first(); $caNS = CAVksNoSupport::where('referral', $referral)->first(); if (!$caWS && !$caNS) { $this->backWithData("Приглашение {$request->get('referrer')} не действительно"); } $caVKSType = $caWS ? VKS_WAS : VKS_NS; $caVks = $caWS ? $caWS : $caNS; $this->convertToLocalTime($caVks); $vks = new Vks(); $vks->is_private = $request->has('is_private') ? 1 : 0; $vks->record_required = $request->has('record_required') ? 1 : 0; $vks->title = $caVks->title; $vks->date = $caVks->local->start_date_time->format("Y-m-d"); $vks->start_date_time = $caVks->local->start_date_time; $vks->end_date_time = $caVks->local->end_date_time; $vks->presentation = isset($caVks->presentation) ? $caVks->presentation : 0; $vks->department = $request->get('department'); $vks->initiator = 1; //always CA $vks->init_customer_fio = $request->get('init_customer_fio'); $vks->init_customer_phone = $request->get('init_customer_phone'); $vks->init_customer_mail = $request->get('init_customer_mail'); $vks->comment_for_admin = $request->get('comment_for_admin'); $vks->link_ca_vks_id = $caVks->id; $vks->link_ca_vks_type = $caVKSType; $vks->owner_id = App::$instance->user->id; $vks->from_ip = App::$instance->user->ip; $vks->ca_code = isset($caVks->connectionCode->value) ? $caVks->connectionCode->value : $caVks->v_room_num; $vks->in_place_participants_count = $request->get('in_place_participants_count'); // die(dump($vks)); $vks->save(); if ($request->get('tech_support_required')) { TechSupportRequest::create(array('att_id' => $request->get('tech_support_att_id'), 'vks_id' => $vks->id, 'owner_id' => App::$instance->user->id, 'user_message' => $request->get('user_message'), 'status' => TechSupportRequest::STATUS_WAIT_VKS_DECISION)); } if (!Auth::isAdmin(App::$instance)) { if (self::isVksInPastTime($vks)) { throw new LogicException('bad vks date, it on past time'); } } //create participants $this->createInnerOrPhoneParp($request->get('inner_participants'), $vks); App::$instance->log->logWrite(LOG_VKSWS_CREATED, "VKS " . ST::linkToVksPage($vks->id) . " Created"); Capsule::commit(); //refill for report $this->request->request->set("date", $vks->date->format("d.m.Y")); $this->request->request->set("start_time", $vks->start_date_time->format("H:i")); $this->request->request->set("end_time", $vks->end_date_time->format("H:i")); $report->setObject($vks); $report->setResult(true); $result[] = $report; $_SESSION['savedResult_' . App::$instance->main->appkey] = $result; ST::redirectToRoute('vks/checkout'); }