adjustments in parts of the code and implementation of the workstations

This commit is contained in:
ygbanzato 2023-07-03 11:46:11 +01:00
parent d83552e106
commit 4e737a48bd
18 changed files with 5460 additions and 2319 deletions

View File

@ -18,12 +18,224 @@
use App\Models\PendingEquipment; use App\Models\PendingEquipment;
use App\Models\AmbitsEquipment; use App\Models\AmbitsEquipment;
use App\Models\EquipmentAssociationAmbit; use App\Models\EquipmentAssociationAmbit;
use App\Models\ConstructionWorkstation;
use App\Models\OrderEquipmentTasks;
use App\Models\FurtherTasks;
use App\Models\WorkstationsAssociationTasks;
class CreateProjectController extends Controller class CreateProjectController extends Controller
{ {
public function deleteWorkstation($name)
{
$workstation = ConstructionWorkstation::where('name_workstations', $name)->first();
if ($workstation) {
$workstation->delete();
return back()->with('success', 'Posto de Trabalho removido com sucesso!');
}
return back()->with('danger', 'Posto de Trabalho não encontrado!');
}
public function AddNomenclatureWorkstation(Request $request)
{
foreach ($request->nameWorkstations as $key => $value) {
// Procurar a Workstation pelo ID
$workstation = ConstructionWorkstation::where('name_workstations', $key)
->first();
if ($workstation) {
// Atualizar o valor do campo nomenclature_workstation
$workstation->nomenclature_workstation = $value;
$workstation->save();
}
}
// Redirecionar de volta com uma mensagem de sucesso
return back()->with('success', 'Nome da estação de trabalho atualizado com sucesso!');
}
public function removeProjectEquipment(Request $request)
{
$equipment = Equipment::find($request->EquipmentID);
if ($request->removalType == 'total') {
$equipment->delete();
return back()->with('success', 'Equipamento Excluido com sucesso!');
} else
$equipment->company_projects_id = null;
$equipment->save();
return back()->with('success', 'Equipamento retirado da obra !');
}
public function EditEquipmentsProjects(Request $request)
{
// dd($request);
// Localiza o equipment pelo numberProject
$equipment = Equipment::find($request->equipmentId);
// Atualiza os campos
$equipment->equipment_tag = $request->tag;
$equipment->equipment_description = $request->equipmentDescription;
$equipment->equipment_serial_number = $request->serialNumberEquipment;
$equipment->equipment_brand = $request->equipmentBrand;
$equipment->equipment_model = $request->equipmentModel;
$equipment->save();
if ($request->input('attributes')) {
foreach ($request->input('attributes') as $key => $value) {
// Verifica se o valor é null e a chave é um número (correspondendo aos general_attributes_equipment_id)
if ($value == null && is_numeric($key)) {
// Procura o registro relevante em SpecificAttributesEquipmentType
$specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $request->equipmentId)
->where('general_attributes_equipment_id', $key)
->first();
// Se o registro existir, o deleta
if ($specificAttributes) {
$specificAttributes->delete();
}
}
// Se o valor não for null, atualiza ou cria um novo registro
elseif ($value !== null && is_numeric($key)) {
// Procura o registro relevante em SpecificAttributesEquipmentType
$specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $request->equipmentId)
->where('general_attributes_equipment_id', $key)
->first();
// Se o registro existir, atualiza o valor
if ($specificAttributes) {
$specificAttributes->specific_attributes_value = $value;
$specificAttributes->save();
}
// Se não existir, cria um novo
else {
// Cria um novo registro em SpecificAttributesEquipmentType
$specificAttributes = new SpecificAttributesEquipmentType();
$specificAttributes->equipment_id = $request->equipmentId;
$specificAttributes->equipment_type_id = $equipment->equipment_type_id;
$specificAttributes->general_attributes_equipment_id = $key;
$specificAttributes->specific_attributes_value = $value;
$specificAttributes->save();
}
}
}
}
$executionOrder = 1; // Inicia a contagem da ordem de execução
foreach ($request->input('ordemTasks') as $key => $value) {
// Procura o registro relevante em OrderEquipmentTasks
$orderEquipmentTask = OrderEquipmentTasks::where('equipment_id', $request->equipmentId)
->where('elemental_tasks_id', $key)
->first();
// Se o valor é 'on'
if ($value === "on") {
// Se o registro não existir, cria um novo
if (!$orderEquipmentTask) {
$orderEquipmentTask = new OrderEquipmentTasks();
$orderEquipmentTask->equipment_id = $request->equipmentId;
$orderEquipmentTask->elemental_tasks_id = $key;
}
// Atualiza a ordem de execução independentemente do registro ser novo ou não
$orderEquipmentTask->execution_order = $executionOrder;
$orderEquipmentTask->save();
// Incrementa a ordem de execução para o próximo 'on'
$executionOrder++;
}
// Se o valor é 'off' e o registro existir, o deleta
elseif ($value === "off" && $orderEquipmentTask) {
$orderEquipmentTask->delete();
}
}
// Atualiza a ordem de execução dos restantes 'on' após as remoções
$remainingOrderEquipmentTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId)
->where('execution_order', '>=', $executionOrder)
->orderBy('execution_order', 'asc')
->get();
foreach ($remainingOrderEquipmentTasks as $orderEquipmentTask) {
$orderEquipmentTask->execution_order = $executionOrder;
$orderEquipmentTask->save();
$executionOrder++;
}
// Obtém todas as tarefas na ordem correta
$orderTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId)
->orderBy('execution_order', 'asc')
->get();
// Cria uma matriz associativa para armazenar o elemental_tasks_id e o execution_order
$taskExecutionOrders = [];
foreach ($orderTasks as $task) {
$taskExecutionOrders[$task->elemental_tasks_id] = $task->execution_order;
}
// Retorna uma resposta
return redirect()->route('test2', ['id' => $request->numberProject])
->with('success', 'Equipamento ' . $equipment->equipment_tag . ' Editado com Sucesso!!!')
->with('taskExecutionOrders', $taskExecutionOrders);
}
public function showJson($id)
{
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $id)->get();
$OrdemTasks = OrderEquipmentTasks::where('equipment_id', $id)->get();
return response()->json([
'attributes' => $attributes,
'OrdemTasks' => $OrdemTasks
]);
}
public function createWorkStations(Request $request)
{
// Pega o número de estações de trabalho do request
$numberWorkstations = $request->numberWorkstations;
// Pega o número do projeto do request
$numberProject = $request->numberProject;
$listWorkstations = ConstructionWorkstation::where('company_projects_id', $numberProject)->get();
// Pega o último elemento da lista
$lastWorkstation = $listWorkstations->last();
// Se houver uma estação de trabalho anterior, extrai o número dela
$startNumber = 1;
if ($lastWorkstation) {
$parts = explode('-', $lastWorkstation->name_workstations);
$startNumber = intval(str_replace('workstation', '', $parts[0])) + 1;
}
// Loop para criar as estações de trabalho
for ($i = $startNumber; $i < $startNumber + $numberWorkstations; $i++) {
$workstation = new ConstructionWorkstation();
$workstation->name_workstations = 'workstation' . $i . '-' . $numberProject;
$workstation->company_projects_id = $numberProject;
$workstation->save();
}
// Redireciona para onde você quiser após a criação das workstations
return redirect()->route('test3', ['id' => $request->numberProject])
->with('success', $numberWorkstations . ' Postos de Trabalho criados !!!')
->with('listWorkstations', $listWorkstations);
}
// Funcao apenas para retornar os dados necessarios para a view criar uma Obra. // Funcao apenas para retornar os dados necessarios para a view criar uma Obra.
public function createProjectForStep1(){ public function createProjectForStep1()
{
$companies = User::where('type_users', 3)->get(); $companies = User::where('type_users', 3)->get();
// Apos terminar nao vai ficar step 1 // Apos terminar nao vai ficar step 1
@ -32,37 +244,39 @@ public function createProjectForStep1(){
// Progress Bar // Progress Bar
//Devolve para a primeira para na descricao do projecto apenas user com ID 3, quer dizer que apenas as "empresas" //Devolve para a primeira para na descricao 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)
{ {
$projects = CompanyProject::find($company_projects_id); $projects = CompanyProject::find($company_projects_id);
$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])
->with('projects',$projects); ->with('projects', $projects);
} }
// Se forem alterados dados dos Detalhes da Obra, vai ser alterado // Se forem alterados dados dos Detalhes da Obra, vai ser alterado
public function EditprocessStep1(Request $request){ public function EditprocessStep1(Request $request)
{
} }
public function removePendingEquipment($id){ public function removePendingEquipment($id)
{
$equipment = PendingEquipment::findOrFail($id); $equipment = PendingEquipment::findOrFail($id);
$equipment->delete(); $equipment->delete();
return back()->with('success', 'Equipamento pendente removido com sucesso!'); return back()->with('success', 'Equipamento pendente removido com sucesso!');
} }
public function CreateNewEquipmentFromPendingEquipment(Request $request, $id){ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id)
{
$checkPendingEquipment = PendingEquipment::findOrFail($id); $checkPendingEquipment = PendingEquipment::findOrFail($id);
$counter = 2; $counter = 2;
$baseTag = $checkPendingEquipment->pending_equipment_tag; $baseTag = $checkPendingEquipment->pending_equipment_tag;
$baseDescription = $checkPendingEquipment->pending_equipment_description; $baseDescription = $checkPendingEquipment->pending_equipment_description;
// Ciclo para verificar se ja existe um equipamento com o mesmo nome se existir vai criando com o contador iniciado a partir de (2) // Ciclo para verificar se ja existe um equipamento com o mesmo nome se existir vai criando com o contador iniciado a partir de (2)
while (Equipment::where('equipment_tag', $baseTag . "({$counter})")->orWhere('equipment_description', $baseDescription . "({$counter})")->exists()) { while (Equipment::where('equipment_tag', $baseTag . "({$counter})")->orWhere('equipment_description', $baseDescription . "({$counter})")->exists()) {
$counter++; $counter++;
} }
$newEquipment = new Equipment; $newEquipment = new Equipment;
$newEquipment->unit_id = $checkPendingEquipment->pending_equipment_unit_id; $newEquipment->unit_id = $checkPendingEquipment->pending_equipment_unit_id;
$newEquipment->equipment_type_id = $checkPendingEquipment->pending_equipment_type_id; $newEquipment->equipment_type_id = $checkPendingEquipment->pending_equipment_type_id;
@ -84,9 +298,9 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id){
$checkPendingEquipment->delete(); $checkPendingEquipment->delete();
return back()->with('success', 'Equipamento '.$newEquipment->equipment_tag.' criado com sucesso'); return back()->with('success', 'Equipamento ' . $newEquipment->equipment_tag . ' criado com sucesso');
} }
public function processStep1(Request $request) public function processStep1(Request $request)
{ {
@ -170,8 +384,8 @@ public function showStep2($company_projects_id)
$listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment', 'specificAttributes' => function ($query) { $listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment', 'specificAttributes' => function ($query) {
$query->orderBy('specific_attributes_value', 'asc'); $query->orderBy('specific_attributes_value', 'asc');
}]) }])
->where('company_projects_id', $company_projects_id) ->where('company_projects_id', $company_projects_id)
->get(); ->get();
$pendingEquipments = PendingEquipment::where('pending_company_projects_id', $numberProject)->get(); $pendingEquipments = PendingEquipment::where('pending_company_projects_id', $numberProject)->get();
@ -251,7 +465,7 @@ public function createEquipmentManual(Request $request)
// ID do equipamento criado // ID do equipamento criado
$equipmentID = $newEquipmentProject->equipment_id; $equipmentID = $newEquipmentProject->equipment_id;
// Verifica os campos do Card_do tipo de valvula selecionado (Ex: psv_card) e de acordo com os campos preenchidos se for de atributos especificos, ele compara o 'name' dos inputs com os 'general_attributes_equipment_description' da tabela : GeneralAttributesEquipment e associa // Verifica os campos do Card_do tipo de valvula selecionado (Ex: psv_card) e de acordo com os campos preenchidos se for de atributos especificos, ele compara o 'name' dos inputs com os 'general_attributes_equipment_description' da tabela : GeneralAttributesEquipment e associa
$checkAtributs = GeneralAttributesEquipment::whereIn('general_attributes_equipment_description', array_keys($request->all())) $checkAtributs = GeneralAttributesEquipment::whereIn('general_attributes_equipment_description', array_keys($request->all()))
@ -274,7 +488,7 @@ public function createEquipmentManual(Request $request)
$AddAtributsEquipments = new SpecificAttributesEquipmentType; $AddAtributsEquipments = new SpecificAttributesEquipmentType;
$AddAtributsEquipments->equipment_id = $equipmentID; $AddAtributsEquipments->equipment_id = $equipmentID;
$AddAtributsEquipments->equipment_type_id = $request->equipmentTypeId; $AddAtributsEquipments->equipment_type_id = $request->equipmentTypeId;
$AddAtributsEquipments->specific_attributes_equipment_type_id = $receivesAssociationAttribute['general_attributes_equipment_id']; $AddAtributsEquipments->general_attributes_equipment_id = $receivesAssociationAttribute['general_attributes_equipment_id'];
$AddAtributsEquipments->specific_attributes_value = $receivesAssociationAttribute['value']; $AddAtributsEquipments->specific_attributes_value = $receivesAssociationAttribute['value'];
$AddAtributsEquipments->save(); $AddAtributsEquipments->save();
} }
@ -291,7 +505,8 @@ public function createEquipmentManual(Request $request)
->with('success', 'Equipamento criado com sucesso') ->with('success', 'Equipamento criado com sucesso')
->with('listEquipmentsProjects', $listEquipmentsProjects); ->with('listEquipmentsProjects', $listEquipmentsProjects);
} }
public function receiveIdEquipment(Equipment $equipment){ public function receiveIdEquipment(Equipment $equipment)
{
// return response()->json($equipment); // return response()->json($equipment);
return view('projectsClients/articulated_2', ['equipment' => $equipment]); return view('projectsClients/articulated_2', ['equipment' => $equipment]);
} }
@ -422,7 +637,7 @@ public function processStep2(Request $request)
$specificAttribute->equipment_id = $receveEquipment_ID; $specificAttribute->equipment_id = $receveEquipment_ID;
$specificAttribute->equipment_type_id = $receveEquipament_type_ID; $specificAttribute->equipment_type_id = $receveEquipament_type_ID;
$specificAttribute->specific_attributes_equipment_type_id = $generalAttribute->general_attributes_equipment_id; $specificAttribute->general_attributes_equipment_id = $generalAttribute->general_attributes_equipment_id;
// Atribui o valor da chave correspondente em $datas // Atribui o valor da chave correspondente em $datas
$specificAttribute->specific_attributes_value = $datas[$generalAttribute->general_attributes_equipment_description]; $specificAttribute->specific_attributes_value = $datas[$generalAttribute->general_attributes_equipment_description];
@ -453,14 +668,46 @@ public function processStep2(Request $request)
return redirect('/test3'); return redirect('/test3');
} }
public function showStep3() public function showStep3($company_projects_id)
{ {
// Verifique se a etapa 2 foi concluída //Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra.
// if (!session('form_data.step2')) { $listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get();
// return redirect('/test2'); $equipments = Equipment::where('company_projects_id', $company_projects_id)
// } ->get();
return view('projectsClients/workStation_3', ['step' => 3]); $futherTasks = FurtherTasks::where('company_projects_id', $company_projects_id)
->get();
return view('projectsClients/workStation_3', ['step' => 3, 'numberProject' => $company_projects_id])
->with('listWorkstations', $listWorkstations)
->with('equipments', $equipments)
->with('futherTasks', $futherTasks);
}
public function workstationsAssociationTasks(Request $request)
{
$workStation = ConstructionWorkstation::where('id_workstations', $request->idWorkStation)->first();
if ($workStation) {
$workStation->nomenclature_workstation = $request->nameWorkstation;
$workStation->save();
}
// então, iteramos sobre as três listas de tarefas e as associamos à estação de trabalho
$taskTypes = ['generalTasks', 'PsvTasks', 'CvTasks'];
foreach ($taskTypes as $taskType) {
if (isset($request->$taskType)) {
foreach ($request->$taskType as $taskId) {
$taskAssociation = new WorkstationsAssociationTasks;
$taskAssociation->id_workstations = $workStation->id_workstations;
$taskAssociation->elemental_tasks_id = $taskId; // assumindo que $taskId é o id da tarefa
$taskAssociation->company_projects_id = $workStation->company_projects_id;
$taskAssociation->save();
}
}
}
// Redirecionar de volta com uma mensagem de sucesso
return back()->with('success', 'Posto de trabalho : '.$workStation->name_workstations.' atualizado com sucesso!');
} }
public function processStep3(Request $request) public function processStep3(Request $request)
@ -599,6 +846,12 @@ public function getAmbits($equipmentType)
return response()->json($ambits); return response()->json($ambits);
} }
public function getAttributes($id)
{
$equipment = Equipment::with('specificAttributes')->find($id);
return response()->json($equipment->specificAttributes);
}
// public function createEquipamentProject(Request $request) // public function createEquipamentProject(Request $request)
// { // {
// $file = $request->file('documento'); // $file = $request->file('documento');
@ -674,7 +927,7 @@ public function getAmbits($equipmentType)
// } // }
// } // }
// public function createEquipamentProject(Request $request) // public function createEquipamentProject(Request $request)

