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); } } }