datasProject = $datasProject; $this->lastUpdated = now()->format('Y-m-d H:i'); // chama a funcao e envia a variavel datasProject recebido da view principal $this->refreshDataEquipments($datasProject); } public function refreshTaskGraph() { $this->lastUpdated = now()->format('Y-m-d H:i'); $this->refreshDataEquipments($this->datasProject); $this->dispatch('refreshDataTasks', [ 'receiveElementalTasks' => $this->receiveElementalTasks, 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, ]); } public function showPercentageElementalTasks() { $this->dispatch('refreshPercentageElementalTasks', [ 'receiveElementalTasks' => $this->receiveElementalTasks, 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, 'countElementalTasksAll' => $this->countElementalTasksAll, ]); } public function refreshDataEquipments($datasProject) { $receiveEquipmentsProject = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); $elementalTasks = collect(); $elementalTasksCountsAll = []; foreach ($receiveEquipmentsProject as $equipment) { $relatedTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->get(); $elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique(); $groupedTasks = $relatedTasks->whereNotNull('elemental_tasks_id')->groupBy('elemental_tasks_id'); foreach ($groupedTasks as $taskId => $tasksGroup) { if (isset($elementalTasksCountsAll[$taskId])) { $elementalTasksCountsAll[$taskId] += count($tasksGroup); } else { $elementalTasksCountsAll[$taskId] = count($tasksGroup); } } } $this->receiveElementalTasksAll = $elementalTasksCountsAll; $tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks) ->whereIn('equipmentWorkHistorys_id', $receiveEquipmentsProject->pluck('equipmentWorkHistorys_id')) ->get(['equipmentWorkHistorys_id', 'elemental_tasks_id']) ->groupBy('elemental_tasks_id') ->map(function ($group) { return $group->unique('equipmentWorkHistorys_id')->count(); }); $newArray = []; foreach ($tasksCount as $taskId => $count) { $task = ElementalTasks::find($taskId); if ($task) { $newArray[$task->elemental_tasks_code] = $count; } } $this->receiveElementalTasks = $newArray; $newArray1 = []; foreach ($this->receiveElementalTasksAll as $taskId1 => $count) { $task1 = ElementalTasks::find($taskId1); if ($task1) { $newArray1[$task1->elemental_tasks_code] = $count; } } $this->receiveElementalTasksAll = $newArray1; $this->countElementalTasksAll = array_sum($this->receiveElementalTasksAll); } public function render() { return view('livewire.execução.tasks-dashboard'); } }