View File

@ -28,7 +28,7 @@ public function ManageAssets()
->join('users', 'plants.user_id', '=', 'users.user_id') ->join('users', 'plants.user_id', '=', 'users.user_id')
->select('plants.*', 'units.unit_name', 'users.user_name as user_name') ->select('plants.*', 'units.unit_name', 'users.user_name as user_name')
->get(); ->get();
$equipments = Equipment::all();
// $equipaments = DB::table('equipaments') // $equipaments = DB::table('equipaments')
// ->join('factories','equipaments.factory_id', '=', 'factories.factories_id') // ->join('factories','equipaments.factory_id', '=', 'factories.factories_id')
// ->join('equipament_types', 'equipaments.equipament_type_id', '=' , 'equipament_types.equipament_type_id') // ->join('equipament_types', 'equipaments.equipament_type_id', '=' , 'equipament_types.equipament_type_id')
@ -36,7 +36,7 @@ public function ManageAssets()
// ->get(); // ->get();
// return view('Admin/DataManagement/manageassets', compact('units','equipaments')); // return view('Admin/DataManagement/manageassets', compact('units','equipaments'));
return view('Admin/DataManagement/manageassets', compact('units')); return view('Admin/DataManagement/manageassets', compact('units','equipments'));
} }
public function showUnit($id) public function showUnit($id)

