workstation = $workstation; $this->receiveAllEquipments = Equipment::where('company_projects_id', $this->workstation->company_projects_id) ->join('equipment_association_ambits', 'equipments.equipment_id', '=', 'equipment_association_ambits.equipment_id') ->select('equipments.equipment_id', 'equipments.equipment_type_id', 'equipment_association_ambits.ambits_id') ->get() ->toArray(); $this->receiveAllFurtherTasks = FurtherTasks::where('company_projects_id', $this->workstation->company_projects_id) ->get(); // Inicializar a matriz $this->receiveElementalTasks = [ 'geral' => [], '1' => [], '2' => [], '3' => [] ]; // Coletar todos os elemental_tasks_id para cada equipment_type_id foreach ($this->receiveAllEquipments as $equipment) { $elementalTasksIds = TasksAssociationAmbits::where('ambits_equipment_id', $equipment['ambits_id']) ->pluck('elemental_tasks_id') ->toArray(); // Inicializar cada ID como uma chave com um array vazio como valor foreach ($elementalTasksIds as $id) { $this->receiveElementalTasks[$equipment['equipment_type_id']][$id] = []; } } // Mover elemental_tasks_id que aparecem em mais de um equipment_type_id para 'geral' foreach ($this->receiveElementalTasks as $key1 => $values1) { foreach ($this->receiveElementalTasks as $key2 => $values2) { if ($key1 !== $key2 && $key1 !== 'geral' && $key2 !== 'geral') { $commonValues = array_intersect_key($values1, $values2); if (!empty($commonValues)) { foreach ($commonValues as $value => $emptyArray) { $this->receiveElementalTasks['geral'][$value] = []; unset($this->receiveElementalTasks[$key1][$value]); unset($this->receiveElementalTasks[$key2][$value]); } } } } } // Iterar sobre $receiveElementalTasks foreach ($this->receiveElementalTasks as $key => $ids) { // Para cada ID em uma chave específica, buscar os detalhes na tabela ElementalTasks $details = ElementalTasks::whereIn('elemental_tasks_id', array_keys($ids)) ->select(['elemental_tasks_id', 'elemental_tasks_code', 'elemental_tasks_description']) ->get() ->toArray(); // Atualizar o array $receiveElementalTasks com os detalhes foreach ($details as $detail) { $this->receiveElementalTasks[$key][$detail['elemental_tasks_id']] = [ 'code' => $detail['elemental_tasks_code'], 'description' => $detail['elemental_tasks_description'] ]; } } // Armazenar os dados na sessão session([ 'receiveAllFurtherTasks' => $this->receiveAllFurtherTasks, 'receiveElementalTasks' => $this->receiveElementalTasks, ]); $receiveTasksRepository = app(ReceiveTasksRepository::class); // Chama a variavel do Repositorio para amazenar a variavel e depois conseguir chamar facilmente. $receiveTasksRepository->setElementalTasks($this->receiveElementalTasks); $receiveTasksRepository->setFurtherTasks($this->receiveAllFurtherTasks); } public function render() { return view('livewire.articulado.select-elemental-tasks-in-wonkstation'); } }