} } } $events = array_merge($events, $CaEvents); //dump($events); if (count($events)) { foreach ($events as $event) { if ($event['start_date_time']->getTimestamp() - $now->getTimestamp() <= 1200) { if (isset($event['fromCa'])) { NoticeObs_controller::put("Внимание! до начала важной ВКС в ЦА " . ST::linkToCaVksPage($event['id']) . " осталось менее 20 минут, старт в " . date_create($event['start_date_time'])->format("H:i"), 1); } else { $text = ''; if ($event['flag']) { $text .= 'важной'; } if ($event['record_required']) { if (strlen($text) > 0) { $text .= ', '; } $text .= ' требующей видеозаписи '; } NoticeObs_controller::put("Внимание! до начала {$text} ВКС " . ST::linkToVksPage($event['id']) . " осталось менее 20 минут, старт в " . $event['start_date_time']->format("H:i"), 1); } // } } } } //find Vks with flag and start in 20 mins today //end schedule here //-----------------------------------------------------------------------------
public function saveRegularVks(Request $request, $silent = false) { //if error occure, save stopped $request = $request->request; $report = new VksReport($request); Capsule::beginTransaction(); $this->validator->validate(['Дата' => [$request->get('date'), 'required|date'], 'Время начала' => [$request->get('start_time'), 'required'], 'Время окончания' => [$request->get('end_time'), 'required'], 'Название' => [$request->get('title'), 'required|max(205)'], 'Код в ЦА' => [$request->get('title'), 'max(40)'], 'ФИО ответственного' => [$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'], 'Участники в ЦА' => [$request->get('ca_participants'), 'int|between(0,10)'], 'Участники ВКС' => [$request->get('inner_participants'), 'array'], 'Комментарий для Администратора' => [$request->get('comment_for_admin'), 'max(255)'], 'Точка для технической поддержки' => [$request->get('tech_support_att_id'), "int|attendance_is_tech_supportable"], 'Комментарий для Тех. поддержки' => [$request->get('user_message'), 'max(255)']]); //if no passes //any participants required if (!$request->get('needTB')) { if (!intval($request->get('in_place_participants_count')) && !count($request->get('inner_participants'))) { $this->backWithData('Вы не выбрали внутренних участников (в вашем ТБ) для ВКС'); } if (intval($request->get('in_place_participants_count') == 0 && count($request->get('inner_participants')) == 1)) { $this->backWithData('Выбран только один участник для ВКС'); } if (intval($request->get('in_place_participants_count')) == 1 && !count($request->get('inner_participants'))) { $this->backWithData('Выбран только один участник для ВКС'); } } //create new entity $vks = new Vks(); if (!$request->get('ca_code')) { $request->set('ca_code', Null); } $vks->fill($request->all()); $vks->is_private = $request->has('is_private') ? 1 : 0; $vks->other_tb_required = $request->get('needTB') ? 1 : 0; $vks->record_required = $request->has('record_required') ? 1 : 0; $vks->start_date_time = $request->get('date') . " " . $request->get('start_time'); $vks->end_date_time = $request->get('date') . " " . $request->get('end_time'); $this->timeBarrier($vks); $vks->comment_for_admin = $request->get('comment_for_admin'); $vks->owner_id = App::$instance->user->id; $vks->from_ip = App::$instance->user->ip; $vks->save(); //relation models $message = "Пользователь " . App::$instance->user->login . " создал ВКС " . ST::linkToVksPage($vks->id); if ($request->get('needTB')) { App::$instance->callService('vks_ca_negotiator')->fillRequestWithInputData($this->request); App::$instance->callService('vks_ca_negotiator')->validateCaParticipants($this->request, $this); App::$instance->callService('vks_ca_negotiator')->fillRelationEntity($this->request, $vks); if (strlen($request->get('i_know_ca_code'))) { $vks->title = $vks->title . " |&* код в ЦА: " . $request->get('i_know_ca_code'); $vks->save(); } $message .= ", и запрашивает участие других ТБ или ЦА"; } 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)); } //parse inner participants //check if vks not in past time if (!Auth::isAdmin(App::$instance)) { if (self::isVksInPastTime($vks)) { $report->setErrors(['ВКС не может быть проведена в прошлом']); $report->setResult(false); return $report; } } //create participants $this->createInnerOrPhoneParp($request->get('inner_participants'), $vks); NoticeObs_controller::put($message); if ($silent) { $report->setResult(true); $report->setObject($vks); } else { App::$instance->MQ->setImportantMessage("Ваша ВКС #{$vks->id} успешно создана, ожидайте согласования администратором, после согласования информация о подключении будет направлена на вашу электронную почту (" . App::$instance->user->login . ")"); } App::$instance->log->logWrite(LOG_VKSWS_CREATED, "VKS " . ST::linkToVksPage($vks->id) . " Created"); Capsule::commit(); //if admins must be notified if (boolval(intval(Settings_controller::getOther('notify_admins')))) { $vks = Vks::full()->find($vks->id); $this->humanize($vks); App::$instance->callService('vks_report_builder')->sendAdminNotice($vks); } if ($silent) { return $report; } else { return true; } }