View File

@ -76,7 +76,7 @@ public static function authenticateAndRedirect(Request $request)
public function ListCompanies() public function ListCompanies()
{ {
$users = User::with('userType')->where('user_type', '=', 3)->get(); $users = User::with('userType')->where('type_users', '=', 3)->get();
return view('Admin.CrudUsers.listCompany', compact('users')); return view('Admin.CrudUsers.listCompany', compact('users'));
} }
@ -84,7 +84,7 @@ public function ListCompanies()
//Busca Todos os utilizadores Exeto as 'Empresas' //Busca Todos os utilizadores Exeto as 'Empresas'
public function ListUsers() public function ListUsers()
{ {
$users = User::with('userType')->where('user_type', '<>', 3)->get(); $users = User::with('userType')->where('type_users', '<>', 3)->get();
return view('Admin.CrudUsers.listUsers', compact('users')); return view('Admin.CrudUsers.listUsers', compact('users'));
} }

View File

@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ConstructionWorkstation extends Model
{
use HasFactory;
public $timestamps = false;
protected $table = 'construction_workstations';
protected $primaryKey = 'id_workstations';
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class FurtherTasks extends Model
{
use HasFactory;
public $timestamps = false;
protected $table = 'further_tasks';
protected $primaryKey = 'further_tasks_id';
}

View File

@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class OrderEquipmentTasks extends Model
{
use HasFactory;
public $timestamps = false;
protected $table = 'ordered_equipment_tasks';
}

View File

@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class WorkstationsAssociationTasks extends Model
{
use HasFactory;
public $timestamps = false;
protected $table = 'workstations_association_tasks';
}

BIN
public/img/logo4.0.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,276 @@
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
<!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css') }}">
<!-- Ionicons -->
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
{{-- <!-- Tempusdominus Bootstrap 4 --> Serve para trabelhar com data e hora no bootstrap , ver se necessario! --}}
<link rel="stylesheet"
href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}">
{{-- <!-- iCheck -->Para estilzar (checkbox) ver se necessario --}}
<link rel="stylesheet" href="{{ asset('plugins/icheck-bootstrap/icheck-bootstrap.min.css') }}">
{{-- <!-- JQVMap -->EStudar este Plugins --}}
<link rel="stylesheet" href="{{ asset('plugins/jqvmap/jqvmap.min.css') }}">
<!-- overlayScrollbars -->
<link rel="stylesheet" href="{{ asset('plugins/overlayScrollbars/css/OverlayScrollbars.min.css') }}">
{{-- <!-- Daterange picker --> Se você precisa de uma interface onde os usuários possam selecionar uma série de datas, como para uma reserva de hotel, por exemplo,--}}
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css') }}">
{{-- <!-- summernote -->Estudar --}}
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}">
{{-- <!-- jQuery UI -->Criacao de interface, Estudar --}}
<link rel="stylesheet" href="{{ asset('plugins/jquery-ui/jquery-ui.css') }}">
{{-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> --}}
{{-- DataTables --}}
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables/jquery.dataTables.min.js')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js')}}">
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js')}}"></script>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css">
<!-- DataTables JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables Bootstrap 4 JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<!-- DataTables Buttons JavaScript -->
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
{{-- Parte de Cima - Header --}}
{{-- PARTE DE baixo no BODY --}}
<!-- jQuery -->
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
{{-- DataTables --}}
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js')}}"></script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
<!-- daterangepicker -->
<script src="{{asset('plugins/moment/moment.min.js')}}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
{{-- Segunda Versao : --}}
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('StyleAdmin/css/adminlte.css') }}">
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
<!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css') }}">
<!-- overlayScrollbars -->
<link rel="stylesheet" href="{{ asset('plugins/overlayScrollbars/css/OverlayScrollbars.min.css') }}">
{{-- DataTables --}}
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables/jquery.dataTables.min.js')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js')}}">
{{-- Parde de Baixo antes de fechar body --}}
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- daterangepicker -->
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
{{-- DataTables --}}
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>
{{-- Plugins-Scripts --}}
<!-- jQuery -->
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
{{-- FUNCIONA REAL --}}
{{-- PARTE DE CIMA --}}
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css')}}">
<!-- Ionicons -->
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<!-- Tempusdominus Bootstrap 4 -->
<link rel="stylesheet" href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css')}}">
<!-- iCheck -->
<link rel="stylesheet" href="{{ asset('plugins/icheck-bootstrap/icheck-bootstrap.min.css')}}">
<!-- JQVMap -->
<link rel="stylesheet" href="{{ asset('plugins/jqvmap/jqvmap.min.css')}}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('StyleAdmin/css/adminlte.css') }}">
<!-- overlayScrollbars -->
<link rel="stylesheet" href="{{ asset('plugins/overlayScrollbars/css/OverlayScrollbars.min.css')}}">
<!-- Daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css')}}">
<!-- summernote -->
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css')}}">
<!-- daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css')}}">
<!-- DataTables -->
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
{{-- Parte de Baixo --}}
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<!-- daterangepicker -->
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- AdminLTE for demo purposes -->
{{-- <script src="{{ asset('js/demo.js') }}"></script>
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
<script src="{{ asset('js/pages/dashboard.js') }}"></script> --}}
<!-- jQuery Script fadeIn fadeOut for the dropdown -->
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>

