137 lines
5.6 KiB
PHP
Executable File
137 lines
5.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Livewire\Articulado;
|
|
|
|
use App\Models\ElementalTasks;
|
|
use App\Models\EquipmentWorkHistory;
|
|
use App\Models\OrderEquipmentTasks;
|
|
use Livewire\Component;
|
|
|
|
use App\Models\Equipment;
|
|
|
|
use App\Models\EquipmentAssociationAmbit;
|
|
use App\Models\TasksAssociationAmbits;
|
|
use App\Models\FurtherTasks;
|
|
|
|
// Chama o Repositorio para amazenar as variaveis e depois conseguir chamar facilmente sem precisar de sessao.
|
|
use App\Repositories\ReceiveTasksRepository;
|
|
|
|
class SelectElementalTasksInWonkstation extends Component
|
|
{
|
|
public $workstation;
|
|
|
|
// recebe todos os equipamentos e pode filtros por tipos de equipamentos.
|
|
public $receiveAllEquipments = [];
|
|
|
|
// Recebe todos os Ambitos nao repetidos, apos filtrar por todos os equipamentos.
|
|
public $uniqueAmbitsIds = [];
|
|
|
|
public $receiveAllFurtherTasks = [];
|
|
|
|
public $receiveElementalTasks = [];
|
|
|
|
public $dataElementalTasks;
|
|
|
|
public $receiveAllAmbits = [];
|
|
|
|
public $elementalTasksDetails = [];
|
|
|
|
public $test;
|
|
|
|
public function mount($workstation)
|
|
{
|
|
$this->workstation = $workstation;
|
|
|
|
//verificar se nao o motivo de receber os valores antigos do ws ao entrar em outro.
|
|
$workstation = $this->workstation; // Atribuindo a uma variável local para uso na closure
|
|
|
|
//recebe todos os equipamentos do projecto atual
|
|
$this->receiveAllEquipments = Equipment::join('equipment_work_historys', function ($join) use ($workstation) {
|
|
$join->on('equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')
|
|
->where('equipment_work_historys.company_projects_id', '=', $workstation->company_projects_id);
|
|
})
|
|
->join('equipment_association_ambits', 'equipment_work_historys.equipmentWorkHistorys_id', '=', 'equipment_association_ambits.equipmentWorkHistorys_id')
|
|
->select('equipments.equipment_id','equipment_work_historys.equipmentWorkHistorys_id','equipment_work_historys.company_projects_id', 'equipments.equipment_type_id', 'equipment_association_ambits.ambits_id',)
|
|
->get()
|
|
->toArray();
|
|
|
|
// $this->receiveAllFurtherTasks = ElementalTasks::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) {
|
|
|
|
//Esta parte esta errada, nao esta indo pela tarefas do equipamento e sim pelos padrao ao selecionar um ambito.
|
|
// $elementalTasksIds = TasksAssociationAmbits::where('ambits_equipment_id', $equipment['ambits_id'])
|
|
// ->pluck('elemental_tasks_id')
|
|
// ->toArray();
|
|
|
|
$elementalTasksIds = OrderEquipmentTasks::where('equipmentWorkHistorys_id',$equipment['equipmentWorkHistorys_id'])
|
|
->orderBy('elemental_tasks_id', 'asc')
|
|
->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');
|
|
}
|
|
}
|