diff --git a/.env b/.env index f5fb8331..9a6b3bc2 100755 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ APP_NAME="ISPT4.0" APP_ENV=local APP_KEY=base64:ahx5/AvVGu/iHQx1mjX/EQg4m1NHLvtjzb6pFa49TlE= -APP_DEBUG=true +APP_DEBUG=false APP_URL=http://localhost APP_VERSION = "1.0.0" diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index 09831820..5e34876f 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -71,6 +71,8 @@ public function getEquipmentsOfAmbit(Request $request) public function showReportingForAmbitsProjectPdf($ambitId, $projectId) { // Obter o caminho da imagem do usuário ou uma imagem padrão + + // Primeiro precisa identificar se quem esta a visualizar o relatorio e o Admin ou o Cliente $userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg'); // Pega a data e hora atual @@ -236,15 +238,27 @@ public function getDataEquipmentsOfProject(Request $request) $dataEquipentProject = $query->get(); - // Retornar a resposta para o DataTables + // // Retornar a resposta para o DataTables + // return Datatables::of($dataEquipentProject) + + // // ->addColumn('action', function ($dataEquipment) { + // // $actionBtn = ''; + // // return $actionBtn; + // // }) + // ->addColumn('action', function ($dataEquipment) { + // $actionBtn = ''; + // return $actionBtn; + // }) + + // ->make(true); + return Datatables::of($dataEquipentProject) + ->addColumn('action', function ($dataEquipment) use ($projectId) { // Use a palavra-chave 'use' para passar $projectId + $actionBtn = ''; + return $actionBtn; + }) + ->make(true); - ->addColumn('action', function ($dataEquipment) { - $actionBtn = ''; - return $actionBtn; - }) - - ->make(true); @@ -374,7 +388,7 @@ public function reportingDataClient($clientID = null) ->orderBy('year', 'desc') ->pluck('year'); - return view('userClient.reportingDataClient', compact('clientID','allPlantsClient', 'yearsProjects')); + return view('userClient.reportingDataClient', compact('clientID', 'allPlantsClient', 'yearsProjects')); } diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 77a06ded..d95b570e 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -706,54 +706,27 @@ public function showStep1($company_projects_id) // Se forem alterados dados dos Detalhes da Obra, vai ser alterado public function EditprocessStep1(Request $request) { - dd($request); // Validação... - $installationId = $request->input('installation_id'); - - if ($installationId <> null && $installationId == 'new_install') { - - // Criar uma nova instalação... - $newInstallation = new Plant; - - $newInstallation->plant_name = $request->input('new_company_name'); - $newInstallation->plant_address = $request->input('new_company_address'); - $newInstallation->user_id = $request->input('user_id'); - - $newInstallation->save(); - - // Use o id da nova instalação. - $installationId = $newInstallation->plant_id; - } - - $receiveDetailsPlant = Plant::where('plant_name', $request->plant_id_present)->first(); - - // $project = new CompanyProject; + $project = CompanyProject::where('company_projects_id', $request->projectId)->first(); $project->company_project_description = $request->input('description_project'); - $project->project_ispt_number = $request->input('n_project_ispt'); $project->project_company_number = $request->input('project_company_number'); - $project->project_ispt_responsible = $request->input('responsible_project_ispt'); $project->project_company_responsible = $request->input('responsible_project_company'); + $project->project_ispt_number = $request->input('n_project_ispt'); + $project->project_ispt_responsible = $request->input('responsible_project_ispt'); - - // Verifica se e igual a nulo , se for usa a data ja existente - if ($request->date_started === null) { - $project->date_started = $request->input('date_started_present'); - } else + //Verifica se exsite uma nova data, se existe atualiza o projecto com a nova, se nao existir usa a antiga + if($request->date_started <> null){ $project->date_started = $request->input('date_started'); - - $project->plant_id = $receiveDetailsPlant->plant_id; - $project->order_project = 1; + } else { + $project->date_started = $request->input('date_started_present'); + } $project->save(); session(['form_data.step1' => $request->all()]); - // // Redirecione o Utilizador para a próxima etapa - // return redirect('/articulated_2') - // ->with('project', $project) - // ->with('success', 'Dados guardados com sucesso'); return redirect()->route('articulated_2', ['id' => $project->company_projects_id]) ->with('success', 'Detalhes do Project atualizados!'); } @@ -807,57 +780,49 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) public function processStep1(Request $request) { - - dd($request); + //NAO DEVE SER CRIAR UMA NOVA EMPRESA NA CRIACAO DA OBRA (era uma boa ideia para facilitar ao Admin ter que criar a empresa para Depois a Obra, mas e necessario pelo facto da autentificao de 2 factores e envio e email , entao devido essa adicoes, nao preciso atualmente fazer sentido criar isto) + // Dito isto vamos sempre pensar que o Cliente ja deve estar criado , para ser feita uma Obra para o mesmo. + // dd($request); // Validação... - $installationId = $request->input('installation_id'); - if ($installationId <> null && $installationId == 'new_install') { + if ($request->input('installation_id')) { - // Criar uma nova instalação... - $newInstallation = new Plant; + $installationId = $request->input('installation_id'); + - $newInstallation->plant_name = $request->input('new_company_name'); - $newInstallation->plant_address = $request->input('new_company_address'); - $newInstallation->user_id = $request->input('user_id'); + //Para criar uma nova instalacao + if ($installationId <> null && $installationId == 'new_install') { - $newInstallation->save(); + // Criar uma nova instalação... + $newInstallation = new Plant; - // Use o id da nova instalação. - $installationId = $newInstallation->plant_id; + $newInstallation->plant_name = $request->input('new_company_name'); + $newInstallation->plant_address = $request->input('new_company_address'); + $newInstallation->user_id = $request->input('user_id'); + + $newInstallation->save(); + + // Use o id da nova instalação. + $installationId = $newInstallation->plant_id; + } } + $receiveDetailsPlant = Plant::where('plant_id', $installationId)->first(); - $receiveDetailsPlant = Plant::where('plant_name', $request->plant_id_present)->first(); - - // $project = new CompanyProject; - $project = CompanyProject::where('company_projects_id', $request->projectId)->first(); - + //Code apenas para criacao de Obra sem criar instlacao ou empresa + $project = new CompanyProject; $project->company_project_description = $request->input('description_project'); $project->project_ispt_number = $request->input('n_project_ispt'); $project->project_company_number = $request->input('project_company_number'); $project->project_ispt_responsible = $request->input('responsible_project_ispt'); $project->project_company_responsible = $request->input('responsible_project_company'); - - - // Verifica se e igual a nulo , se for usa a data ja existente - if ($request->date_started === null) { - $project->date_started = $request->input('date_started_present'); - } else - $project->date_started = $request->input('date_started'); - $project->plant_id = $receiveDetailsPlant->plant_id; $project->order_project = 1; + $project->date_started = $request->input('date_started'); $project->save(); - session(['form_data.step1' => $request->all()]); - - // // Redirecione o Utilizador para a próxima etapa - // return redirect('/articulated_2') - // ->with('project', $project) - // ->with('success', 'Dados guardados com sucesso'); return redirect()->route('articulated_2', ['id' => $project->company_projects_id]) - ->with('success', 'Detalhes do Project atualizados!'); + ->with('success', 'Project criado com sucesso!'); } public function showStep2($company_projects_id) diff --git a/app/Http/Controllers/PreparedProjectController.php b/app/Http/Controllers/PreparedProjectController.php index 13990910..3f6bdb37 100755 --- a/app/Http/Controllers/PreparedProjectController.php +++ b/app/Http/Controllers/PreparedProjectController.php @@ -14,15 +14,30 @@ use App\Models\Unit; use App\Models\AmbitsEquipment; +use PDF; + class PreparedProjectController extends Controller { + public function showDetailsEquipmentForQrCode($equipmentId,$projectId){ + // dd($equipmentId); + $detailsEquipment = Equipment::find($equipmentId); + // dd($detailsEquipment); + + $pdf = PDF::loadView('projectsClients.showDetailsEquipmentForQrCodePdf',[ + 'detailsEquipment' => $detailsEquipment + ]) + ->setPaper('a4'); + return $pdf->stream('teste.pdf'); + } + public function PreparedProject($ProjectId) { $numberProject = CompanyProject::find($ProjectId); $equipmentsProjects = Equipment::all()->where('company_projects_id', $ProjectId); + $equipmentsTypes = EquipmentType::all(); //Retorna todas as Fabricas Unit, com base na Instalação @@ -33,6 +48,7 @@ public function PreparedProject($ProjectId) ->where('company_projects.company_projects_id', '=', $numberProject->company_projects_id) ->get(); + // dd($equipmentsProjects); return view('projectsClients/preparedProject') // ->with('equipmentsProjects', $equipmentsProjects) ->with('equipmentsTypes', $equipmentsTypes) diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index 43839924..70c67c9c 100755 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -3,11 +3,13 @@ namespace App\Http\Controllers; use App\Models\AmbitsEquipment; +use App\Models\ControlEquipmentWorkstation; use App\Models\ElementalTasks; use App\Models\EquipmentAssociationAmbit; use App\Models\EquipmentWorkHistory; use App\Models\TasksAssociationAmbits; use App\Models\Unit; +use App\Models\workstationsTaskAnswers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -34,38 +36,105 @@ class ProjectoDatacontroller extends Controller public function showAmbitDetailsProjectHistory($projectID, $equipmentID) { - $detailsProject = CompanyProject::where('company_projects_id', $projectID)->first(); + $detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID) ->where('company_projects_id', $projectID)->first(); + + $detalsEquipment = Equipment::where('equipment_id',$equipmentID)->first(); + + $receiveAllTasksHistiory = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get(); + + $receiveAllTasksEquipmentInHistory = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get(); + $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->first(); - // $tasksAssociatedWithAmbit = TasksAssociationAmbits::where('ambits_equipment_id', $receiveAmbit->ambits_id)->get(); $tasksAssociatedWithAmbit = TasksAssociationAmbits::with('elementalTask') ->where('ambits_equipment_id', $receiveAmbit->ambits_id) ->get(); - foreach ($tasksAssociatedWithAmbit as $taskAssociation) { - if ($taskAssociation->elementalTask) { - // Adiciona diretamente ao objeto TasksAssociationAmbits - $taskAssociation->elemental_task_description = $taskAssociation->elementalTask->elemental_tasks_description; - } else { - // Defina como null ou algum valor padrão se não houver tarefa elementar associada - $taskAssociation->elemental_task_description = null; - } + foreach ($tasksAssociatedWithAmbit as $taskAssociation) { + if ($taskAssociation->elementalTask) { + // Adiciona diretamente ao objeto TasksAssociationAmbits + $taskAssociation->elemental_task_description = $taskAssociation->elementalTask->elemental_tasks_description; + } else { + // Defina como null ou algum valor padrão se não houver tarefa elementar associada + $taskAssociation->elemental_task_description = null; } - - // Agora cada objeto dentro de $tasksAssociatedWithAmbit tem uma propriedade 'elemental_task_description'. - + } + $receiveAllTasksHistiory = ControlEquipmentWorkstation::with('workstationsTaskAnswers') + ->where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id) + ->whereNotNull('entry_date') // Verifica se 'entry_date' não é null + ->whereNotNull('departure_date') // Verifica se 'departure_date' não é null + ->has('workstationsTaskAnswers') // Garante que haja pelo menos uma 'workstationsTaskAnswers' relacionada + ->get(); + + foreach ($receiveAllTasksHistiory as $taskHistory) { + $taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle' + + // Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir + $workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first(); + + if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) { + // Decodifica o JSON para um array + $answersArray = json_decode($workstationTaskAnswer->answer_json, true); + + // Cria um array associativo onde as chaves são as perguntas e os valores são as respostas + $formattedAnswers = []; + foreach ($answersArray as $item) { + if (isset($item['question']) && isset($item['value'])) { + $formattedAnswers[$item['question']] = $item['value']; + } + } + + // Atribui o array formatado ao taskHistory + $taskHistory->formatted_answers = $formattedAnswers; + } else { + // Se não houver respostas, define formatted_answers como um array vazio ou null + $taskHistory->formatted_answers = []; + } + + if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) { + // Converte para instâncias de Carbon + $entryDate = \Carbon\Carbon::parse($taskHistory->entry_date); + $departureDate = \Carbon\Carbon::parse($taskHistory->departure_date); + + // Calcula a diferença em minutos, horas e dias + $diffInMinutes = $entryDate->diffInMinutes($departureDate); + $diffInHours = $entryDate->diffInHours($departureDate); + $diffInDays = $entryDate->diffInDays($departureDate); + + // Se a diferença for menos de uma hora + if ($diffInMinutes < 60) { + $taskHistory->runtime = $diffInMinutes . ' minutos'; + } + // Se a diferença for menos de 24 horas mas mais que uma hora + else if ($diffInHours < 24) { + $taskHistory->runtime = $diffInHours . ' horas'; + } + // Se for mais de 24 horas + else { + // Calcula horas restantes após contar os dias + $remainingHours = $diffInHours % 24; + $taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas'; + } + } else { + $taskHistory->runtime = 'N/A'; // Ou qualquer valor padrão que você prefira + } + } + // Nao esta a receber itens + // dd($allWorkstationsTaskAnswers); + // Agora cada objeto dentro de $tasksAssociatedWithAmbit tem uma propriedade 'elemental_task_description'. //buscar Tarfas e tempo de execussao pelo control, assim como suas respostas. + // dd($receiveAmbit); - return view('projectsClients.showAmbitDetailProjectHistory', compact('detailsProject','receiveAmbit')); + return view('projectsClients.showAmbitDetailProjectHistory', compact('detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory','detalsEquipment')); } diff --git a/app/Livewire/Execução/EquipmentsDashboard.php b/app/Livewire/Execução/EquipmentsDashboard.php index 11e443f7..f2678def 100755 --- a/app/Livewire/Execução/EquipmentsDashboard.php +++ b/app/Livewire/Execução/EquipmentsDashboard.php @@ -2,6 +2,7 @@ namespace App\Livewire\Execução; +use App\Models\EquipmentWorkHistory; use Livewire\Component; use Livewire\Exceptions\PublicPropertyNotFoundException; use App\Models\Equipment; @@ -93,7 +94,11 @@ public function refreshDataEquipments($datasProject) $this->equivalentUnstarted = 0; - $totalEquipments = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get(); + $totalEquipments = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); + + // $detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID) + // ->where('company_projects_id', $projectID)->first(); + // Busca o valor total de todos os equipamentos encontrados $this->totalEquipmentsCount = $totalEquipments->count(); @@ -102,13 +107,13 @@ public function refreshDataEquipments($datasProject) foreach ($totalEquipments as $equipment) { // Conta quantas vezes o equipamento aparece em OrderEquipmentTasks - $tasksCount = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->count(); + $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 quantos dados tem para o mesmo equipamento, resumindo quantas tarefas ja vez e seu circuito ao longo de seu Ambito - $controlCount = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->count(); + $controlCount = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count(); // Verifica inicialmente se a quantido de vezes que tal equipamento apacere na ControlEquipmentWorkstation e o mesmo numero de vezes que aparece na tabela : OrderEquipmentTasks // Isto para ver se o ciclo foi correto sem retornos se os 2 valores forem iguais significa que o equipamento foi concluido. @@ -120,7 +125,7 @@ public function refreshDataEquipments($datasProject) // ->count() >= $tasksCount // ) { - if (ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id) + 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') @@ -135,7 +140,7 @@ public function refreshDataEquipments($datasProject) $this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array $this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id]; - } elseif (ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->exists()) { + } elseif (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->exists()) { $this->inProgress++; $this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id]; } else { diff --git a/app/Livewire/Execução/TasksDashboard.php b/app/Livewire/Execução/TasksDashboard.php index 34dbc896..1faf1d78 100755 --- a/app/Livewire/Execução/TasksDashboard.php +++ b/app/Livewire/Execução/TasksDashboard.php @@ -3,6 +3,7 @@ namespace App\Livewire\Execução; use App\Models\Equipment; +use App\Models\EquipmentWorkHistory; use App\Models\OrderEquipmentTasks; use App\Models\ControlEquipmentWorkstation; use App\Models\ElementalTasks; @@ -17,16 +18,16 @@ class TasksDashboard extends Component // protected $receiveTasksRepository; public $receiveElementalTasks; // Recebe todas as acoes ja feitas atualmente por tarefa - public $receiveElementalTasksAll;// Recebe o total de tarefas que vamos fazer + public $receiveElementalTasksAll; // Recebe o total de tarefas que vamos fazer public $countElementalTasks; public $countElementalTasksAll; public $lastUpdated; - + // Por enquanto nao ira usar, vamos deixar // public $receiveAllFurtherTasks; - + // Deveria funcionar para receber o Repositorio. // public function initialize() @@ -61,7 +62,7 @@ public function showPercentageElementalTasks() $this->dispatch('refreshPercentageElementalTasks', [ 'receiveElementalTasks' => $this->receiveElementalTasks, 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, - 'countElementalTasksAll'=> $this->countElementalTasksAll + 'countElementalTasksAll' => $this->countElementalTasksAll ]); } @@ -70,7 +71,7 @@ public function mount($datasProject) $this->datasProject = $datasProject; // Obter todos os equipamentos relacionados ao projeto - $receiveEquipmentsProject = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get(); + $receiveEquipmentsProject = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); $elementalTasks = collect(); $furtherTasks = collect(); @@ -80,7 +81,7 @@ public function mount($datasProject) foreach ($receiveEquipmentsProject as $equipment) { // Obter todas as OrderEquipmentTasks relacionadas a este equipamento - $relatedTasks = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->get(); + $relatedTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->get(); // Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id $elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique(); @@ -99,13 +100,22 @@ public function mount($datasProject) } $this->receiveElementalTasksAll = $elementalTasksCountsAll; + // Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation - $elementalTasksCount1 = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks)->get()->countBy('elemental_tasks_id'); $furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id'); + + $tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks) + ->distinct('equipmentWorkHistorys_id', 'elemental_tasks_id') // Obter combinações únicas + ->get(['equipmentWorkHistorys_id', 'elemental_tasks_id']) // Selecionar apenas os campos necessários + ->groupBy('elemental_tasks_id') // Agrupar pelo ID da tarefa elemental + ->map(function ($group) { + return $group->unique('equipmentWorkHistorys_id')->count(); // Contar ocorrências únicas por equipmentWorkHistorys_id + }); + $newArray = []; - foreach ($elementalTasksCount1 as $taskId => $count) { + foreach ($tasksCount as $taskId => $count) { $task = ElementalTasks::find($taskId); if ($task) { $newArray[$task->elemental_tasks_code] = $count; @@ -126,17 +136,16 @@ public function mount($datasProject) // Agora, $newArray contém a contagem de tasks por elemental_tasks_code $this->receiveElementalTasksAll = $newArray1; - + // Criar o contador para receber o valor total. - $this->countElementalTasksAll =array_sum($this->receiveElementalTasksAll); + $this->countElementalTasksAll = array_sum($this->receiveElementalTasksAll); - $this->lastUpdated = now()->format('Y-m-d H:i'); + $this->lastUpdated = now()->format('Y-m-d H:i'); } - - public function refreshDataEquipments($datasProject) + public function refreshDataEquipments($datasProject) { } diff --git a/app/Models/ControlEquipmentWorkstation.php b/app/Models/ControlEquipmentWorkstation.php index a2c1000e..ca4c08b0 100755 --- a/app/Models/ControlEquipmentWorkstation.php +++ b/app/Models/ControlEquipmentWorkstation.php @@ -13,7 +13,7 @@ class ControlEquipmentWorkstation extends Model protected $table = 'control_equipment_workstation'; - protected $primaryKey = 'control_equipment_workstation_id'; + protected $primaryKey = 'control_equipment_workstation_id'; // protected $primaryKey = 'id'; @@ -22,20 +22,24 @@ public function equipment() return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id'); } - public function equipmentWorkHistory(){ - return $this->belongsTo(EquipmentWorkHistory::class,'equipmentWorkHistorys_id','equipmentWorkHistorys_id'); + public function equipmentWorkHistory() + { + return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id'); } public function elementalTask() { - return $this->belongsTo(ElementalTasks::class,'elemental_tasks_id','elemental_tasks_id'); + return $this->belongsTo(ElementalTasks::class, 'elemental_tasks_id', 'elemental_tasks_id'); } public function furtherTasks() { - return $this->belongsTo(FurtherTasks::class,'further_tasks_id','further_tasks_id'); + return $this->belongsTo(FurtherTasks::class, 'further_tasks_id', 'further_tasks_id'); + } + public function workstationsTaskAnswers() + { + return $this->hasMany(workstationsTaskAnswers::class, 'control_equipment_workstation_id', 'control_equipment_workstation_id'); } - } diff --git a/resources/views/livewire/execução/equipments-dashboard.blade.php b/resources/views/livewire/execução/equipments-dashboard.blade.php index c56e2898..d1bfc636 100755 --- a/resources/views/livewire/execução/equipments-dashboard.blade.php +++ b/resources/views/livewire/execução/equipments-dashboard.blade.php @@ -18,12 +18,12 @@
Total de ações para concluir todos os equipamentos da obra.
Total de equipamentos e os seus estados actuais.
diff --git a/resources/views/livewire/execução/tasks-dashboard.blade.php b/resources/views/livewire/execução/tasks-dashboard.blade.php index 189ea7a3..8c12b6a8 100755 --- a/resources/views/livewire/execução/tasks-dashboard.blade.php +++ b/resources/views/livewire/execução/tasks-dashboard.blade.php @@ -18,193 +18,253 @@Total de acções já realizadas de acordo com a tarefa.
Total de acções a serem realizadas por tarefa.
Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+Data: {{ $task_todo->entry_date }}
+Tempo de execução: {{ $task_todo->runtime }}
+
--}}
+
--}}
+
--}}
+