View File

@ -4,18 +4,19 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}"> <meta name="csrf-token" content="{{ csrf_token() }}">
<title>ISPT 4.0</title>
<!-- 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="{{ asset('plugins/fontawesome-free/css/all.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
<!-- Font Awesome 6.1.1 --> <!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.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 -->
@ -36,32 +37,41 @@
<!-- jQuery UI --> <!-- jQuery UI -->
<link rel="stylesheet" href="{{ asset('plugins/jquery-ui/jquery-ui.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/jquery-ui/jquery-ui.css') }}">
{{-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> --}} <!-- daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css') }}">
{{-- DataTables --}}
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
<!-- DataTables -->
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('plugins/datatables/jquery.dataTables.min.js')}}"> <link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js')}}">
<!-- jQuery --> <link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css">
<!-- DataTables JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables Bootstrap 4 JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<!-- DataTables Buttons JavaScript -->
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css">
<!-- DataTables JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables Bootstrap 4 JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<!-- DataTables Buttons JavaScript -->
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
<style>
.spin {
animation: spin 1s infinite linear;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>
</head> </head>
@ -70,9 +80,10 @@
<div class="wrapper"> <div class="wrapper">
<!-- Preloader --> <!-- Preloader -->
{{-- <div class="preloader flex-column justify-content-center align-items-center"> <div class="preloader flex-column justify-content-center align-items-center">
<img class="animation__shake" src="dist/img/ispt.png" alt="AdminLTELogo" height="60" width="60"> <img class="animation__shake spin" src="{{ asset('img/logo4.0.jpg') }}" alt="AdminLTELogo" height="60"
</div> --}} width="60">
</div>
<!-- Navbar --> <!-- Navbar -->
<nav class="main-header navbar navbar-expand navbar-white navbar-light"> <nav class="main-header navbar navbar-expand navbar-white navbar-light">
@ -105,7 +116,6 @@ class="fas fa-bars"></i></a>
<span class="brand-text font-weight-light">ISPT 4.0</span> <span class="brand-text font-weight-light">ISPT 4.0</span>
</a> </a>
<!-- Sidebar --> <!-- Sidebar -->
<div class="sidebar"> <div class="sidebar">
<!-- Sidebar user panel (optional) --> <!-- Sidebar user panel (optional) -->
@ -116,27 +126,12 @@ class="fas fa-bars"></i></a>
</div> </div>
<div class="info"> <div class="info">
@if (Auth::check()) @if (Auth::check())
<a href="{{ route('usersProfiles', ['id' => Auth::user()->user_id]) }}"
<a href="{{ route('usersProfiles', ['id' => Auth::user()->user_id]) }}" class="d-block">{{ Auth::user()->userType?->type_user }}</a> class="d-block">{{ Auth::user()->userType?->type_user }}</a>
@endif @endif
</div> </div>
</div> </div>
<!-- SidebarSearch Form -->
{{-- <div class="form-inline">
<div class="input-group" data-widget="sidebar-search">
<input class="form-control form-control-sidebar" type="search" placeholder="Procurar"
aria-label="search">
<div class="input-group-append">
<button class="btn btn-sidebar">
<i class="fas fa-search fa-fw"></i>
</button>
</div>
</div>
</div> --}}
<!-- Sidebar Menu --> <!-- Sidebar Menu -->
<nav class="mt-2"> <nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
@ -149,14 +144,6 @@ class="fas fa-bars"></i></a>
<p> Dashboard </p> <p> Dashboard </p>
</a> </a>
</li> </li>
{{-- <li class="nav-item">
<a href="{{ route('createProject') }}" class="nav-link">
<i class="nav-icon fas fa-helmet-safety"></i>
<p> Criar obra </p>
</a>
</li> --}}
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('createProject') }}" class="nav-link"> <a href="{{ route('createProject') }}" class="nav-link">
<i class="nav-icon fas fa-helmet-safety"></i> <i class="nav-icon fas fa-helmet-safety"></i>
@ -164,18 +151,7 @@ class="fas fa-bars"></i></a>
</a> </a>
</li> </li>
{{-- <li class="nav-item">
<a href="{{ route('test') }}" class="nav-link active">
<i class="nav-icon fas fa-tachometer-alt"></i>
<p>
TestController
</p>
</a>
</li> --}}
<!-- /.Multiple menu item --> <!-- /.Multiple menu item -->
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('testExcel') }}" class="nav-link"> <a href="{{ route('testExcel') }}" class="nav-link">
<i class="nav-icon fas fa-file"></i> <i class="nav-icon fas fa-file"></i>
@ -223,12 +199,6 @@ class="fas fa-bars"></i></a>
<p>Clientes</p> <p>Clientes</p>
</a> </a>
</li> </li>
{{-- <li class="nav-item">
<a href="{{ route('users.list') }}" class="nav-link">
<i class="fa-solid fa-file-edit"></i>
<p> Gerir Utilizadores</p>
</a>
</li> --}}
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('CreateUsers') }}" class="nav-link"> <a href="{{ route('CreateUsers') }}" class="nav-link">
<i class="nav-icon fas fa-gear"></i> <i class="nav-icon fas fa-gear"></i>
@ -247,98 +217,97 @@ class="fas fa-bars"></i></a>
</aside> </aside>
<div class="content-wrapper"> <div class="content-wrapper">
<section class="content"> @yield('Main-content')
{{-- <section class="content">
<div class="container-fluid"> <div class="container-fluid">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-12"> <div class="col-md-12">
@yield('Main-content')
</div> </div>
{{-- ./col-md-12 --}} ./col-md-12
</div> </div>
{{-- ./row justify-content-center --}} ./row justify-content-center
</div> </div>
{{-- ./container-fluid --}} ./container-fluid
</section> </section> --}}
{{-- ./content --}} {{-- ./content --}}
</div> </div>
{{-- ./content-wrapper --}} {{-- ./content-wrapper --}}
<footer class="main-footer">
<strong>Copyright &copy; 2017-2022 <a href="#">ISPT - Industrial Services, SA</a>.</strong>
Todos os direitos reservados.
<div class="float-right d-none d-sm-inline-block">
<b>Versão</b> 1.0
</div>
</footer>
<!-- Control Sidebar --> <!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark"> <aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here --> <!-- Control sidebar content goes here -->
</aside> </aside>
<!-- /.control-sidebar --> <!-- /.control-sidebar -->
</div> </div>
<!-- ./wrapper --> <!-- ./ Wrapper -->
<!-- jQuery -->
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
<!-- daterangepicker -->
<script src="{{asset('plugins/moment/moment.min.js')}}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
<footer class="main-footer">
<strong>Copyright &copy; 2017-2022 <a href="#">ISPT - Industrial Services, SA</a>.</strong>
Todos os direitos reservados.
<div class="float-right d-none d-sm-inline-block">
<b>Versão</b> 1.0
</div>
</footer>
</body> </body>
</html> {{-- Scripts-Plugins --}}
@yield('scripts')
{{-- Script que dao erro no projecto --}}
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<!-- daterangepicker -->
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- AdminLTE for demo purposes --> <!-- AdminLTE for demo purposes -->
<!--<script src="dist/js/demo.js"></script> --> {{-- <script src="{{ asset('js/demo.js') }}"></script>
<!-- AdminLTE dashboard demo (This is only for demo purposes) --> <!-- AdminLTE dashboard demo (This is only for demo purposes) -->
{{-- <script src="{{ asset('js/pages/dashboard.js') }}"></script> --}} <script src="{{ asset('js/pages/dashboard.js') }}"></script> --}}
<!-- jQuery Script fadeIn fadeOut for the dropdown -->
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>
@yield('scriptsTemplateAdmin')
</html>

