/** * [populateSchedules description] * @param [type] $reseller_id [description] * @param integer $days [description] * @return [type] [description] */ function populateSchedules($reseller_id = null, $days = 30) { set_time_limit(0); $q = Model::Optionsrestaurant(); if ($reseller_id) { $q->where(['reseller_id', '=', (int) $reseller_id]); } $restos = $q->cursor(); $start = lib('time')->createFromTimestamp((int) time()); $min = (int) $start->startOfDay()->getTimestamp(); $max = $start->addDays($days)->getTimestamp(); foreach ($restos as $resto) { $reseller_id = isAke($resto, 'reseller_id', false); if (false !== $reseller_id) { $schedules = $this->getOpenSchedules((int) $reseller_id); for ($i = $min; $i <= $max; $i += 24 * 3600) { $when = lib('time')->createFromTimestamp((int) $i); $midnight = (int) $when->startOfDay()->getTimestamp(); $day = (string) $when->frenchDay(); $schedulesDay = isAke($schedules, $day, []); $fermeMidi = false; $fermeSoir = false; if (!empty($schedulesDay)) { if (!strlen($schedulesDay['am_start']) && !strlen($schedulesDay['pm_end'])) { continue; } if (strlen($schedulesDay['am_start']) && !strlen($schedulesDay['am_end'])) { $schedulesDay['am_end'] = '12_00'; } if (strlen($schedulesDay['pm_end']) && !strlen($schedulesDay['pm_start'])) { $schedulesDay['pm_start'] = '12_00'; } if (!strlen($schedulesDay['am_start']) && !strlen($schedulesDay['am_end'])) { $fermeMidi = true; } if (!strlen($schedulesDay['pm_start']) && !strlen($schedulesDay['pm_end'])) { $fermeSoir = true; } if (strlen($schedulesDay['am_start'])) { $amStart = lib('agenda')->transform((string) $schedulesDay['am_start'], (int) $midnight); } if (strlen($schedulesDay['am_end'])) { $amEnd = lib('agenda')->transform((string) $schedulesDay['am_end'], (int) $midnight); } if (strlen($schedulesDay['pm_start'])) { $pmStart = lib('agenda')->transform((string) $schedulesDay['pm_start'], (int) $midnight); } if (strlen($schedulesDay['pm_end'])) { $pmEnd = lib('agenda')->transform((string) $schedulesDay['pm_end'], (int) $midnight); } $initialStockMidi = isAke($resto, 'nombre_places_stock_' . $day . '_midi', 0); $initialStockSoir = isAke($resto, 'nombre_places_stock_' . $day . '_soir', 0); if ($initialStockMidi > 0 && !$fermeMidi) { $dbStock = Model::Stockrestaurant()->firstOrCreate(['reseller_id' => (int) $reseller_id, 'day' => date('Y-m-d', $midnight), 'service' => 1]); $stockDb = $dbStock->stock; if (!$stockDb) { $dbStock->stock = (int) $initialStockMidi; $dbStock->save(); } } if ($initialStockSoir > 0 && !$fermeSoir) { $dbStock = Model::Stockrestaurant()->firstOrCreate(['reseller_id' => (int) $reseller_id, 'day' => date('Y-m-d', $midnight), 'service' => 2]); $stockDb = $dbStock->stock; if (!$stockDb) { $dbStock->stock = (int) $initialStockSoir; $dbStock->save(); } } } } } } Model::Cronrunning()->firstOrCreate(['task' => 'makeRestoStock'])->setRunning(0)->save(); }