Example #1
0
 public function fiche($reseller_id)
 {
     $user = session('user')->getUser();
     if (!$user) {
         $user = [];
     }
     $account_id = (int) isAke($user, 'id', 23);
     $fiche = Model::Restodata()->where(['reseller_id', '=', (int) $reseller_id])->first(true);
     /* c'est un restaurateur */
     if ($fiche) {
         $row = $fiche->toArray();
         $data = [];
         $options = $row['options'];
         $preferences_client_paiement_titre = isAke($options, 'preferences_client_paiement_titre', false);
         $data['paiement_cheque_montant_max'] = isAke($options, 'preferences_client_paiement_cheque_montant_max', 0);
         $data['paiement_carte'] = isAke($options, 'preferences_client_paiement_carte', -1);
         $data['paiement_titre_rendu_monnaie'] = isAke($options, 'preferences_client_paiement_titre_rendu_monnaie', $preferences_client_paiement_titre ? 0 : -1);
         $data['paiement_titre_max_accepte'] = isAke($options, 'preferences_client_paiement_titre_max_accepte', null);
         $data['company'] = $row['company'];
         $data['company']['siret'] = (string) isAke($row['company'], 'siret', '');
         $data['company']['tel'] = (string) str_replace([" ", ".", "-", "+"], ["", "", "", "00"], isAke($row['company'], 'tel', ''));
         if (fnmatch('0*', $data['company']['tel'])) {
             $data['company']['tel'] = strReplaceFirst('0', '+33', $data['company']['tel']);
         }
         $data['is_favorite'] = lib('favorite')->has('reseller', (int) $reseller_id, (int) $account_id);
         $data['is_resto'] = true;
         $data['nombre_places'] = $options['nombre_places'];
         $data['nombre_places_terrasse'] = $options['nombre_places_terrasse'];
         $horaires = [];
         $schedules = $row['schedules'];
         foreach ($schedules as $typeSchedule => $days) {
             if (!isset($horaires[$typeSchedule])) {
                 $horaires[$typeSchedule] = [];
             }
             foreach ($days as $day => $dataSchedule) {
                 if (!isset($horaires[$typeSchedule][$day])) {
                     $horaires[$typeSchedule][$day] = [];
                 }
                 foreach ($dataSchedule as $when => $hour) {
                     $hour = str_replace('_', 'h', $hour);
                     $horaires[$typeSchedule][$day][$when] = str_replace('h00', 'h', $hour);
                 }
             }
         }
         $data['horaires'] = $horaires;
         $prefsResto = array_keys(lib('resto')->extractPreferences($options));
         $activitesResto = array_keys(lib('resto')->extractActivites($options));
         $labelsResto = array_keys(lib('resto')->extractLabels($options));
         $thematiquesResto = array_keys(lib('resto')->extractThematiques($options));
         $guidesResto = array_keys(lib('resto')->extractGuides($options));
         $optionsMacro = (include APPLICATION_PATH . DS . 'models/options/413.php');
         $valuesGuides = array_get($optionsMacro, 'guides.values');
         $valuesActivities = array_get($optionsMacro, 'activites.values');
         $themes_affil = array_get($optionsMacro, 'activites.types_affil');
         $valuesThematiques = [];
         $valuesThematiques = array_merge($valuesThematiques, array_get($optionsMacro, 'thematiques.values_0'));
         $valuesThematiques = array_merge($valuesThematiques, array_get($optionsMacro, 'thematiques.values_1'));
         $valuesThematiques = array_merge($valuesThematiques, array_get($optionsMacro, 'thematiques.values_2'));
         $valuesThematiques = array_merge($valuesThematiques, array_get($optionsMacro, 'thematiques.values_3'));
         $valuesLabels = [];
         $valuesLabels = array_merge($valuesLabels, array_get($optionsMacro, 'labels.values_0'));
         $valuesLabels = array_merge($valuesLabels, array_get($optionsMacro, 'labels.values_1'));
         $acts = $themes = $lbls = $prefs = $guides = [];
         foreach ($guidesResto as $guidesId) {
             $guides[] = $valuesGuides[(int) str_replace('guides_', '', $guidesId)];
         }
         foreach ($activitesResto as $activiteId) {
             if (fnmatch('*_*_*', $activiteId)) {
                 continue;
             }
             $acts[] = $valuesActivities[(int) str_replace('activites_', '', $activiteId)];
         }
         foreach ($thematiquesResto as $thematiquesId) {
             $ind = str_replace('thematiques_', 'thematiques.values_', $thematiquesId);
             $last = Arrays::end(explode('_', $ind));
             $ind = str_replace('_' . $last, '.' . $last, $ind);
             $ind = str_replace('thematiques.values.', 'thematiques.values_', $ind);
             $val = array_get($optionsMacro, $ind);
             $themes[] = $val;
         }
         foreach ($labelsResto as $labelsId) {
             $ind = str_replace('labels_', 'labels.values_', $labelsId);
             $last = Arrays::end(explode('_', $ind));
             $ind = str_replace('_' . $last, '.' . $last, $ind);
             $ind = str_replace('labels.values.', 'labels.values_', $ind);
             $val = array_get($optionsMacro, $ind);
             $lbls[] = $val;
         }
         // foreach ($labelsResto as $labelsId) {
         //     $lbls[] = $valuesLabels[(int) str_replace('thematiques_', '', $labelsId)];
         // }
         foreach ($prefsResto as $index) {
             $tab = explode('_', $index);
             if (is_numeric(end($tab))) {
                 if (!isset($prefs[str_replace(['preferences_client_', '_' . end($tab)], '', $index)])) {
                     $prefs[str_replace(['preferences_client_', '_' . end($tab)], '', $index)] = [];
                 }
                 $values = array_get($optionsMacro, str_replace('_' . end($tab), '', $index) . '.values');
                 $prefs[str_replace(['preferences_client_', '_' . end($tab)], '', $index)][] = $values[end($tab)];
             }
         }
         $prefs['paiement'] = array_merge(isset($prefs['paiement_carte']) ? $prefs['paiement_carte'] : [], isset($prefs['paiement_titre']) ? $prefs['paiement_titre'] : []);
         unset($prefs['paiement_carte']);
         unset($prefs['paiement_titre']);
         $prefs['prestations_de_reception'] = array_merge(isset($prefs['prestations_specifiques']) ? $prefs['prestations_specifiques'] : [], isset($prefs['prestations_de_reception']) ? $prefs['prestations_de_reception'] : [], isset($prefs['prestations_de_reception_langue']) ? $prefs['prestations_de_reception_langue'] : []);
         unset($prefs['prestations_specifiques']);
         // unset($prefs['prestations_de_reception']);
         unset($prefs['prestations_de_reception_langue']);
         $p = [];
         foreach ($prefs as $k => $v) {
             $p[] = ['name' => $k, 'data' => $v];
         }
         $prefs = $p;
         $data['activites'] = array_values(array_unique($acts));
         $data['thematiques'] = array_values(array_unique($themes));
         $data['labels'] = array_values(array_unique($lbls));
         $data['preferences'] = $prefs;
         $data['guides'] = array_values(array_unique($guides));
         $data['location'] = $row['loc'];
         $extras = Model::Extradata()->where(['reseller_id', '=', (int) $reseller_id])->cursor()->first();
         if (empty($extras)) {
             $extras = ['access' => 'Prendre Tram 1 descendre à l\'arrêt Godrans.'];
         }
         $data['extras'] = $extras;
         $myzelift = Model::Myzelift()->where(['reseller_id', '=', (int) $reseller_id])->cursor()->first();
         if (!isset($myzelift['general_intro_1'])) {
             $myzelift = ['general_intro_1' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis intro 1', 'general_intro_2' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis intro 2', 'general_1' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'general_2' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 2', 'general_3' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 3', 'general_4' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 4', 'plus_1' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'plus_2' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'plus_3' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'coeur_1' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'coeur_2' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1', 'coeur_3' => 'Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis Lorem ipsum aequitis 1'];
         }
         if (isset($myzelift['images']) && isset($myzelift['data'])) {
             $zc = [];
             $zc['images'] = $myzelift['images'];
             $zc['data'] = $myzelift['data'];
             $myzelift = $zc;
         }
         $carte = $row['carte'];
         $nc = $c = [];
         $categories = Model::Catalogcategory()->cursor();
         foreach ($categories as $cat) {
             $nc[] = ['name' => $cat['name'], 'data' => $carte[$cat['id']]];
         }
         $data['carte'] = $nc;
         $data['myzelift'] = $myzelift;
         return $data;
     } else {
         /* ce n'est pas un restaurateur */
         $tab = Model::Company()->where(['reseller_id', '=', (int) $reseller_id])->first(false);
         $tab['rate'] = 0;
         $tab['is_resto'] = false;
         return $tab;
     }
 }