File diff suppressed because it is too large Load Diff

View File

@ -162,7 +162,6 @@
{{-- /.card card-primary --}} {{-- /.card card-primary --}}
<a href="{{ route('test2', ['id' => $projects]) }}" class="btn btn-primary next float-right">Seguinte</a> <a href="{{ route('test2', ['id' => $projects]) }}" class="btn btn-primary next float-right">Seguinte</a>
</fieldset> </fieldset>
</div> </div>

View File

@ -1,23 +1,436 @@
@extends('Templates/templateAdmin') @extends('Templates/templateAdmin')
@section('Main-content') @section('Main-content')
<div class="row justify-content-center"> @if (session('success'))
<div class="col-12"> <div class="alert alert-success" role="alert" id="alert-message-success" style="transition: opacity 1s;">
<div class="row justify-content-center"> {{ session('success') }}
</div>
<script>
setTimeout(function() {
$('#alert-message-success').fadeOut('slow', function() {
$(this).remove();
});
}, 5000); // A mensagem desaparecerá após 5 segundos
</script>
@endif
<section class="content-header">
<div class="container-fluid">
<!-- Progressbar -->
<ul id="progressbar" class="nav nav-pills d-flex flex-sm-row justify-content-center">
<li class="@if ($step == 3) active @endif "></li>
{{-- Project details --}}
<li class="@if ($step == 3) active @endif "></li>
{{-- Articulated --}}
<li class="@if ($step == 3) active @endif "></li>
{{-- Workstation --}}
</ul>
</div>
</section>
{{-- ./content-header --}}
<fieldset class="content">
<div class="container-fluid">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">Postos de Trabalho</h3>
</div>
<!-- ./Card-header -->
<div class="card-body"> <div class="card-body">
<!-- Progressbar --> <!-- Criar tarefa -->
<ul id="progressbar" class="nav nav-pills flex-sm-row"> <div class="card card-success collapsed-card">
<li class="@if ($step == 1) active @endif flex-sm-fill">Project details</li> <div class="card-header">
<li class="@if ($step == 2) active @endif flex-sm-fill">Articulated</li> <h3 class="card-title">Criar Postos de Trabalho</h3>
<li class="@if ($step == 3) active @endif flex-sm-fill">Workstation</li>
</ul> <div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i
class="fas fa-plus"></i>
</button>
</div>
<!-- /.card-tools -->
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="card ">
<div class="form-group col-md-12">
<div class="card">
<form action="{{ route('createWorkStations') }}" method="post">
@csrf
<input type="hidden" name="numberProject" value="{{ $numberProject }}">
<div class="row">
<div class="form-group">
<label>Selecione o Numero de Postos Pretendidos :
</label>
<input class="form-control" name="numberWorkstations" type="number"
id="numberPosts">
</div>
<input class="btn btn-success" type="submit" value="Guardar">
</div>
</form>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!--/Criar tarefa-->
<!-- Card Posto de Trabalho -->
<div class="card">
<div class="card-header">
<h3 class="card-title">Postos da Obra </h3>
</div>
<div class="card-body">
<div class="table-responsive">
<form action="{{ route('AddNomenclatureWorkstation') }}" method="GET">
<table id="workstationTable" class="table table-bordered table-striped">
<thead>
<tr>
<th>Posto de Trabalho</th>
<th>Nome Posto de Trabalho</th>
<th>Detalhes</th>
</tr>
</thead>
<tbody>
@foreach ($listWorkstations as $listWorkstation)
<tr>
<td>{{ $listWorkstation->name_workstations }}</td>
<td class="text-center">
@if ($listWorkstation->nomenclature_workstation == null)
<input type="text" class="form-control"
name="nameWorkstations[{{ $listWorkstation->name_workstations }}]"
value="">
@else
<input type="text" class="form-control"
name="nameWorkstations[{{ $listWorkstation->name_workstations }}]"
value="{{ $listWorkstation->nomenclature_workstation }}"
readonly>
@endif
</td>
<td class="text-center d-flex justify-content-around">
<a href='#' data-toggle='modal'
data-target='#modal-ViewOfices-{{ $listWorkstation->id_workstations }}'>
<i class='fa-solid fa-edit text-primary'></i>
</a>
<a href="#" data-toggle="modal"
data-target="#modal-remover-{{ $listWorkstation->id_workstations }}">
<i class="fa-solid fa-trash-alt text-danger"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<input class="btn btn-primary" type="submit" value="Guardar">
</form>
</div>
<!--/articulado de obra-->
</div>
<!-- /.card-body -->
</div>
<!-- ./Card Posto de Trabalho -->
</div>
{{-- ./card-body --}}
</div>
<!-- ./Card card-primary -->
<a href="{{ route('test2', ['id' => $numberProject]) }}"
class="btn btn-primary previous float-left">Anterior</a>
</div>
{{-- ./container-fluid --}}
</fieldset>
{{-- ./content --}}
@foreach ($listWorkstations as $listWorkstation)
<div class="modal fade" id="modal-ViewOfices-{{ $listWorkstation->id_workstations }}">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header bg-primary">
<h4 class="modal-title">{{ $listWorkstation->name_workstations }}</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">x</span>
</button>
</div>
<div class="modal-body">
<form action="{{ route('workstationsAssociationTasks') }}" method="get">
<div class="row">
<p>Nome Posto de Trabalho : </p>
<input class="form-control col-sm-6" type="text" name="nameWorkstation"
value="{{ $listWorkstation->nomenclature_workstation }}">
<input type="hidden" name="idWorkStation" value="{{ $listWorkstation->id_workstations }}">
</div>
<br>
<section class="content">
<div class="container-fluid">
<div class="row ">
<div class="col-sm-6">
<div class="card card-success">
<div class="card-header">
<h3 class="card-title">Tarefas Gerais</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool"
data-card-widget="collapse"><i class="fas fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<!-- Tabela de Checkbox -->
<div>
<p>TE1 - Desmontar da linha
<input type="checkbox" class="checkboxChoseTasksOficesPSV"
value="1" name="generalTasks[TE1]">
</p>
<p>TE2 - Descontaminar
<input type="checkbox" class="checkboxChoseTasksOficesPSV"
value="2" name="generalTasks[TE2]">
</p>
<p>TE5 - Limpeza e lavagem dos componentes
<input type="checkbox" class="checkboxChoseTasksOficesPSV"
value="5" name="generalTasks[TE5]">
</p>
<p>TE9 - Pintura
<input type="checkbox" class="checkboxChoseTasksOficesPSV"
value="9" name="generalTasks[TE9]">
</p>
<p>TE11 - Inspeção Final
<input type="checkbox" class="checkboxChoseTasksOficesPSV"
value="11" name="generalTasks[TE11]">
</p>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="row">
@if ($equipments->firstWhere('equipment_type_id', 3))
<div class="col-sm-12">
<div class="card card-primary collapsed-card">
<div class="card-header">
<h3 class="card-title">
Tarefas PSV</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool"
data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<div class="card-body">
<p>TE3 - Pré-teste
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="3" name="PsvTasks[TE3]">
</p>
<p>TE6 - Retificação e lapidação
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="6" name="PsvTasks[TE6]">
</p>
<p>TE7 - Fecho da válvula e substituição de componentes
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="7" name="PsvTasks[TE7]">
</p>
<p>TE8 - Calibrar e certificar
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="8" name="PsvTasks[TE8]">
</p>
<p>TE10 - Montagem na linha
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="10" name="PsvTasks[TE10]">
</p>
</div>
</div>
</div>
@endif
@if ($equipments->firstWhere('equipment_type_id', 1))
<div class="col-sm-12">
<div class="card card-primary collapsed-card">
<div class="card-header">
<h3 class="card-title">
Tarefas CV</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool"
data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<div class="card-body">
<p>TE12 - Inspeção visual
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="21" name="CvTasks[TE12]">
</p>
<p>TE3(2) - Pré-teste
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="12" name="CvTasks[TE3(2)]">
</p>
<p>TE4(2) - Abertura da válvula, análise e controle dos
componentes
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="13" name="CvTasks[TE4(2)]">
</p>
<p>TE7(2) - Fecho da válvula e substituição de componentes
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="14" name="CvTasks[TE7(2)]">
</p>
<p>TE13 - Teste final
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="15" name="CvTasks[TE13]">
</p>
<p>TE10(2) - Montagem na linha
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="16" name="CvTasks[TE10(2)]">
</p>
</div>
</div>
</div>
@endif
@if ($equipments->firstWhere('equipment_type_id', 2))
<div class="col-sm-12">
<div class="card card-primary collapsed-card">
<div class="card-header">
<h3 class="card-title">
Tarefas ISV</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool"
data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<div class="card-body">
<p>TE4(3) - Abertura da válvula, análise e controle dos
componentes
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="TE4(3)">
</p>
<p>TE7(3) - Fecho da válvula e substituição de componentes
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="TE7(3)">
</p>
<p>TE14 - Ensaio
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="TE14">
</p>
<p>TE10 - Montagem na linha
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="TE10">
</p>
<p>TE15 - Empancar
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="TE15">
</p>
</div>
</div>
</div>
@endif
@if ($futherTasks->count() > 0)
<div class="col-sm-12">
<div class="card card-primary collapsed-card">
<div class="card-header">
<h3 class="card-title">
Tarefas Adicionais</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool"
data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<div class="card-body">
<p>TC1 - Pintar de Verde
<input type="checkbox"
class="checkboxChoseTasksOficesPSV"
value="16" name="CvTasks[TE10(2)]">
</p>
</div>
</div>
</div>
@endif
</div>
</div>
</div>
{{-- ./row --}}
</section>
<div class="modal-footer justify-content-between">
<!-- Vai ficar o Footer -->
<input type="submit" value="Guardar">
</form>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- modal-dialog -->
</div>
<!-- /.modal remover-->
</div>
<!-- /.Modal, Postos de Trabalho -->
{{-- modal-remover --}}
<div class="modal fade" id="modal-remover-{{ $listWorkstation->id_workstations }}">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-primary">
<h4 class="modal-title">Remover Posto {{ $listWorkstation->name_workstations }} </h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">x</span>
</button>
</div>
<div class="modal-body">
<form action="{{ route('deleteWorkstation', $listWorkstation->name_workstations) }}"
method="POST">
@csrf
@method('DELETE')
<p>Deseja realmente remover o Posto de Trabalho : {{ $listWorkstation->name_workstations }}?
</p>
<input class="btn btn-danger" type="submit" value="Remover">
</form>
</div>
</div> </div>
</div> </div>
<div class="card card-primary">
<h1>Workstation</h1>
<!-- Aqui vai o conteúdo do seu form da página 3 -->
<a href="{{ route('test2') }}" class="btn btn-primary">Previous</a>
</div>
</div> </div>
</div> {{-- ./modal-remover --}}
@endforeach
@endsection
@section('scriptsTemplateAdmin')
<script>
$(function() {
$("#workstationTable").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#workstationTable_wrapper .col-md-6:eq(0)');
});
</script>
@endsection @endsection

