tenantId(); if (!$tenant){ return $this->response([ 'floors' => [], 'areas' => [], 'tables' => [], 'combinations' => [] ]); } //$floor = Floor::find(1)->toArray(); //return $this->response([$floor]); // Asegurarse de que no hay mesas huerfanas de area Table::removeTablesAndCombinationsWithNoAreas($tenant); // 2026-03-30 Ordeno por nombre solo si no esta en el plano de mesas //$tables = Table::where('restaurant_id', $tenant)->get()->toArray(); $params = $request->params; $sort_tables = (isset($params['view']) && $params['view'] == 'floorplan_builder') ? false : true; $tables = Table::where('restaurant_id', $tenant)->get()->toArrayEachModel(); if ($sort_tables){ $tables = $this->sortTablesByName($tables); } return $this->response( [ 'floors' => Floor::where('restaurant_id', $tenant)->get()->toArray(), 'areas' => Area::where('restaurant_id', $tenant)->orderBy('ordering', 'ASC')->get()->toArray(), 'tables' => $tables, 'combinations' => Combination::where('restaurant_id', $tenant)->get()->toArray(), 'spaces' => Space::where('restaurant_id', $tenant)->get()->toArray(), 'groups' => TTagGroup::where('restaurant_id', $tenant)->get()->toArray(), 'tags' => TTag::where('restaurant_id', $tenant)->get()->toArray() ] ); } private function sortTablesByName(array $data): array { if (empty($data)) { return $data; } $grouped = []; $areaOrder = []; foreach ($data as $table) { $areaId = $table['area_id']; if (!in_array($areaId, $areaOrder)) { $areaOrder[] = $areaId; } $grouped[$areaId][] = $table; } foreach ($grouped as $areaId => &$tables) { usort($tables, function ($a, $b) { return strnatcasecmp($a['name'], $b['name']); }); foreach ($tables as $index => &$table) { $table['ordering'] = $index + 1; } } $sorted = []; foreach ($areaOrder as $areaId) { array_push($sorted, ...$grouped[$areaId]); } $data = $sorted; return $data; } public function areas(Request $request) { // @TODO authorization user $tenant = $request->tenantId(); if (!$tenant){ return $this->response([ 'areas' => [], ]); } return $this->response([ 'areas' => Area::where('restaurant_id', $tenant)->orderBy('ordering', 'ASC')->get()->toArray(), 'tables' => Table::where('restaurant_id', $tenant)->get()->toArray(), ]); } /** * Save the area canvas viewportTransform * * @param Request $request * * @return void */ public function canvas(Request $request) { // @TODO Authorization //ray($request->area); //ray($request->viewportTransform); $area = Area::find($request->area); if ($area) { $area->viewportTransform = $request->viewportTransform; $area->save(); } return $this->response([]); } public function decoration(Request $request) { // @TODO Authorization //ray('POST DECORATION'); //ray($request->decoration); $area = Area::find($request->area); if ($area) { $area->decoration = $request->decoration; $area->save(); } return $this->response([]); } }