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 updateTimeGrafics() { // $this->lastUpdated = now()->toDateTimeString(); $this->lastUpdated = now()->format('Y-m-d H:i'); // Chame o método para atualizar os dados dos gráficos $this->refreshDataEquipments($this->datasProject); // Disparar um evento com os dados atualizados $this->dispatch('refreshData', [ 'totalEquipmentsCount' => $this->totalEquipmentsCount, 'unstarted' => $this->unstarted, 'inProgress' => $this->inProgress, 'toApprove' => $this->toApprove, 'completed' => $this->completed, 'totalEquivalentEquipment' => $this->totalEquivalentEquipment, 'equivalentUnstarted' => $this->equivalentUnstarted, 'equivalentInProgress' => $this->equivalentInProgress, 'equivalentCompleted' => $this->equivalentCompleted, ]); } // Por tipo de equipamento, // Por Fabrica //Porcentagem public function showPercentageEquipments() { // Disparar um evento com os dados atualizados $this->dispatch('refreshPercentageEquipments', [ 'totalEquipmentsCount' => $this->totalEquipmentsCount, 'unstarted' => $this->unstarted, 'inProgress' => $this->inProgress, 'toApprove' => $this->toApprove, 'completed' => $this->completed, 'totalEquivalentEquipment' => $this->totalEquivalentEquipment, 'equivalentUnstarted' => $this->equivalentUnstarted, 'equivalentInProgress' => $this->equivalentInProgress, 'equivalentCompleted' => $this->equivalentCompleted, ]); } public function refreshDataEquipments($datasProject) { // Inicializa a zero o contador para toda a vez que atualizar. $this->completed = 0; $this->inProgress = 0; $this->toApprove = 0; $this->unstarted = 0; $this->equivalentCompleted = 0; $this->equivalentInProgress = 0; $this->equivalentUnstarted = 0; //recebe o total de equipamentos da Obra. $totalEquipments = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); // Busca o valor total de todos os equipamentos encontrados $this->totalEquipmentsCount = $totalEquipments->count(); $equipmentCounts = []; foreach ($totalEquipments as $equipment) { // Conta quantas vezes o equipamento aparece em OrderEquipmentTasks - para saber o numero de tarefas que cada equipamento tem. (verificar se nao seria melhor colocar em um array) $tasksCount = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count(); // ira receber varios dados para o array sendo array[key:equipment_id,valor:quantidade de vezes que o equipment_id se repete na tabela 'OrderEquipmentTasks'] $equipmentCounts[$equipment->equipment_id] = $tasksCount; // Verifica primiero se tem pelos menos o mesmo numeros de tarefas feitas em relacao a tarefas por fazer(apenas este metodo nao garante , pois nao distingue historico de tarefa distinta) // Apenas apos a 2 verificacao quando equipment_status_project = 3 significa que foi apravado e concluido. if (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) // apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido ->whereNotNull('id_workstations') ->whereNotNull('entry_date') ->whereNotNull('departure_date') ->count() >= $tasksCount && EquipmentWorkHistory::where('equipmentWorkHistorys_id',$equipment->equipmentWorkHistorys_id) ->where('equipment_status_project',3) ) { // se o equipamento foi considerado concluido, conta +1 para o completed e o equivalentCompleted busca no array equipmentCounts, quando a key for igual ao equipment_id atual e conta com + os valores da key encontrada $this->completed++; $this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array $this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id]; } //Verica e devolve a quantidade de equipamentos para aprovar. //Ao tentar descomentar os graficos de queijo somem. // elseif (EquipmentWorkHistory::where('equipmentWorkHistorys_id',$equipment->equipmentWorkHistorys_id)->where('equipment_status_project',2)){ // $this->toApprove++; // } elseif (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->exists()) { $this->inProgress++; $this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id]; } else { $this->unstarted++; $this->equivalentUnstarted += $equipmentCounts[$equipment->equipment_id]; } } // Busca o valor total de todas as ocorrências criadas na variavel equipmentCounts $this->totalEquivalentEquipment = array_sum($equipmentCounts); $this->completed1 = collect($this->completed1); } public function render() { return view('livewire.execução.equipments-dashboard'); } }