View File

@ -0,0 +1,50 @@
@extends('testIdiota')
@section('idiota')
<h2>Teste idiota</h2>
<table id="example" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011-04-25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>63</td>
<td>2011-07-25</td>
<td>$170,750</td>
</tr>
</tbody>
</table>
@endsection
@section('idiotaScripts')
<script>
$(function() {
$("#example").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#example_wrapper .col-md-6:eq(0)');
});
</script>
@endsection

View File

@ -0,0 +1,344 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>ISPT 4.0</title>
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
<!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css') }}">
<!-- Ionicons -->
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<!-- Tempusdominus Bootstrap 4 -->
<link rel="stylesheet"
href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}">
<!-- iCheck -->
<link rel="stylesheet" href="{{ asset('plugins/icheck-bootstrap/icheck-bootstrap.min.css') }}">
<!-- JQVMap -->
<link rel="stylesheet" href="{{ asset('plugins/jqvmap/jqvmap.min.css') }}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('StyleAdmin/css/adminlte.css') }}">
<!-- overlayScrollbars -->
<link rel="stylesheet" href="{{ asset('plugins/overlayScrollbars/css/OverlayScrollbars.min.css') }}">
<!-- Daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css') }}">
<!-- summernote -->
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}">
<!-- jQuery UI -->
<link rel="stylesheet" href="{{ asset('plugins/jquery-ui/jquery-ui.css') }}">
{{-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> --}}
{{-- DataTables --}}
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables/jquery.dataTables.min.js')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js')}}">
<!-- jQuery -->
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css">
<!-- DataTables JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables Bootstrap 4 JavaScript -->
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<!-- DataTables Buttons JavaScript -->
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
</head>
<body class="hold-transition sidebar-mini layout-fixed">
<!-- Wrapper -->
<div class="wrapper">
<!-- Preloader -->
{{-- <div class="preloader flex-column justify-content-center align-items-center">
<img class="animation__shake" src="dist/img/ispt.png" alt="AdminLTELogo" height="60" width="60">
</div> --}}
<!-- Navbar -->
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
<!-- Left navbar links -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i
class="fas fa-bars"></i></a>
</li>
</ul>
<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" data-widget="fullscreen" href="#" role="button">
<i class="fas fa-expand-arrows-alt"></i>
</a>
</li>
</ul>
</nav>
<!-- /.navbar -->
<!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<!-- Brand Logo -->
<a href="#" class="brand-link" style="pointer-events: none;">
<img src="{{ asset('/img/ispt.jpg') }}" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
style="opacity: .8">
<span class="brand-text font-weight-light">ISPT 4.0</span>
</a>
<!-- Sidebar -->
<div class="sidebar">
<!-- Sidebar user panel (optional) -->
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
<div class="image">
<img src="{{ asset('/img/avatar5.png') }}" class="img-circle elevation-2" alt="User Image">
</div>
<div class="info">
@if (Auth::check())
<a href="{{ route('usersProfiles', ['id' => Auth::user()->user_id]) }}" class="d-block">{{ Auth::user()->userType?->type_user }}</a>
@endif
</div>
</div>
<!-- SidebarSearch Form -->
{{-- <div class="form-inline">
<div class="input-group" data-widget="sidebar-search">
<input class="form-control form-control-sidebar" type="search" placeholder="Procurar"
aria-label="search">
<div class="input-group-append">
<button class="btn btn-sidebar">
<i class="fas fa-search fa-fw"></i>
</button>
</div>
</div>
</div> --}}
<!-- Sidebar Menu -->
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
data-accordion="false">
<!-- Add icons to the links using the .nav-icon class
with font-awesome or any other icon font library -->
<li class="nav-item">
<a href="{{ route('home') }}" class="nav-link active">
<i class="nav-icon fas fa-tachometer-alt"></i>
<p> Dashboard </p>
</a>
</li>
{{-- <li class="nav-item">
<a href="{{ route('createProject') }}" class="nav-link">
<i class="nav-icon fas fa-helmet-safety"></i>
<p> Criar obra </p>
</a>
</li> --}}
<li class="nav-item">
<a href="{{ route('createProject') }}" class="nav-link">
<i class="nav-icon fas fa-helmet-safety"></i>
<p> Criar obra </p>
</a>
</li>
{{-- <li class="nav-item">
<a href="{{ route('test') }}" class="nav-link active">
<i class="nav-icon fas fa-tachometer-alt"></i>
<p>
TestController
</p>
</a>
</li> --}}
<!-- /.Multiple menu item -->
<li class="nav-item">
<a href="{{ route('testExcel') }}" class="nav-link">
<i class="nav-icon fas fa-file"></i>
<p>
Relatórios
</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-briefcase"></i>
<p> Portefólio
<i class="fas fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="{{ route('manageAssets') }}" class="nav-link">
<i class="fa-solid fa-file-edit"></i>
<p> Gerir Ativos</p>
</a>
</li>
</ul>
</li>
<!-- Single menu item -->
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-gear"></i>
<p> Administração
<i class="fas fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="{{ route('users.list') }}" class="nav-link">
<i class="fa-solid fa-users"></i>
<p>Utilizadores</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('users.company') }}" class="nav-link">
<i class="fa-solid fa-house-user"></i>
<p>Clientes</p>
</a>
</li>
{{-- <li class="nav-item">
<a href="{{ route('users.list') }}" class="nav-link">
<i class="fa-solid fa-file-edit"></i>
<p> Gerir Utilizadores</p>
</a>
</li> --}}
<li class="nav-item">
<a href="{{ route('CreateUsers') }}" class="nav-link">
<i class="nav-icon fas fa-gear"></i>
<p> Criar Utilizadores </p>
</a>
</li>
</ul>
</li>
<!-- /.Single menu item -->
</ul>
</nav>
<!-- /.sidebar-menu -->
</div>
<!-- /.sidebar -->
</aside>
<div class="content-wrapper">
<section class="content">
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-12">
@yield('Main-content')
</div>
{{-- ./col-md-12 --}}
</div>
{{-- ./row justify-content-center --}}
</div>
{{-- ./container-fluid --}}
</section>
{{-- ./content --}}
</div>
{{-- ./content-wrapper --}}
<footer class="main-footer">
<strong>Copyright &copy; 2017-2022 <a href="#">ISPT - Industrial Services, SA</a>.</strong>
Todos os direitos reservados.
<div class="float-right d-none d-sm-inline-block">
<b>Versão</b> 1.0
</div>
</footer>
<!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
</aside>
<!-- /.control-sidebar -->
</div>
<!-- ./wrapper -->
<!-- jQuery -->
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
<!-- daterangepicker -->
<script src="{{asset('plugins/moment/moment.min.js')}}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
</body>
</html>
@yield('scripts')
{{-- Script que dao erro no projecto --}}
<!-- AdminLTE for demo purposes -->
<!--<script src="dist/js/demo.js"></script> -->
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
{{-- <script src="{{ asset('js/pages/dashboard.js') }}"></script> --}}

