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 []; }
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; }
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; }