Example #1
0
 public function getOptionsMacroData($segment_id)
 {
     $user = session('user')->getUser();
     $segment = Model::Segment()->find((int) $segment_id);
     if ($segment) {
         if (Inflector::lower($segment->name) == 'restaurant') {
             return $this->getOptionsMacroDataResto($segment, $user);
         }
     }
     if ($user) {
         if (Arrays::is($user)) {
             if (!is_integer($segment_id)) {
                 return [];
             }
             if (!isset($user['employee'])) {
                 return false;
             }
             if (!isset($user['settings'])) {
                 return false;
             }
             if (!isset($user['settings']['employee_index'])) {
                 return false;
             }
             if (!isset($user['employee'][$user['settings']['employee_index']])) {
                 return false;
             }
             // if (!isset($user['employee'][$user['settings']['employee_index']]['id'])) {
             //     return false;
             // }
             if (!isset($user['employee'][$user['settings']['employee_index']]['reseller_id'])) {
                 return false;
             }
             // $reselleremployee_id    = $user['employee'][$user['settings']['employee_index']]['id'];
             $reseller_id = $user['employee'][$user['settings']['employee_index']]['reseller_id'];
             $reseller = Model::Reseller()->find((int) $reseller_id);
             // $reselleremployee = Model::Reselleremployee()->find((int) $reselleremployee_id);
             if ($reseller) {
                 // if ($reseller && $reselleremployee) {
                 if (is_integer($segment_id)) {
                     if ($segment) {
                         $form = $this->getOptionsFromMarket((int) $segment_id);
                         $returnForm = [];
                         if (!empty($form)) {
                             if (isset($form['offres_devis'])) {
                                 $offres_devis = lib('option')->get('offres.devis.' . $segment_id, $reseller, 1);
                                 if (is_bool($offres_devis)) {
                                     $offres_devis = true === $offres_devis ? 1 : 0;
                                 } elseif (empty($offres_devis)) {
                                     $offres_devis = 0;
                                 }
                                 $returnForm['offres_devis'] = $offres_devis;
                             }
                             if (isset($form['agenda_partage'])) {
                                 $agenda_partage = lib('option')->get('agenda.partage.' . $segment_id, $reseller, 1);
                                 if (is_bool($agenda_partage)) {
                                     $agenda_partage = true === $agenda_partage ? 1 : 0;
                                 } elseif (empty($agenda_partage)) {
                                     $agenda_partage = 0;
                                 }
                                 $returnForm['agenda_partage'] = $agenda_partage;
                             }
                             if (isset($form['delai_intervention'])) {
                                 $delai_intervention = lib('option')->get('delai.intervention.' . $segment_id, $reseller, 0);
                                 $returnForm['delai_intervention'] = $delai_intervention;
                             }
                             if (isset($form['montant_intervention'])) {
                                 $montant_intervention = lib('option')->get('montant.intervention.' . $segment_id, $reseller, 0);
                                 $returnForm['montant_intervention'] = $montant_intervention;
                             }
                             if (isset($form['zone_intervention'])) {
                                 $zone_intervention = lib('option')->get('zone.intervention.' . $segment_id, $reseller, 0);
                                 $returnForm['zone_intervention'] = $zone_intervention;
                             }
                             if (isset($form['langue'])) {
                                 if (isset($form['langue']['values'])) {
                                     $langues = Arrays::get($form, 'langue.values', []);
                                     foreach ($langues as $ind => $key) {
                                         $val = lib('option')->get('langue.' . $segment_id . '.' . $key, $reseller, false);
                                         if (is_bool($val)) {
                                             $val = true === $val ? 1 : 0;
                                         } elseif (empty($val)) {
                                             $val = 0;
                                         }
                                         $returnForm['langue_' . $ind] = $val;
                                     }
                                 }
                             }
                             if (isset($form['agenda_horaires'])) {
                                 $days = ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'];
                                 foreach ($days as $day) {
                                     $index_am_start = str_replace('##day##', $day, 'agenda_horaires_##day##_am_start');
                                     $index_am_end = str_replace('##day##', $day, 'agenda_horaires_##day##_am_end');
                                     $index_pm_start = str_replace('##day##', $day, 'agenda_horaires_##day##_pm_start');
                                     $index_pm_end = str_replace('##day##', $day, 'agenda_horaires_##day##_pm_end');
                                     $schedule = Model::Schedule()->where(['day', '=', (string) $day])->where(['reseller_id', '=', (int) $reseller->id])->first(true);
                                     if ($schedule) {
                                         $am_start = $schedule->am_start;
                                         $am_end = $schedule->am_end;
                                         $pm_start = $schedule->pm_start;
                                         $pm_end = $schedule->pm_end;
                                         if ($am_start) {
                                             if ('ferme' == $am_start) {
                                                 $returnForm[$index_am_start] = '';
                                             } else {
                                                 $returnForm[$index_am_start] = str_replace('_', ':', $am_start);
                                             }
                                         } else {
                                             $returnForm[$index_am_start] = '';
                                         }
                                         if ($am_end) {
                                             if ('ferme' == $am_end) {
                                                 $returnForm[$index_am_end] = '';
                                             } else {
                                                 $returnForm[$index_am_end] = str_replace('_', ':', $am_end);
                                             }
                                         } else {
                                             $returnForm[$index_am_end] = '';
                                         }
                                         if ($pm_start) {
                                             if ('ferme' == $pm_start) {
                                                 $returnForm[$index_pm_start] = '';
                                             } else {
                                                 $returnForm[$index_pm_start] = str_replace('_', ':', $pm_start);
                                             }
                                         } else {
                                             $returnForm[$index_pm_start] = '';
                                         }
                                         if ($pm_end) {
                                             if ('ferme' == $pm_end) {
                                                 $returnForm[$index_pm_end] = '';
                                             } else {
                                                 $returnForm[$index_pm_end] = str_replace('_', ':', str_replace('23_59', '00_00', $pm_end));
                                             }
                                         } else {
                                             $returnForm[$index_pm_end] = '';
                                         }
                                     } else {
                                         if ($day == 'dimanche' || $day == 'samedi') {
                                             $returnForm[$index_am_start] = '';
                                             $returnForm[$index_am_end] = '';
                                             $returnForm[$index_pm_start] = '';
                                             $returnForm[$index_pm_end] = '';
                                         } else {
                                             $returnForm[$index_am_start] = '8:00';
                                             $returnForm[$index_am_end] = '12:00';
                                             $returnForm[$index_pm_start] = '14:00';
                                             $returnForm[$index_pm_end] = '18:00';
                                         }
                                     }
                                 }
                             }
                         }
                         return $returnForm;
                     }
                 }
             }
         }
     }
     return [];
 }