View File

@ -0,0 +1,124 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('StyleAdmin/css/adminlte.css') }}">
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css')}}">
<!-- Font Awesome 6.1.1 -->
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-611/css/all.min.css')}}">
<!-- Ionicons -->
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<!-- Tempusdominus Bootstrap 4 -->
<link rel="stylesheet" href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css')}}">
<!-- iCheck -->
<link rel="stylesheet" href="{{ asset('plugins/icheck-bootstrap/icheck-bootstrap.min.css')}}">
<!-- JQVMap -->
<link rel="stylesheet" href="{{ asset('plugins/jqvmap/jqvmap.min.css')}}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('StyleAdmin/css/adminlte.css') }}">
<!-- overlayScrollbars -->
<link rel="stylesheet" href="{{ asset('plugins/overlayScrollbars/css/OverlayScrollbars.min.css')}}">
<!-- Daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css')}}">
<!-- summernote -->
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css')}}">
<!-- daterange picker -->
<link rel="stylesheet" href="{{ asset('plugins/daterangepicker/daterangepicker.css')}}">
<!-- DataTables -->
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
</head>
<body>
@yield('idiota')
{{-- <script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script href="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js')}}"></script> --}}
<script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('plugins/jquery-ui/jquery-ui.min.js') }}"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button)
</script>
<!-- Bootstrap 4 -->
<script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<!-- ChartJS -->
<script src="{{ asset('plugins/chart.js/Chart.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('plugins/sparklines/sparkline.js') }}"></script>
<!-- JQVMap -->
<script src="{{ asset('plugins/jqvmap/jquery.vmap.min.js') }}"></script>
<script src="{{ asset('plugins/jqvmap/maps/jquery.vmap.usa.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('plugins/jquery-knob/jquery.knob.min.js') }}"></script>
<!-- daterangepicker -->
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script>
<script src="{{ asset('plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- overlayScrollbars -->
<script src="{{ asset('plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('js/adminlte.js') }}"></script>
<!-- AdminLTE for demo purposes -->
{{-- <script src="{{ asset('js/demo.js') }}"></script>
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
<script src="{{ asset('js/pages/dashboard.js') }}"></script> --}}
<!-- jQuery Script fadeIn fadeOut for the dropdown -->
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script>
<script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>
@yield('idiotaScripts')
</body>
</html>

