114 lines
4.2 KiB
PHP
Executable File
114 lines
4.2 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Livewire\Execução;
|
|
|
|
use App\Models\EquipmentWorkHistory;
|
|
use App\Models\OrderEquipmentTasks;
|
|
use App\Models\ControlEquipmentWorkstation;
|
|
use App\Models\ElementalTasks;
|
|
use Livewire\Component;
|
|
|
|
class TasksDashboard extends Component
|
|
{
|
|
public $receiveElementalTasks;
|
|
public $receiveElementalTasksAll;
|
|
public $countElementalTasksAll;
|
|
|
|
public $datasProject;
|
|
public $lastUpdated;
|
|
|
|
public function mount($datasProject)
|
|
{
|
|
$this->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;
|
|
|
|
// Obtém a contagem das tarefas considerando os critérios especificados
|
|
$tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks)
|
|
->whereIn('equipmentWorkHistorys_id', $receiveEquipmentsProject->pluck('equipmentWorkHistorys_id'))
|
|
->get(['equipmentWorkHistorys_id', 'elemental_tasks_id', 'departure_date', 'status'])
|
|
->groupBy('elemental_tasks_id')
|
|
->map(function ($group, $taskId) {
|
|
if ($taskId == 9) {
|
|
return $group->filter(function ($item) {
|
|
return $item->departure_date !== null && $item->status == 1;
|
|
})->unique('equipmentWorkHistorys_id')->count();
|
|
} else {
|
|
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');
|
|
}
|
|
}
|