Example #2
0
 public function getEmployeesCan($start, $end, $reseller_id)
 {
     if (!is_integer($start) || !is_integer($end) || !is_integer($reseller_id)) {
         throw new Exception('All arguments of this method must be of type integer');
     }
     if ($end < $start) {
         throw new Exception('End must be greater than start.');
     }
     $collection = [];
     $date = lib('time')->createFromTimestamp((int) $start);
     $midnight = (int) $date->startOfDay()->getTimestamp();
     $day = (string) $date->frenchDay();
     $row = Model::Schedule()->where(['day', '=', (string) $day])->where(['reseller_id', '=', (int) $reseller_id])->first(true);
     $reseller = Model::findOrFail((int) $reseller_id);
     if ($row) {
         $amStart = lib('agenda')->transform((string) $row->am_start, (int) $midnight);
         $amEnd = lib('agenda')->transform((string) $row->am_end, (int) $midnight);
         $pmStart = lib('agenda')->transform((string) $row->pm_start, (int) $midnight);
         $pmEnd = lib('agenda')->transform((string) $row->pm_end, (int) $midnight);
         $continue = true;
         if ($start > $pmEnd) {
             $continue = false;
         } elseif ($start > $amEnd && $start < $pmStart) {
             $continue = false;
         } elseif ($start < $amStart) {
             $continue = false;
         }
         if (true === $continue) {
             if ($end > $pmEnd) {
                 $continue = false;
             } elseif ($end > $amEnd && $end < $pmStart) {
                 $continue = false;
             }
         }
         if (true === $continue) {
             $employees = Model::Reselleremployee()->where(['reseller_id', '=', (int) $reseller_id])->cursor();
             foreach ($employees as $employee) {
                 $hasAppointment = lib('agenda')->hasAppointments((int) $start, (int) $end, (int) $employee['id']);
                 $hasVacations = lib('agenda')->hasVacations((int) $start, (int) $end, (int) $employee['id']);
                 if (false === $hasAppointment && false === $hasVacations) {
                     $collection[] = (int) $employee['id'];
                 }
             }
         }
     }
     return $collection;
 }
Example #3
0
 public function delSchedule($reseller_id, $day)
 {
     if (!is_integer($reseller_id)) {
         throw new Exception("reseller_id must be an integer id.");
     }
     $schedule = Model::Schedule()->where(['reseller_id', '=', (int) $reseller_id])->where(['day', '=', (string) $day])->first(true);
     if ($schedule) {
         $pivots = $schedule->pivots(Model::Availability()->model())->exec(true);
         if (!empty($pivots)) {
             foreach ($pivots as $pivot) {
                 $availability = $pivot->availability();
                 if ($availability) {
                     $availability->detach($schedule);
                     $availability->delete();
                 }
             }
         }
         $schedule->delete();
         return true;
     }
     return false;
 }