Example #1
0
 private function analyseSuggestions($choosePlates, $suggestions, $resto)
 {
     $tuples = $collection = $newPlates = [];
     $ap = isAke($resto, 'all_plats', []);
     foreach ($suggestions as $sugId) {
         $s = Model::Suggestion()->where(['segment_id', '=', $sugId])->first();
         $datas = repo('segment')->getData($sugId);
         $segments = isAke($datas, 'segments', '');
         if (fnmatch('*,*', $segments)) {
             $segments = explode(',', $segments);
             $item = [];
             $item['id'] = isAke($s, 'id', '');
             $item['name'] = isAke($s, 'name', '');
             $item['plats'] = [];
             foreach ($choosePlates as $cp) {
                 $plats = isAke($cp, 'plats', []);
                 foreach ($plats as $pl) {
                     $infos = isset($ap[$pl['id']]) ? current($ap[$pl['id']]) : [];
                     $attributes = $this->getAttributes(isAke($infos, 'data', []));
                     $addItem = false;
                     foreach ($attributes as $idAtt) {
                         if (in_array($idAtt, $segments)) {
                             $addItem = true;
                             break;
                         }
                     }
                     if ($addItem) {
                         $tuples[] = $cp['id'];
                         $item['plats'][] = $pl;
                     }
                 }
             }
             if (count($item['plats'])) {
                 $item['plats'] = array_values($item['plats']);
                 $item['nb'] = count($item['plats']);
                 $coll = lib('collection', [$item['plats']]);
                 $item['min_price'] = $coll->min('price');
                 $item['max_price'] = $coll->max('price');
                 $newPlates[] = $item;
             }
         } else {
             foreach ($choosePlates as $cp) {
                 if ($cp['id'] == $segments) {
                     $newPlates[] = $cp;
                     $tuples[] = $cp['id'];
                 }
             }
         }
     }
     foreach ($choosePlates as $cp) {
         if (!in_array($cp['id'], $tuples)) {
             $newPlates[] = $cp;
         }
     }
     foreach ($newPlates as $cp) {
         $plats = isAke($cp, 'plats', []);
         $cp['plats'] = array_values($plats);
         $collection[] = $cp;
     }
     return $collection;
 }