public function showSimpleCodes($date) { $date = date_create($date); $sc = new Settings_controller(); $codes = $sc->getSimpleVksCodeParams(); $codeRange = range(floatval($codes->code['start']), floatval($codes->code['end'])); $rangeStringed = []; foreach ($codeRange as $code) { $rangeStringed[] = (string) $code; } if (count($rangeStringed)) { $vkses = Vks::simple()->where('date', $date)->with(['connection_codes' => function ($query) use($rangeStringed) { $query->whereIn('value', $rangeStringed); }])->get(); $collected = []; foreach ($rangeStringed as $code) { $collected[$code] = []; foreach ($vkses as $vks) { foreach ($vks->connection_codes as $code_vk) { $code_vk->value == $code ? $collected[$code][] = $vks : false; } } } $date = $date->format('d.m.Y'); $this->render('Dashboards/showSimpleCodes', compact('collected', 'date')); } else { die('range is corrupted'); } }
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; }