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