last update
This commit is contained in:
parent
8bc8ccff44
commit
8789ee8fdb
|
|
@ -524,6 +524,7 @@ public function createProjectForStep1()
|
||||||
// Apos terminar não vai ficar step 1
|
// Apos terminar não vai ficar step 1
|
||||||
return view('projectsClients/createProject', ['step' => 1], ['companies' => $companies]);
|
return view('projectsClients/createProject', ['step' => 1], ['companies' => $companies]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Progress Bar
|
// Progress Bar
|
||||||
//Devolve para a primeira para na Descrição do projecto apenas user com ID 3, quer dizer que apenas as "empresas"
|
//Devolve para a primeira para na Descrição do projecto apenas user com ID 3, quer dizer que apenas as "empresas"
|
||||||
public function showStep1($company_projects_id)
|
public function showStep1($company_projects_id)
|
||||||
|
|
@ -533,7 +534,6 @@ public function showStep1($company_projects_id)
|
||||||
$projects = CompanyProject::with('user')->find($company_projects_id);
|
$projects = CompanyProject::with('user')->find($company_projects_id);
|
||||||
// dd($projects->user);
|
// dd($projects->user);
|
||||||
|
|
||||||
|
|
||||||
$companies = User::where('type_users', 3)->get();
|
$companies = User::where('type_users', 3)->get();
|
||||||
|
|
||||||
return view('projectsClients/projectDetails_1', ['step' => 1], ['companies' => $companies])
|
return view('projectsClients/projectDetails_1', ['step' => 1], ['companies' => $companies])
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,60 @@
|
||||||
use App\Models\EquipmentComments;
|
use App\Models\EquipmentComments;
|
||||||
use App\Models\EquipmentType;
|
use App\Models\EquipmentType;
|
||||||
use App\Models\OrderEquipmentTasks;
|
use App\Models\OrderEquipmentTasks;
|
||||||
|
use App\Models\SpecificAttributesEquipmentType;
|
||||||
|
use App\Models\ElementalTasks;
|
||||||
|
|
||||||
use Yajra\DataTables\Facades\DataTables;
|
use Yajra\DataTables\Facades\DataTables;
|
||||||
|
|
||||||
class ExecutionProjectController extends Controller
|
class ExecutionProjectController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public function test11($projectID,$equipmentID)
|
||||||
|
{
|
||||||
|
$dataEquipment =Equipment::find($equipmentID);
|
||||||
|
|
||||||
|
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
|
||||||
|
$OrdemTasks = OrderEquipmentTasks::where('equipment_id', $equipmentID)->get(); // Todas as tarefas que o equipamento vai realizar :
|
||||||
|
$OrdemTasksIds = $OrdemTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
|
||||||
|
|
||||||
|
return view ('projectsClients.articulated_2_ShowEquipment',compact('dataEquipment','OrdemTasks','OrdemTasksIds'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDataEquipment(Request $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
$numberProject = $request->get('numberProject');
|
||||||
|
|
||||||
|
$equipment = Equipment::with('equipmentType') // Certifique-se de que o método 'equipmentType' existe no modelo 'Equipment'
|
||||||
|
->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id'])
|
||||||
|
->where('company_projects_id', $numberProject);
|
||||||
|
|
||||||
|
return DataTables::of($equipment)
|
||||||
|
->addColumn('unit_name', function ($equipment) {
|
||||||
|
// Retorna 'unit_name' do relacionamento 'unit'
|
||||||
|
return $equipment->unit ? $equipment->unit->unit_name : 'N/A';
|
||||||
|
})
|
||||||
|
->addColumn('equipment_type_name', function ($equipment) {
|
||||||
|
// Retorna 'equipment_type_name' do relacionamento 'equipmentType'
|
||||||
|
return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A';
|
||||||
|
})
|
||||||
|
->addColumn('action', function ($equipment) use ($numberProject) {
|
||||||
|
// Lógica para a coluna de ação com o link correto
|
||||||
|
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('test11', ['projectID' => $numberProject, 'equipmentID' => $equipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
|
||||||
|
return $actionBtn;
|
||||||
|
})
|
||||||
|
->editColumn('unit_id', function ($equipment) {
|
||||||
|
// Isto irá substituir 'unit_id' pelo 'unit_name' associado
|
||||||
|
return $equipment->unit->unit_name ?? 'N/A';
|
||||||
|
})
|
||||||
|
->editColumn('equipment_type_id', function ($equipment) {
|
||||||
|
// Isto irá substituir 'equipment_type_id' pelo 'equipment_type_name' associado
|
||||||
|
return $equipment->equipmentType->equipment_type_name ?? 'N/A';
|
||||||
|
})
|
||||||
|
->rawColumns(['action'])
|
||||||
|
->make(true);
|
||||||
|
}
|
||||||
|
|
||||||
public function enterWorkstation()
|
public function enterWorkstation()
|
||||||
{
|
{
|
||||||
return view('workstations/index');
|
return view('workstations/index');
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
use App\Models\ControlEquipmentWorkstation;
|
use App\Models\ControlEquipmentWorkstation;
|
||||||
use App\Models\ElementalTasks;
|
use App\Models\ElementalTasks;
|
||||||
use App\Models\Equipment;
|
use App\Models\Equipment;
|
||||||
|
use App\Models\OrderEquipmentTasks;
|
||||||
use App\Models\workstationsTaskAnswers;
|
use App\Models\workstationsTaskAnswers;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
@ -17,21 +18,24 @@ class WorkstationsJobsController extends Controller
|
||||||
{
|
{
|
||||||
public function receiveAnswersEquipment(Request $request)
|
public function receiveAnswersEquipment(Request $request)
|
||||||
{
|
{
|
||||||
|
//Deve recber o id da control atual.
|
||||||
// Primeiro ele deve criar a associação entre id atual do control + perguntas e respostas
|
// Primeiro ele deve criar a associação entre id atual do control + perguntas e respostas
|
||||||
$receiveAnswersElementalTasks = new workstationsTaskAnswers;
|
$receiveAnswersElementalTasks = new workstationsTaskAnswers;
|
||||||
$receiveAnswersElementalTasks->control_equipment_workstation_id = $request->control_equipment_workstationid;
|
$receiveAnswersElementalTasks->control_equipment_workstation_id = $request->controlEquipmentID;
|
||||||
|
|
||||||
// Inicializando o array que vai armazenar os objetos JSON
|
// Inicializando o array que vai armazenar os objetos JSON
|
||||||
$answersArray = [];
|
$answersArray = []; // Array para armazenar as respostas
|
||||||
|
|
||||||
foreach ($request->all() as $key => $value) {
|
// Iterar sobre o array externo
|
||||||
|
foreach ($request->all() as $idKey => $subArray) {
|
||||||
|
// Verificar se a chave atual é uma das chaves de ID (ID1, ID2, etc.)
|
||||||
|
if (strpos($idKey, 'ID') === 0 && is_array($subArray)) {
|
||||||
|
// Iterar sobre o array interno
|
||||||
|
foreach ($subArray as $key => $value) {
|
||||||
// Ignorando a chave control_equipment_workstation_id
|
// Ignorando a chave control_equipment_workstation_id
|
||||||
if ($key !== 'control_equipment_workstation_id') {
|
if ($key !== 'controlEquipmentID') {
|
||||||
// Verificando se $key contém '-'
|
// Verificando se $key contém '-'
|
||||||
if (strpos($key, '-') === false) {
|
if (strpos($key, '-') !== false) {
|
||||||
// Se não contiver, pular esta iteração
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Dividindo a chave em duas partes: question e type
|
// Dividindo a chave em duas partes: question e type
|
||||||
list($question, $type) = explode('-', $key);
|
list($question, $type) = explode('-', $key);
|
||||||
|
|
||||||
|
|
@ -39,227 +43,92 @@ public function receiveAnswersEquipment(Request $request)
|
||||||
$answersArray[] = [
|
$answersArray[] = [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
'question' => $question
|
'question' => $question,
|
||||||
|
'idKey' => $idKey // Adicionando a chave do ID se necessário
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Convertendo o array em uma string JSON
|
// Convertendo o array em uma string JSON
|
||||||
$jsonString = json_encode($answersArray);
|
$jsonString = json_encode($answersArray);
|
||||||
|
|
||||||
// Armazenando a string JSON no banco de dados
|
// Armazenando a string JSON no banco de dados
|
||||||
$receiveAnswersElementalTasks->answer_json = $jsonString;
|
$receiveAnswersElementalTasks->answer_json = $jsonString;
|
||||||
// $receiveAnswersElementalTasks->save();
|
|
||||||
|
|
||||||
// update departure_date value
|
|
||||||
$receiveDataControlWs = ControlEquipmentWorkstation::find($request->control_equipment_workstationid);
|
|
||||||
|
|
||||||
|
|
||||||
//FINALIZOU A TAREFA ANTERIOR COM DEPARTURE
|
|
||||||
|
|
||||||
//Busca o Email
|
|
||||||
$userEmail = Auth::user()->email;
|
|
||||||
|
|
||||||
//Busca o id Anterior
|
|
||||||
$control_ew_id = $request->control_equipment_workstationid;
|
|
||||||
|
|
||||||
// Busca a Ws com base no id recebido da tabela Control.
|
// Busca a Ws com base no id recebido da tabela Control.
|
||||||
$recebeDataControlId = ControlEquipmentWorkstation::find($request->control_equipment_workstationid);
|
$recebeDataControlWs = ControlEquipmentWorkstation::find($request->controlEquipmentID);
|
||||||
|
$recebeDataControlWs->departure_date = now();
|
||||||
|
|
||||||
//Chama o procedimento
|
$requestData = $request->all();
|
||||||
$controlTasks = DB::select('CALL ManageNextTask(?, ?)', [$userEmail, $control_ew_id]);
|
|
||||||
|
|
||||||
//Saving the values to a variable
|
// Iterar sobre o array de parâmetros do request
|
||||||
if (count($controlTasks) > 0) {
|
foreach ($requestData as $key => $value) {
|
||||||
$current_workstation = $controlTasks[0]->id_workstations;
|
if (preg_match('/^ID(\d+)$/', $key, $matches)) {
|
||||||
$next_workstation = $controlTasks[0]->next_workstation;
|
// $matches[1] contém o número após 'ID'
|
||||||
$next_todo = $controlTasks[0]->next_todo;
|
$idNumber = $matches[1];
|
||||||
} else {
|
// Atribuir o número extraído diretamente ao elemental_tasks_id
|
||||||
//It should always exist, but you never know :)
|
$recebeDataControlWs->elemental_tasks_id = $idNumber;
|
||||||
$next_todo = null;
|
break; // Se você só espera um ID, pare o loop depois de encontrar
|
||||||
}
|
|
||||||
//RECEBE OS VALORES DA PROXIMA WS E PROXIMA TAREFA
|
|
||||||
|
|
||||||
// Recebe os dados de cada Tarefa Elementar.
|
|
||||||
$receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id);
|
|
||||||
$receiveDataEquipment = Equipment::find($recebeDataControlId->equipment_id);
|
|
||||||
|
|
||||||
|
|
||||||
if ($next_todo < 25) {
|
|
||||||
$elemental_tasks_id = $next_todo;
|
|
||||||
$further_tasks_id = null;
|
|
||||||
} else {
|
|
||||||
$elemental_tasks_id = null;
|
|
||||||
$further_tasks_id = $next_todo;
|
|
||||||
}
|
|
||||||
// dd($recebeDataControlId->id_workstations );
|
|
||||||
|
|
||||||
|
|
||||||
if ($request->stateEquipment == "cancel") {
|
|
||||||
$deleteDataControlWhereRefreashPage = ControlEquipmentWorkstation::where('id_workstations', $receiveDataControlWs->id_workstations)
|
|
||||||
->where('equipment_id', $receiveDataEquipment->equipment_id)
|
|
||||||
->whereNotNull('entry_date')
|
|
||||||
->whereNull('departure_date')
|
|
||||||
->first();
|
|
||||||
|
|
||||||
if ($deleteDataControlWhereRefreashPage) {
|
|
||||||
$deleteDataControlWhereRefreashPage->id_workstations = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->entry_date = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->departure_date = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->save();
|
|
||||||
}
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
|
|
||||||
} if ($request->stateEquipment == "finish") {
|
|
||||||
|
|
||||||
$receiveDataControlWs->departure_date = now();
|
|
||||||
$receiveDataControlWs->save();
|
|
||||||
|
|
||||||
$nextEquipmentTaskStateEquipmentFinish = DB::select("
|
|
||||||
INSERT INTO control_equipment_workstation
|
|
||||||
(equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date)
|
|
||||||
VALUES
|
|
||||||
(:equipment_id,NULL,:elemental_tasks_id,:further_tasks_id,NULL,NULL,NULL)
|
|
||||||
", [
|
|
||||||
'equipment_id' => $receiveDataEquipment->equipment_id,
|
|
||||||
'elemental_tasks_id' => $elemental_tasks_id,
|
|
||||||
'further_tasks_id' => $further_tasks_id
|
|
||||||
]);
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
|
|
||||||
}
|
|
||||||
if ($request->stateEquipment == 'next') {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$receiveDataControlWs->departure_date = now();
|
|
||||||
$receiveDataControlWs->save();
|
|
||||||
|
|
||||||
// Para criar a divisao do equipamento em entre compo e Obturador
|
|
||||||
if ($receiveDataControlWs->elemental_tasks_id == 5 && $receiveDataEquipment->equipment_type_id == 3) {
|
|
||||||
|
|
||||||
$nextEquipmentTask1 = DB::select("
|
|
||||||
INSERT INTO control_equipment_workstation
|
|
||||||
(equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date)
|
|
||||||
VALUES
|
|
||||||
(:equipment_id,NULL,8,:further_tasks_id,NULL,NULL,NULL)
|
|
||||||
", [
|
|
||||||
'equipment_id' => $receiveDataEquipment->equipment_id,
|
|
||||||
'further_tasks_id' => $further_tasks_id
|
|
||||||
]);
|
|
||||||
|
|
||||||
$nextEquipmentTask2 = DB::select("
|
|
||||||
INSERT INTO control_equipment_workstation
|
|
||||||
(equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date)
|
|
||||||
VALUES
|
|
||||||
(:equipment_id,NULL,9,:further_tasks_id,NULL,NULL,NULL)
|
|
||||||
", [
|
|
||||||
'equipment_id' => $receiveDataEquipment->equipment_id,
|
|
||||||
'further_tasks_id' => $further_tasks_id
|
|
||||||
]);
|
|
||||||
// Equipamento separado em 2 corpo/ Obturador
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Quando concluir as tarefas 8 e 9
|
|
||||||
if ($receiveDataEquipment->equipment_type_id == 3 && ($receiveDataControlWs->elemental_tasks_id == 8 || $receiveDataControlWs->elemental_tasks_id == 9)) {
|
|
||||||
// dd('recebe if Quando concluir as tarefas 8 e 9 ');
|
|
||||||
|
|
||||||
// Verifique se já existem registros na tabela control_equipment_workstation
|
|
||||||
$existingRecords = DB::table('control_equipment_workstation')
|
|
||||||
->where('equipment_id', $receiveDataControlWs->equipment_id)
|
|
||||||
->whereIn('elemental_tasks_id', [8, 9])
|
|
||||||
->whereNotNull('departure_date')
|
|
||||||
->get();
|
|
||||||
|
|
||||||
// Verifique se há pelo menos dois registros que atendem às condições
|
|
||||||
if ($existingRecords->count() >= 2) {
|
|
||||||
|
|
||||||
// Crie um novo registro com elemental_tasks_id igual a 10
|
|
||||||
$nextEquipmentTask3 = DB::table('control_equipment_workstation')->insertGetId([
|
|
||||||
'equipment_id' => $receiveDataControlWs->equipment_id,
|
|
||||||
'id_workstations' => NULL,
|
|
||||||
'elemental_tasks_id' => 10,
|
|
||||||
'further_tasks_id' => $further_tasks_id,
|
|
||||||
'equipment_comments_id' => NULL,
|
|
||||||
'entry_date' => NULL,
|
|
||||||
'departure_date' => NULL,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Se a proxima WS for igual a atual deve criar dados para a ws
|
|
||||||
if ($recebeDataControlId->id_workstations == $next_workstation) {
|
|
||||||
|
|
||||||
|
|
||||||
$nextEquipmentTask = DB::select("
|
|
||||||
INSERT INTO control_equipment_workstation
|
|
||||||
(equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date)
|
|
||||||
VALUES
|
|
||||||
(:equipment_id,:next_workstation,:elemental_tasks_id,:further_tasks_id,NULL,CURRENT_TIMESTAMP,NULL)
|
|
||||||
", [
|
|
||||||
'equipment_id' => $receiveDataEquipment->equipment_id,
|
|
||||||
'next_workstation' => $next_workstation,
|
|
||||||
'elemental_tasks_id' => $elemental_tasks_id,
|
|
||||||
'further_tasks_id' => $further_tasks_id
|
|
||||||
]);
|
|
||||||
|
|
||||||
$lastInsertedId = DB::getPdo()->lastInsertId();
|
|
||||||
|
|
||||||
$receiveDataNewElementalTask = ElementalTasks::find($elemental_tasks_id);
|
|
||||||
|
|
||||||
return view('workstations.workstations', [
|
|
||||||
'receiveDataElementalTask' => $receiveDataNewElementalTask,
|
|
||||||
'receiveDataEquipment' => $receiveDataEquipment,
|
|
||||||
'control_ew_id' => $lastInsertedId,
|
|
||||||
'task_todo' => $next_todo
|
|
||||||
]);
|
|
||||||
// Se verificar que a proxima tarefa e Null ele deve apenas voltar ao start
|
|
||||||
|
|
||||||
} else if ($next_workstation == null) {
|
|
||||||
|
|
||||||
$nextEquipmentTask = DB::select("
|
|
||||||
INSERT INTO control_equipment_workstation
|
|
||||||
(equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date)
|
|
||||||
VALUES
|
|
||||||
(:equipment_id,NULL,:elemental_tasks_id,:further_tasks_id,NULL,NULL,NULL)
|
|
||||||
", [
|
|
||||||
'equipment_id' => $receiveDataEquipment->equipment_id,
|
|
||||||
'elemental_tasks_id' => $elemental_tasks_id,
|
|
||||||
'further_tasks_id' => $further_tasks_id
|
|
||||||
]);
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Primeiro adicionamos a tarefa que acabou de completar, em seguida salvamos a respostas recebidas.
|
||||||
|
$recebeDataControlWs->save();
|
||||||
|
$receiveAnswersElementalTasks->save();
|
||||||
|
|
||||||
|
// Agora que guardamos os dados anteriores, vamos criar a nova linha na tabela Control Equipment ID para que o equipamento continue
|
||||||
|
$newControlEquipment = new ControlEquipmentWorkstation;
|
||||||
|
$newControlEquipment->equipment_id = $recebeDataControlWs->equipment_id;
|
||||||
|
$newControlEquipment->id_workstations = $recebeDataControlWs->id_workstations;
|
||||||
|
$newControlEquipment->entry_date = now();
|
||||||
|
$newControlEquipment->save();
|
||||||
|
|
||||||
|
// Vamos buscar os dados da tarefa elementar comcluida para mandar uma mensagem ao Front e indicar que esta completada
|
||||||
|
$receiveDataElementalTask = ElementalTasks::find($recebeDataControlWs->elemental_tasks_id,'elemental_tasks_id')->first();
|
||||||
|
|
||||||
|
return back()->with('success', 'Tarefa :: '.$receiveDataElementalTask->elemental_tasks_code.'-'.$receiveDataElementalTask->elemental_tasks_code.' Concluída com sucesso!');
|
||||||
|
|
||||||
|
// return route('getEquipmentData', $recebeDataControlWs->equipment_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ao selecionar o equipamento para se inicializar a tarefa deve mostrar os dados relacionados.
|
// Ao selecionar o equipamento para se inicializar a tarefa deve mostrar os dados relacionados.
|
||||||
public function getEquipmentData($equipment_id)
|
public function getEquipmentData($equipment_id)
|
||||||
{ //vai receber o email atual, no caso o da workstation que se encontra
|
{
|
||||||
|
//vai receber o email atual, no caso o da workstation que se encontra
|
||||||
$userEmail = Auth::user();
|
$userEmail = Auth::user();
|
||||||
|
|
||||||
|
|
||||||
// Busca os dados da Ws com base no Login
|
// Busca os dados da Ws com base no Login
|
||||||
$findDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first();
|
$receiveDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first();
|
||||||
|
|
||||||
// Recebe os dados do Equipamento
|
// Recebe os dados do Equipamento
|
||||||
$receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first();
|
$receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first();
|
||||||
|
// Recebe todas as tarefas elementares do equipamento.
|
||||||
|
$recebeTasksForEquipment = OrderEquipmentTasks::where('equipment_id', $equipment_id)->get();
|
||||||
|
|
||||||
|
// Primeira coisa, deve verificar se existe dados deste equipamento e se suas coluna elemental_tasks_id e departure_date estao diferentes de null
|
||||||
|
// Se estiver diferente de null quer dizer que todas as tarefas anteriores deste equipamento ja foram realizadas e se ele ainda aparece na tabela de equipamentos por fazer que dizer que ele ainda nao terminou todas as suas tarefas.
|
||||||
|
$existingControlEquipment = ControlEquipmentWorkstation::where('equipment_id', $receiveDataEquipment->equipment_id)
|
||||||
|
->whereNull('elemental_tasks_id')
|
||||||
|
->whereNull('departure_date')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$receiveDataControlEquipment = $existingControlEquipment;
|
||||||
|
|
||||||
|
// Ele realmente cria dados, porem toda a vez que da reload ele continua a criar.
|
||||||
|
// Ao entrar na tela do equipamento deve criar dados, para ele nao poder ser buscado por nenhuma outra WS.
|
||||||
|
if (!$existingControlEquipment) {
|
||||||
|
$createControlEquipment = new ControlEquipmentWorkstation;
|
||||||
|
$createControlEquipment->equipment_id = $receiveDataEquipment->equipment_id;
|
||||||
|
$createControlEquipment->id_workstations = $receiveDataWs->id_workstations;
|
||||||
|
$createControlEquipment->entry_date = now();
|
||||||
|
$createControlEquipment->save();
|
||||||
|
|
||||||
|
$receiveDataControlEquipment = $createControlEquipment;
|
||||||
|
}
|
||||||
|
|
||||||
// Busca as tarefas do Equipamento a serem feitas
|
|
||||||
$equipmentTasks = DB::table('users as u')
|
|
||||||
->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations')
|
|
||||||
->join('workstations_association_tasks as wat', 'cw.id_workstations', '=', 'wat.id_workstations')
|
|
||||||
->join('equipments as e', 'wat.company_projects_id', '=', 'e.company_projects_id')
|
|
||||||
->join('ordered_equipment_tasks as oet', 'e.equipment_id', '=', 'oet.equipment_id')
|
|
||||||
->where('u.email', $userEmail->email)
|
|
||||||
->select('e.equipment_id', 'e.equipment_tag', DB::raw('GROUP_CONCAT(DISTINCT COALESCE(oet.elemental_tasks_id, oet.further_tasks_id) ORDER BY oet.execution_order) AS equipment_all_tasks'))
|
|
||||||
->groupBy('e.equipment_id', 'e.equipment_tag')
|
|
||||||
->orderBy('e.equipment_id', 'ASC')
|
|
||||||
->get();
|
|
||||||
|
|
||||||
//Busca as tarefas que podem ser feitas pela WS Atual a partir do Email
|
//Busca as tarefas que podem ser feitas pela WS Atual a partir do Email
|
||||||
$userTasks = DB::table('users as u')
|
$userTasks = DB::table('users as u')
|
||||||
|
|
@ -270,81 +139,109 @@ public function getEquipmentData($equipment_id)
|
||||||
->groupBy('cw.id_workstations', 'cw.name_workstations')
|
->groupBy('cw.id_workstations', 'cw.name_workstations')
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
// Convertendo as tarefas do usuário em um array
|
// Primeiro, obtenha todos os IDs de tarefas elementares e outras tarefas de $userTasks
|
||||||
$tasksArray = explode(',', $userTasks->pluck('all_tasks')->first());
|
$userTasksIds = $userTasks->pluck('all_tasks')->map(function ($tasks) {
|
||||||
|
// Transforma a string 'all_tasks' em um array e remove espaços em branco
|
||||||
|
return array_map('trim', explode(',', $tasks));
|
||||||
|
})->flatten()->unique();
|
||||||
|
|
||||||
$controlEquipmentWorkstation = ControlEquipmentWorkstation::where('equipment_id', $receiveDataEquipment->equipment_id)
|
// Em seguida, obtenha todos os IDs de tarefas elementares de $recebeTasksForEquipment
|
||||||
->whereIn('elemental_tasks_id', $tasksArray)
|
$equipmentTasksIds = $recebeTasksForEquipment->pluck('elemental_tasks_id')->filter()->unique();
|
||||||
->whereNull('id_workstations')
|
|
||||||
->whereNull('entry_date')
|
// Agora, compare os dois conjuntos de IDs para encontrar os IDs comuns
|
||||||
|
$commonIds = $equipmentTasksIds->intersect($userTasksIds);
|
||||||
|
|
||||||
|
//recebe as tarefas que a Ws atual pode fazer.
|
||||||
|
$divisionElementalTasks = [
|
||||||
|
1 => $commonIds->all(),
|
||||||
|
];
|
||||||
|
|
||||||
|
// IDs que estão em $recebeTasksForEquipment mas não em $userTasks
|
||||||
|
$uniqueEquipmentTasksIds = $equipmentTasksIds->diff($userTasksIds);
|
||||||
|
|
||||||
|
// Adicione esses IDs únicos ao array $divisionElementalTasks na chave [2]
|
||||||
|
$divisionElementalTasks[2] = $uniqueEquipmentTasksIds->all();
|
||||||
|
|
||||||
|
|
||||||
|
// Primeiro, obtenha o registro de ControlEquipmentWorkstation que não deve ter 'elemental_tasks_id' e 'departure_date' como null
|
||||||
|
$completedTasks = ControlEquipmentWorkstation::where('equipment_id', $equipment_id)
|
||||||
|
->whereNotNull('elemental_tasks_id')
|
||||||
|
->whereNotNull('departure_date')
|
||||||
|
->pluck('elemental_tasks_id')->toArray(); // Supondo que você quer apenas os IDs das tarefas
|
||||||
|
|
||||||
|
// Agora, verifique se algum desses IDs está em $divisionElementalTasks[1] e mova para $divisionElementalTasks[3]
|
||||||
|
foreach ($completedTasks as $completedTaskId) {
|
||||||
|
if (in_array($completedTaskId, $divisionElementalTasks[1])) {
|
||||||
|
// Encontre a chave do valor correspondente em [1]
|
||||||
|
$key = array_search($completedTaskId, $divisionElementalTasks[1]);
|
||||||
|
|
||||||
|
// Mova a tarefa de [1] para [3]
|
||||||
|
$divisionElementalTasks[3][$key] = $completedTaskId;
|
||||||
|
|
||||||
|
// Remova a tarefa de [1]
|
||||||
|
unset($divisionElementalTasks[1][$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$recebeTasksForEquipment->map(function ($task) use ($divisionElementalTasks) {
|
||||||
|
// Verifica se o id da tarefa está no array de tarefas que podem ser feitas
|
||||||
|
if (in_array($task->elemental_tasks_id, $divisionElementalTasks[1])) {
|
||||||
|
$task->cardType = 'card-primary';
|
||||||
|
}
|
||||||
|
// Verifica se o id da tarefa está no array de tarefas que não podem ser feitas
|
||||||
|
elseif (in_array($task->elemental_tasks_id, $divisionElementalTasks[2])) {
|
||||||
|
$task->cardType = 'card-warning';
|
||||||
|
}
|
||||||
|
// Verifica se o id da tarefa está no array de tarefas já feitas
|
||||||
|
elseif (in_array($task->elemental_tasks_id, $divisionElementalTasks[3])) {
|
||||||
|
$task->cardType = 'card-info';
|
||||||
|
}
|
||||||
|
// Se não estiver em nenhum dos arrays, define um tipo padrão (opcional)
|
||||||
|
else {
|
||||||
|
$task->cardType = 'card-warning'; // ou qualquer outra classe que você queira usar como padrão
|
||||||
|
}
|
||||||
|
|
||||||
|
return $task;
|
||||||
|
});
|
||||||
|
|
||||||
|
// dd($divisionElementalTasks);
|
||||||
|
|
||||||
|
return view('workstations.workstations', [
|
||||||
|
'receiveDataEquipment' => $receiveDataEquipment,
|
||||||
|
'receiveDataControlEquipment' => $receiveDataControlEquipment,
|
||||||
|
|
||||||
|
'recebeTasksForEquipment' => $recebeTasksForEquipment,
|
||||||
|
'divisionElementalTasks' => $divisionElementalTasks,
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
// Busca os Equipamento com base nas tarefas que a Ws atual pode fazer.
|
||||||
|
// Nao sei de ainda va ser usado apos a atualizacao.
|
||||||
|
// $equipmentTasks = DB::table('users as u')
|
||||||
|
// ->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations')
|
||||||
|
// ->join('workstations_association_tasks as wat', 'cw.id_workstations', '=', 'wat.id_workstations')
|
||||||
|
// ->join('equipments as e', 'wat.company_projects_id', '=', 'e.company_projects_id')
|
||||||
|
// ->join('ordered_equipment_tasks as oet', 'e.equipment_id', '=', 'oet.equipment_id')
|
||||||
|
// ->where('u.email', $userEmail->email)
|
||||||
|
// ->select('e.equipment_id', 'e.equipment_tag', DB::raw('GROUP_CONCAT(DISTINCT COALESCE(oet.elemental_tasks_id, oet.further_tasks_id) ORDER BY oet.execution_order) AS equipment_all_tasks'))
|
||||||
|
// ->groupBy('e.equipment_id', 'e.equipment_tag')
|
||||||
|
// ->orderBy('e.equipment_id', 'ASC')
|
||||||
|
// ->get();
|
||||||
|
// Convertendo as tarefas do usuário(WS) em um array
|
||||||
|
// $tasksArray = explode(',', $userTasks->pluck('all_tasks')->first());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function cancelElementalTaskForEquipment($equipmentID)
|
||||||
|
{
|
||||||
|
//Nesta funcao se o utilizador da Ws apenas o botao de cancelar na view principal,o equipamento deve se desvincular na Ws atual e poder ser selecionado por outra.
|
||||||
|
$receiveDataEquipment = Equipment::where('equipment_id', $equipmentID)->first();
|
||||||
|
|
||||||
|
$existingControlEquipment = ControlEquipmentWorkstation::where('equipment_id', $receiveDataEquipment->equipment_id)
|
||||||
|
->whereNull('elemental_tasks_id')
|
||||||
->whereNull('departure_date')
|
->whereNull('departure_date')
|
||||||
->first();
|
->first();
|
||||||
|
$existingControlEquipment->delete();
|
||||||
// Se encontrar um dado que satisfaca as verificacoes acima deve implementar a tarefa para esta WS.
|
return redirect(route('enterWorkstation'));
|
||||||
if ($controlEquipmentWorkstation) {
|
|
||||||
|
|
||||||
$controlEquipmentWorkstation->id_workstations = $findDataWs->id_workstations;
|
|
||||||
$controlEquipmentWorkstation->entry_date = now();
|
|
||||||
$controlEquipmentWorkstation->save();
|
|
||||||
|
|
||||||
$receiveDataElementalTask = ElementalTasks::find($controlEquipmentWorkstation->elemental_tasks_id);
|
|
||||||
|
|
||||||
//Returning the values to a view "values"
|
|
||||||
return view('workstations.workstations', [
|
|
||||||
'receiveDataElementalTask' => $receiveDataElementalTask,
|
|
||||||
'receiveDataEquipment' => $receiveDataEquipment,
|
|
||||||
'control_ew_id' => $controlEquipmentWorkstation->control_equipment_workstation_id,
|
|
||||||
'task_todo' => $controlEquipmentWorkstation->elemental_tasks_id
|
|
||||||
]);
|
|
||||||
} else
|
|
||||||
|
|
||||||
//cria a nova linha
|
|
||||||
$equipmentData = DB::select('CALL ManageEquipmentTasks(?, ?)', [$userEmail->email, $equipment_id]);
|
|
||||||
|
|
||||||
// //Saving the values to a variable
|
|
||||||
if (count($equipmentData) > 0) {
|
|
||||||
$control_ew_id = $equipmentData[0]->control_ew_id;
|
|
||||||
$task_todo = $equipmentData[0]->task_todo;
|
|
||||||
} else {
|
|
||||||
//It should always exist, but you never know :)
|
|
||||||
$control_ew_id = null;
|
|
||||||
$task_todo = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recebe os dados de cada Tarefa Elementar.
|
|
||||||
|
|
||||||
$recebeDataControlId = ControlEquipmentWorkstation::find($control_ew_id);
|
|
||||||
|
|
||||||
// Quando se da Refreash a pagina me devolve um erro de laravel pois o $recebeDataControlId e Null , pois claramente ja foi feita seus scripts e apos o refreash nao e feito denovo, sendo assim e melhor perder os dados criados e fazer novamente do que ter erros de lAravel :D
|
|
||||||
if ($recebeDataControlId == NULL) {
|
|
||||||
|
|
||||||
$deleteDataControlWhereRefreashPage = ControlEquipmentWorkstation::where('id_workstations', $findDataWs->id_workstations)
|
|
||||||
->where('equipment_id', $receiveDataEquipment->equipment_id)
|
|
||||||
->whereNotNull('entry_date')
|
|
||||||
->whereNull('departure_date')
|
|
||||||
->first();
|
|
||||||
// dd($deleteDataControlWhereRefreashPage);
|
|
||||||
|
|
||||||
if ($deleteDataControlWhereRefreashPage) {
|
|
||||||
$deleteDataControlWhereRefreashPage->id_workstations = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->entry_date = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->departure_date = null;
|
|
||||||
$deleteDataControlWhereRefreashPage->save();
|
|
||||||
}
|
|
||||||
return redirect()->route('enterWorkstation');
|
|
||||||
} else
|
|
||||||
|
|
||||||
$receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id);
|
|
||||||
|
|
||||||
|
|
||||||
//Deve recupar os dados da tarefa Atual quando receber o control_id
|
|
||||||
|
|
||||||
//Returning the values to a view "values"
|
|
||||||
return view('workstations.workstations', [
|
|
||||||
'receiveDataElementalTask' => $receiveDataElementalTask,
|
|
||||||
'receiveDataEquipment' => $receiveDataEquipment,
|
|
||||||
'control_ew_id' => $control_ew_id,
|
|
||||||
'task_todo' => $task_todo
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,7 @@ public function compose(View $view)
|
||||||
|
|
||||||
$workstationName = $workstationNameQuery[0]->nomenclature_workstation;
|
$workstationName = $workstationNameQuery[0]->nomenclature_workstation;
|
||||||
|
|
||||||
|
|
||||||
//Counting of equipments
|
//Counting of equipments
|
||||||
$equipmentsTodoCount = count($equipmentsTodo);
|
$equipmentsTodoCount = count($equipmentsTodo);
|
||||||
$equipmentsDoneCount = count($equipmentsDone);
|
$equipmentsDoneCount = count($equipmentsDone);
|
||||||
|
|
|
||||||
21044
public/assets/dist/css/adminlte.css
vendored
21044
public/assets/dist/css/adminlte.css
vendored
File diff suppressed because it is too large
Load Diff
3
public/assets/dist/css/adminlte.min.css
vendored
Executable file → Normal file
3
public/assets/dist/css/adminlte.min.css
vendored
Executable file → Normal file
File diff suppressed because one or more lines are too long
|
|
@ -11,8 +11,11 @@
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
|
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
|
||||||
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="{{ URL::asset('assets/plugins/fontawesome-free/css/all.min.css') }}">
|
{{-- <link rel="stylesheet" href="{{ URL::asset('assets/plugins/fontawesome-free/css/all.min.css') }}"> --}}
|
||||||
|
<link rel="stylesheet" href="{{ asset('assets/plugins/fontawesome-6.4.2/css/all.css') }}">
|
||||||
|
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- Tempusdominus Bootstrap 4 -->
|
<!-- Tempusdominus Bootstrap 4 -->
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
62
resources/views/testDataTables.blade.php
Normal file
62
resources/views/testDataTables.blade.php
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
@section('Main-content')
|
||||||
|
<h2>test</h2>
|
||||||
|
|
||||||
|
<input type="hidden" value="98" id="receiveNumberProject">
|
||||||
|
|
||||||
|
|
||||||
|
<table id="showProjectEquipment" class="display">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<th>Tag</th>
|
||||||
|
<th>Fabrica</th>
|
||||||
|
<th>Tipo</th>
|
||||||
|
<th>acao</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
var numberProject = $('#receiveNumberProject').val();
|
||||||
|
|
||||||
|
$('#showProjectEquipment').DataTable({
|
||||||
|
processing: true,
|
||||||
|
serverSide: true,
|
||||||
|
ajax: {
|
||||||
|
url: '{{ route('getDataEquipment') }}',
|
||||||
|
type: 'GET',
|
||||||
|
data: {
|
||||||
|
'numberProject': numberProject
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columns: [{
|
||||||
|
data: 'equipment_id',
|
||||||
|
name: 'equipment_id'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'equipment_tag',
|
||||||
|
name: 'equipment_tag'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'unit_id',
|
||||||
|
name: 'unit_id'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'equipment_type_id',
|
||||||
|
name: 'equipment_type_id'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'action',
|
||||||
|
name: 'action',
|
||||||
|
orderable: false,
|
||||||
|
searchable: false
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
@extends('Templates.templateWorkstations')
|
@extends('Templates.templateWorkstations')
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<div class="row justify-content-center align-items-center" style="height: 50vh">
|
<div class="row justify-content-center align-items-center" style="height: 50vh">
|
||||||
|
|
@ -20,4 +21,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
5890
resources/views/workstations/workstation.php.bak
Normal file
5890
resources/views/workstations/workstation.php.bak
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -30,6 +30,20 @@
|
||||||
use App\Http\Controllers\WorkstationsJobsController;
|
use App\Http\Controllers\WorkstationsJobsController;
|
||||||
use App\Http\Controllers\LanguageController;
|
use App\Http\Controllers\LanguageController;
|
||||||
|
|
||||||
|
|
||||||
|
Route::get('test', function () {
|
||||||
|
return view('testDataTables');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::get('cancelElementalTaskForEquipment/{equipmentID}', [WorkstationsJobsController::class,'cancelElementalTaskForEquipment'])->name('cancelElementalTaskForEquipment');
|
||||||
|
|
||||||
|
Route::get('test2/{projectID}/{equipmentID}',[ExecutionProjectController::class,'test11'])->name('test11');
|
||||||
|
|
||||||
|
|
||||||
|
Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment');
|
||||||
|
|
||||||
|
// Route::get('test/{id}',[ExecutionProjectController::class, 'test11'])->name('test11');
|
||||||
|
|
||||||
Route::post('language/switch', [LanguageController::class, 'switchLanguage'])->name('language.switch');
|
Route::post('language/switch', [LanguageController::class, 'switchLanguage'])->name('language.switch');
|
||||||
|
|
||||||
// Esta rota so pode aceder quem tiver o link atravez do email
|
// Esta rota so pode aceder quem tiver o link atravez do email
|
||||||
|
|
@ -43,6 +57,7 @@
|
||||||
->name('verification.verify');
|
->name('verification.verify');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Web Routes
|
| Web Routes
|
||||||
|
|
@ -106,6 +121,7 @@
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Route::controller(CreateProjectController::class)
|
Route::controller(CreateProjectController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user