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