Example #1
0
            }
        }
    }
    $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;
     }
 }