Example #1
0
 /**
  * [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();
 }