public function isCodeInUse($code, $period_start, $period_end, $force_no_ajax = false)
 {
     $use = false;
     $period_start = $period_start instanceof DateTime ? $period_start : date_create($period_start);
     $period_end = $period_end instanceof DateTime ? $period_end : date_create($period_end);
     //        dump($period_start, $period_end);
     $vc = new Vks_controller();
     //how much digits in num
     $digits = strlen((string) $code);
     $vkses = Vks::with('connection_codes')->where('start_date_time', '<=', $period_end->modify("+" . Settings_controller::getOther('pause_gap') . " minutes"))->where('end_date_time', '>=', $period_start->modify("-" . Settings_controller::getOther('pause_gap') . " minutes"))->approved()->get(['id', 'title', 'start_date_time', 'end_date_time', 'date']);
     //        dump($vkses);
     foreach ($vkses as $vks) {
         if (count($vks->connection_codes)) {
             foreach ($vks->connection_codes as $vcode) {
                 if (substr($vcode->value, -$digits) == $code) {
                     $vks = $vc->humanize($vks);
                     $use = $vks;
                     break;
                 }
             }
         }
     }
     if ($force_no_ajax) {
         return $use;
     }
     //        ST::makeDebug($use);
     if (ST::isAjaxRequest()) {
         if ($use) {
             $use = $use->toJson();
         }
         print json_encode($use);
     } else {
         return $use;
     }
 }
 public function apiSearchFastTree($phrase, $except = [], $dateTimeforCheck = [])
 {
     if (!is_array($except) && strlen($except) > 0) {
         $except = explode(",", $except);
     }
     if (!is_array($except) && strlen($except) > 0) {
         $except = explode(",", $except);
     }
     $strict_option = intval(Settings_controller::getOther('attendance_strict'));
     $result = [];
     $points = Attendance::where("name", "like", "%" . $phrase . "%")->where('active', 1)->whereNotIn("id", $except)->take(500)->get();
     foreach ($points as $point) {
         $point->free = true;
         $point->selectable = true;
         $point->path = $this->makePathString($this->fullParentInfo($point->id));
         if ($point->container) {
             $result['containers'][] = $point;
         } else {
             if ($point->check) {
                 if (count($dateTimeforCheck)) {
                     foreach ($dateTimeforCheck as $dateTimeArr) {
                         $start = date_create($dateTimeArr['date'] . " " . $dateTimeArr['start_time']);
                         $end = date_create($dateTimeArr['date'] . " " . $dateTimeArr['end_time']);
                         //                            dump($point->id, $start, $end);
                         $check = $this->isFree($point->id, $start, $end);
                         //                            die;
                         if (!$check) {
                             $point->free = false;
                             if ($strict_option) {
                                 if (!Auth::isAdmin(App::$instance)) {
                                     $point->selectable = false;
                                 }
                             }
                             break;
                         }
                     }
                 }
             }
             $result['points'][] = $point;
         }
     }
     print json_encode($result);
 }
Exemplo n.º 3
0
 public function giveSimpleCode(DateTime $vksStart, DateTime $vksEnd)
 {
     //pull data from request
     $settings = new Settings_controller();
     $params = $settings->getSimpleVksCodeParams();
     $codeRange = range(floatval($params->code['start']), floatval($params->code['end']));
     $codeGiven = false;
     foreach ($codeRange as $code) {
         $foundedCodes = ConnectionCode::where('value', (string) $code)->with(['vks' => function ($query) use($vksStart, $vksEnd) {
             $query->where('is_simple', 1)->where('start_date_time', '<=', $vksEnd->modify("+" . Settings_controller::getOther('pause_gap') . " minutes"))->where('end_date_time', '>=', $vksStart->modify("-" . Settings_controller::getOther('pause_gap') . " minutes"))->where('status', VKS_STATUS_APPROVED);
         }])->get();
         $isFree = true;
         foreach ($foundedCodes as $codeObj) {
             if ($codeObj->vks) {
                 $isFree = false;
             }
         }
         if ($isFree) {
             $codeGiven = $code;
             break;
         }
     }
     return $codeGiven;
 }
Exemplo n.º 4
0
 function showNaVks($id)
 {
     $versionCtrl = new VksVersion_controller();
     $load = new Load_controller();
     $sc = new Settings_controller();
     try {
         $vks = Vks::NotSimple()->full()->findOrFail($id);
     } catch (Exception $e) {
         $this->error('404', $e->getMessage());
     }
     $vks = $this->humanize($vks);
     $att = new AttendanceNew_controller();
     $check = boolval(intval(Settings_controller::getOther("attendance_check_enable")));
     foreach ($vks->participants as $parp) {
         if ($check) {
             $parp->free = $att->isFree($parp->id, $vks->start_date_time, $vks->end_date_time, [$vks->id]);
         } else {
             $parp->free = true;
         }
     }
     if (!self::isVksCanBeApproved($vks)) {
         $this->error('500', 'Открыть экран согласования по этой ВКС невозможно, переведите эту ВКС в статус "на согласовании" и попробуйте еще раз');
     }
     $vks->isPassebByCapacity = $load->isPassedByCapacity($vks->start_date_time, $vks->end_date_time, $this->countParticipants($vks->id), 0);
     $caVks = Null;
     if ($vks->link_ca_vks_id) {
         if ($vks->link_ca_vks_type == 0) {
             $caVks = Curl::get(ST::routeToCaApi('getVksWasById/' . $vks->link_ca_vks_id));
         } else {
             $caVks = Curl::get(ST::routeToCaApi('getVksNsById/' . $vks->link_ca_vks_id));
         }
         $caVks = json_decode($caVks);
         if ($caVks->status == 200) {
             $caVks = $caVks->data;
         } else {
             $caVks = Null;
         }
     }
     $codes = $sc->getCodeDelivery(true);
     $versions = $versionCtrl->getVersionsList($vks->id);
     $last_version = null;
     if (count($versions)) {
         $last_version = $versionCtrl->pullVersion($vks->id, $versionCtrl->findLastVersion($vks->id));
     }
     if ($vks->stack) {
         foreach ($vks->stack->vkses as $stVks) {
             $this->humanize($stVks);
             $stVks->connection_codes = $stVks->connection_codes()->get();
         }
     }
     if ($vks->other_tb_required) {
         $vks->CaInPlaceParticipantCount;
         $vks->CaIdParticipants;
     }
     $codesFiltrated = array();
     $ca_pool_codes = App::$instance->callService("vks_ca_negotiator")->askForPool();
     $currentVksStart = clone $vks->start_date_time;
     $currentVksEnd = clone $vks->end_date_time;
     if (count($ca_pool_codes)) {
         $ca_transport_vkses = App::$instance->callService("vks_ca_negotiator")->aksTransportVksInPeriod($currentVksStart, $currentVksEnd, $ca_pool_codes);
         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;
                     }
                 }
             }
         }
     }
     $graph = $load->pullLoadDataForJs($vks->humanized->date);
     $this->render('vksSubmissions/approvePage', compact('vks', 'graphUrl', 'caVks', 'versions', 'codes', 'last_version', 'graph', 'codesFiltrated'));
 }