View File

@ -26,24 +26,42 @@
use App\Http\Controllers\ProjectoDatacontroller; use App\Http\Controllers\ProjectoDatacontroller;
// Route::get('test',[CreateProjectController::class,'index'] )->name('test'); // Route::get('test',[CreateProjectController::class,'index'] )->name('test');
Route::get('workstationsAssociationTasks', [CreateProjectController::class,'workstationsAssociationTasks'])->name('workstationsAssociationTasks');
route::get('AddNomenclatureWorkstation', [CreateProjectController::class,'AddNomenclatureWorkstation'])->name('AddNomenclatureWorkstation');
route::get('removeProjectEquipment', [CreateProjectController::class,'removeProjectEquipment'])->name('removeProjectEquipment');
Route::delete('deleteWorkstation/{name}', [CreateProjectController::class, 'deleteWorkstation'])->name('deleteWorkstation');
route::get('idiota',function(){
return view('recebeIdiota');
});
Route::get('/api/equipment/{id}', [CreateProjectController::class,'showJson']);
Route::post('/EditEquipmentsProjects',[CreateProjectController::class,'EditEquipmentsProjects'])->name('EditEquipmentsProjects');
// Vai ser unicamente a pagina de criacao de uma obra // Vai ser unicamente a pagina de criacao de uma obra
Route::get('/createProject', [CreateProjectController::class,'createProjectForStep1'])->name('createProject'); Route::get('/createProject', [CreateProjectController::class,'createProjectForStep1'])->name('createProject');
Route::post('/newProject1', [CreateProjectController::class,'processStep1'])->name('processStep1'); Route::post('/newProject1', [CreateProjectController::class,'processStep1'])->name('processStep1');
route::post('/createWorkStations',[CreateProjectController::class,'createWorkStations'])->name('createWorkStations');
Route::get('/test1/{id}', [CreateProjectController::class,'showStep1'])->name('test1'); Route::get('/test1/{id}', [CreateProjectController::class,'showStep1'])->name('test1');
Route::get('/test2/{id}', [CreateProjectController::class,'showStep2'])->name('test2'); Route::get('/test2/{id}', [CreateProjectController::class,'showStep2'])->name('test2');
Route::get('/test3/{id}', [CreateProjectController::class,'showStep3'])->name('test3');
Route::post('test1', [CreateProjectController::class,'EditprocessStep1'])->name('EditprocessStep1'); Route::post('test1', [CreateProjectController::class,'EditprocessStep1'])->name('EditprocessStep1');
Route::post('/test2', [CreateProjectController::class,'processStep2'])->name('processStep2'); Route::post('/test2', [CreateProjectController::class,'processStep2'])->name('processStep2');
Route::post('/test2CreateEquipment',[CreateProjectController::class,'createEquipmentManual'])->name('test2CreateEquipment'); Route::post('/test2CreateEquipment',[CreateProjectController::class,'createEquipmentManual'])->name('test2CreateEquipment');
Route::get('/test3', [CreateProjectController::class,'showStep3'])->name('test3');
Route::post('/test3', [CreateProjectController::class,'processStep3']); Route::post('/test3', [CreateProjectController::class,'processStep3']);
Route::get('testando',function(){ Route::get('testando',function(){
@ -182,6 +200,9 @@
Route::get('/api/installations/', [CreateProjectController::class, 'getByUserNif']); Route::get('/api/installations/', [CreateProjectController::class, 'getByUserNif']);
Route::get('/api/ambits/{equipmentType}',[CreateProjectController::class, 'getAmbits']); Route::get('/api/ambits/{equipmentType}',[CreateProjectController::class, 'getAmbits']);
Route::get('/equipments/{id}/attributes', [CreateProjectController::class, 'getAttributes']);
Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register'); Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register');
@ -210,7 +231,7 @@
| be assigned to the "web" middleware group. Make something great! | be assigned to the "web" middleware group. Make something great!
| |
*/ */
Route::get('manageAssets',[ProjectoDatacontroller::class,'ManageAssets'])->name('manageAssets'); // Route::get('manageAssets',[ProjectoDatacontroller::class,'ManageAssets'])->name('manageAssets');
/* /*