Example #2
0
 public function fiche($reseller_id, $account_id = null)
 {
     $return = [];
     if (is_null($account_id)) {
         $user = session('user')->getUser();
         $account_id = (int) $user['id'];
     }
     $sid = $this->session_id();
     $fiche = Model::Restodata()->where(['reseller_id', '=', (int) $reseller_id])->first(true);
     $ir = Save::get('infos.data.resto.' . $account_id . '.' . $sid);
     $oi = Save::get('offer.in.' . $account_id . '.' . $sid);
     if (!$ir) {
         $ir = [];
     } else {
         $ir = unserialize($ir);
     }
     if ($fiche) {
         $return = $fiche->toArray();
         $jours = isAke($return, 'jours', []);
         $services = isAke($return, 'services', []);
         $return['extras'] = isAke($return, 'extras', []);
         if (!$oi) {
             $oi = serialize([]);
         }
         $datasPc = unserialize($oi);
         $restos = isAke($datasPc, 'restaurants', []);
         $jour = isAke($datasPc, 'jour', lib('time')->frenchDay());
         $service = isAke($datasPc, 'service', 1);
         if (empty($restos)) {
             return $return;
         }
         $nc = $c = [];
         $categories = Model::Catalogcategory()->cursor();
         foreach ($categories as $cat) {
             $pls = $return['carte'][$cat['id']];
             $cpls = [];
             foreach ($pls as $segPlt) {
                 $contraintesJour = isset($jours[$segPlt['id']]) ? $jours[$segPlt['id']] : [];
                 $contraintesService = isset($services[$segPlt['id']]) ? $services[$segPlt['id']] : [];
                 $add = true;
                 if (!empty($contraintesJour)) {
                     $add = in_array($jour, $contraintesJour);
                 }
                 if (!empty($contraintesService) && $add) {
                     $add = in_array($service, $contraintesService);
                 }
                 if ($add) {
                     $cpls[] = $segPlt;
                 }
             }
             $nc[] = ['name' => $cat['name'], 'plats' => $cpls];
         }
         $return['carte_ordonnee'] = $nc;
         foreach ($restos as $res) {
             if ($res['id'] == $reseller_id) {
                 break;
             }
         }
         redis()->set('infos.restos.' . $account_id . '.' . $reseller_id, serialize($res));
         $return['plats_choisis'] = isAke($res, 'plats_choisis', []);
         $ap = isAke($res, 'all_plats', []);
         if (!empty($return['plats_choisis'])) {
             $keyCache = sha1($reseller_id . $this->session_id() . 'platschoisis');
             $cp = redis()->get($keyCache);
             if (!$cp) {
                 $pc1 = $return['plats_choisis'];
                 $pc2 = $tups = [];
                 foreach ($pc1 as $pc11) {
                     $plats = isAke($pc11, 'plats', []);
                     $c = [];
                     if (!empty($plats)) {
                         foreach ($plats as $p) {
                             $n = $p['catalog_name'];
                             if (in_array($p['id'], $tups)) {
                                 continue;
                             }
                             $tups[] = $p['id'];
                             $p['name'] = $n;
                             $i = isset($ap[$p['id']]) ? $ap[$p['id']] : [];
                             if (!isset($p['description'])) {
                                 $p['description'] = isAke($i, 'description', '');
                             } else {
                                 if (empty($p['description'])) {
                                     $p['description'] = isAke($i, 'description', '');
                                 }
                             }
                             if (!isset($p['accompagnement'])) {
                                 $p['accompagnement'] = isAke($i, 'accompagnement', '');
                             } else {
                                 if (empty($p['accompagnement'])) {
                                     $p['accompagnement'] = isAke($i, 'accompagnement', '');
                                 }
                             }
                             unset($p['catalog_name']);
                             $c[] = $p;
                         }
                         $pc11['plats'] = $c;
                     } else {
                         if (in_array($pc11['id'], $tups)) {
                             continue;
                         }
                         $tups[] = $pc11['id'];
                         $pc11['plats'] = [];
                         $i = isset($ap[$pc11['id']]) ? $ap[$pc11['id']] : [];
                         $pt = $this->infoPlates($return, $pc11['id']);
                         $pt['name'] = $pc11['catalog_name'];
                         $pc11['plats'][] = $pt;
                     }
                     $pc2[] = $pc11;
                 }
                 $return['plats_choisis'] = $pc2;
             } else {
                 $return['plats_choisis'] = unserialize($cp);
                 // redis()->del($keyCache);
             }
         }
         unset($return['names']);
         unset($return['assocs']);
         $return['infos'] = isset($ir[$reseller_id]) ? $ir[$reseller_id] : [];
         $ap = isAke($return['infos'], 'all_plats', []);
         $orders = isake($return, 'orders', []);
         $collection = [];
         foreach ($ap as $idAp => $ap) {
             $ap = current($ap);
             $ordre = isset($orders[$idAp]) ? $orders[$idAp] : 1;
             $ap['ordre'] = $ordre;
             $collection[] = $ap;
         }
         $collection = lib('collection', [$collection])->sortBy('ordre')->toArray();
         $return['infos']['all_plats'] = array_values($collection);
         if (!empty($account_id)) {
             Model::Restoview()->firstOrCreate(['date' => date('d-m-Y'), 'account_id' => (int) $account_id, 'reseller_id' => (int) $reseller_id]);
         }
         unset($return['all_plats']);
     } else {
         die('resto introuvable');
     }
     unset($return['infos']);
     Save::setExpire('return.in.' . $account_id . '.' . $sid, $return, 120);
     $return['session_id'] = session_id();
     return $return;
 }