ispt4.0_laravel/routes/web.php
2025-03-19 13:15:30 +00:00

454 lines
23 KiB
PHP
Executable File

<?php
use App\DataTables\UsersDataTable;
use App\Services\PdfWrapper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\Auth\PasswordResetLinkController;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use App\Http\Controllers\ClientController;
use App\Http\Controllers\CustomRegistrationController;
use App\Http\Controllers\CreateProjectController;
use App\Http\Controllers\ForgotPasswordController;
use App\Http\Controllers\FormController;
use App\Http\Controllers\NewPasswordController;
use App\Http\Controllers\userController;
use App\Http\Controllers\Pending_UserController;
use App\Http\Controllers\ProjectoDatacontroller;
use App\Http\Controllers\PreparedProjectController;
use App\Http\Controllers\ExecutionProjectController;
use App\Http\Controllers\WorkstationsJobsController;
use App\Http\Controllers\LanguageController;
use Spatie\Browsershot\Browsershot;
// use Illuminate\Http\Response;
Route::get('test', function () {
return view('testDataTables');
});
Route::get('viewProjectsList/{orderProjectID}', [ProjectoDatacontroller::class, 'viewProjectsList'])->name('viewProjectsList');
Route::get('changeStateProject/{projectId}', [CreateProjectController::class, 'changeStateProject'])->name('changeStateProject');
Route::get('deleteProject/{projectId}', [CreateProjectController::class, 'deleteProject'])->name('deleteProject');
Route::get('/checkProjectIsptNumber/{projectId?}', [ProjectoDatacontroller::class, 'checkProjectIsptNumber'])->name('checkProjectIsptNumber');
Route::post('deletePendingEquipments', [
CreateProjectController::class,
'deletePendingEq
uipments'
])->name('deletePendingEquipments');
Route::get('showDetailsEquipmentForQrCode/{equipmentId}/{projectId}', [PreparedProjectController::class, 'showDetailsEquipmentForQrCode'])->name('showDetailsEquipmentForQrCode');
Route::get('showAllEquipmentsInProjectForQrCode/{projectId}', [PreparedProjectController::class, 'showAllEquipmentsInProjectForQrCode'])->name('showAllEquipmentsInProjectForQrCode');
Route::post('DownloadAllPdfsWork',[ProjectoDatacontroller::class,'DownloadAllPdfsWork'])->name('DownloadAllPdfsWork');
Route::post('completedEquipmentInProject',[ProjectoDatacontroller::class,'completedEquipmentInProject'])->name('completedEquipmentInProject');
Route::get('testRelatorio', [ProjectoDatacontroller::class, 'testRelatorio'])->name('testRelatorio');
Route::get('showAllClientsForProjectReports', [ProjectoDatacontroller::class, 'showAllClientsForProjectReports'])->name('showAllClientsForProjectReports');
Route::get('showAllClientsForProjectReportsTable', [ProjectoDatacontroller::class, 'showAllClientsForProjectReportsTable'])->name('showAllClientsForProjectReportsTable');
Route::post('changeEquipmentStatusOnProject', [ProjectoDatacontroller::class, 'changeEquipmentStatusOnProject'])->name('changeEquipmentStatusOnProject');
Route::post('createComment', [ProjectoDatacontroller::class, 'createComment'])->name('createComment');
Route::get('cancelElementalTaskForEquipment/{controlEquipmentID}', [WorkstationsJobsController::class, 'cancelElementalTaskForEquipment'])->name('cancelElementalTaskForEquipment');
// Nao gosto que esteja neste controller, verificar mais tarde
Route::get('projectEquipmentShow/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'projectDetails_11'])->name('projectDetails_11');
Route::get('manageAssets/{equipmentID}', action: [ProjectoDatacontroller::class, 'articulated_22'])->name('articulated_22');
Route::get('showAmbitDetailsProjectHistory/{equipmentStatus}/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'showAmbitDetailsProjectHistory'])->name('showAmbitDetailsProjectHistory');
Route::get('equipmentTaskDetailsPdf', [ProjectoDatacontroller::class, 'equipmentTaskDetailsPdf'])->name('equipmentTaskDetailsPdf');
Route::get('createPDFforcompletedEquipment/{equipmentId}', [ProjectoDatacontroller::class, 'createPDFforcompletedEquipment'])->name('createPDFforcompletedEquipment');
Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment');
Route::get('getDetailsEquipmentQrcode', [ExecutionProjectController::class, 'getDetailsEquipmentQrcode'])->name('getDetailsEquipmentQrcode');
Route::get('teste1', function () {
return (new PdfWrapper)
->loadUrl('https://www.google.pt')
->download('ispt40.pdf');
});
// Route::get('teste1', function () {
// return (new App\Services\PdfWrapper)
// ->loadView('projectsClients.pdf.testePdf', [
// 'card1' => 'Teste cartão 1',
// 'tag' => 'TAG123',
// 'numeroPanini' => 'PANINI456',
// 'nObra' => 'OBRA789',
// 'ambito' => 'Some Ambito'
// ])
// ->stream('ispt40.pdf');
// });
// Route::get('teste1', function () {
// $imagePaths = [
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img1.png',
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img2.png',
// 'receiveImagesControlEquipmentWorkstation/1897_3781/img3.png'
// ];
// return (new PdfWrapper)
// ->loadView('projectsClients.pdf.testePdf', [
// 'card1' => 'Teste cartão 1',
// 'tag' => 'TAG123',
// 'numeroPanini' => 'PANINI456',
// 'nObra' => 'OBRA789',
// 'ambito' => 'Some Ambito',
// 'imagePaths' => $imagePaths // Passa os caminhos das imagens para a view
// ])
// ->stream('ispt40.pdf');
// });
// Route::get('teste1', function () {
// $imagePaths = [
// 'receiveImagesControlEquipmentWorkstation/1926_3781/img1.png',
// 'receiveImagesControlEquipmentWorkstation/1926_3781/img2.png',
// 'receiveImagesControlEquipmentWorkstation/1926_3781/img3.png',
// ];
// return (new PdfWrapper)
// ->loadView('projectsClients.pdf.testePdf', [
// 'card1' => 'Teste cartão 1',
// 'tag' => 'TAG123',
// 'numeroPanini' => 'PANINI456',
// 'nObra' => 'OBRA789',
// 'ambito' => 'Some Ambito',
// 'imagePaths' => $imagePaths // Passa os caminhos das imagens para a view
// ])
// ->stream('ispt40.pdf');
// });
// Route::get('teste1', function () {
// return (new App\Services\PdfWrapper)
// ->loadView('projectsClients.pdf.testePdf', [
// 'card1' => 'Teste cartão 1'
// ])
// ->stream('ispt40.pdf');
// });
Route::post('deleteEquipmentInProject', [CreateProjectController::class, 'deleteEquipmentInProject'])->name('deleteEquipmentInProject');
Route::post('changeAmbitEquipment', [CreateProjectController::class, 'changeAmbitEquipment'])->name('changeAmbitEquipment');
Route::get('getDataEquipmentClient', [ExecutionProjectController::class, 'getDataEquipmentClient'])->name('getDataEquipmentClient');
Route::get('getDataProjects', [ClientController::class, 'getDataProjects'])->name('getDataProjects');
Route::get('getDataProjectsClient', [ClientController::class, 'getDataProjectsClient'])->name('getDataProjectsClient');
Route::get('showReportingEquipmentProject/{dataEquipment}', [ClientController::class, 'showReportingEquipmentProject'])->name('showReportingEquipmentProject'); //oK
Route::get('showReportingForAmbitsProjectPdf/{ambitId}/{projectId}', [ClientController::class, 'showReportingForAmbitsProjectPdf'])->name('showReportingForAmbitsProjectPdf'); //ok
Route::get('getDataAllEquipmentsForAmbitOfProject', [ClientController::class, 'getDataAllEquipmentsForAmbitOfProject'])->name('getDataAllEquipmentsForAmbitOfProject');
// Route::get('test/{id}',[ExecutionProjectController::class, 'projectDetails_11'])->name('projectDetails_11');
// Route::get('getEquipment', [ClientController::class, 'getEquipment'])->name('getEquipment');
// Route::get('getEquipmentsOfAmbit', [ClientController::class, 'getEquipmentsOfAmbit'])->name('getEquipmentsOfAmbit');
// Route::get('getEquipment', [UsersDataTable::class,'getEquipment'])->name('getEquipment');
// Route::get('getEquipment', [UsersDataTable::class, 'html'])->name('getEquipment');
Route::post('language/switch', [LanguageController::class, 'switchLanguage'])->name('language.switch');
// Esta rota so pode aceder quem tiver o link atravez do email
// Route::get('formulario', function () {
// return view('email/FormAdmin');
// })->name('formulario');
Route::get('createUserForm', [FormController::class, 'createUserForm'])->name('createUserForm');
Route::get('/validate-form', [Pending_UserController::class, 'validateForm'])->name('validateForm');
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
// Email
Route::get('/your-verification-route/{id}/{hash}', [UserController::class, 'yourVerificationMethod'])
->middleware(['auth', 'signed', 'throttle:6,1'])
->name('verification.verify');
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
// Rotas protegidas que exigem verificação de e-mail
Route::middleware(['auth'])->group(function () {
/*manageAssets
|--------------------------------------------------------------------------
| User_Type (tecnico)
|--------------------------------------------------------------------------
|*** Routes unique access to the technical
*/
Route::middleware(['checkUserType:enterWorkstation'])->group(function () {
Route::get('enterWorkstation', function () {
return view('workstations.start');
})->name('enterWorkstation');
Route::get('/getEquipmentData/{equipment_id}/{component_tag}', [WorkstationsJobsController::class, 'getEquipmentData'])->name('getEquipmentData');
Route::post('receiveAnswersEquipment/{control_equipment_workstation_id}', [WorkstationsJobsController::class, 'receiveAnswersEquipment'])->name('receiveAnswersEquipment');
Route::post('sendTaskComment/{control_equipment_workstation_id}', [WorkstationsJobsController::class, 'sendTaskComment'])->name('sendTaskComment');
});
Route::middleware(['checkUserType:testClient'])->group(function () {
// Dashboard
Route::get('dashboardClient', [ClientController::class, 'receiveProjectsClient'])->name('dashboardClient');
// Relatorios
Route::get('reportingDataClient/{clientID?}', [ClientController::class, 'reportingDawtaClient'])->name('reportingDataClient');
//Api
Route::get('/api/receiveMonths/{yearsProjects}', [ClientController::class, 'receiveMonths']);
Route::get('/api/receiveDays/{yearProjects}/{monthProjects}', [ClientController::class, 'receiveDays']);
// Equipamentos do Cliente
Route::get('manageAssetsClient', [ClientController::class, 'receiveManageAssetsClient'])->name('manageAssetsClient');
//Relatorios Obras Concluidas
Route::get('showDataDetailsProjectClient/{projectID?}', [ClientController::class, 'showDataDetailsProjectClient'])->name('showDataDetailsProjectClient');
//Api
Route::get('getDataAmbitsOfProject', [ClientController::class, 'getDataAmbitsOfProject'])->name('getDataAmbitsOfProject');
Route::get('getDataEquipmentsOfProject', [ClientController::class, 'getDataEquipmentsOfProject'])->name('getDataEquipmentsOfProject');
// Relatorio por Ambito de uma Determinada Obra.
Route::get('showReportingForAmbitsProject/{ambitId}/{projectId}', [ClientController::class, 'showReportingForAmbitsProject'])->name('showReportingForAmbitsProject');
//Api
Route::get('getEquipmentsOfAmbit', [ClientController::class, 'getEquipmentsOfAmbit'])->name('getEquipmentsOfAmbit');
});
/*
|--------------------------------------------------------------------------
| User_Type (Super_Administrador)
|--------------------------------------------------------------------------
|*** Routes unique access to the Super_Administrator, Administrator
*/
Route::middleware(['checkUserType:home'])->group(function () {
Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home');
/*
|--------------------------------------------------------------------------
| CRUD - users
|--------------------------------------------------------------------------
| Definition routes to implement the CRUD model
*/
Route::controller(userController::class)
->group(function () {
Route::get('users/listUsers', 'listUsers')->name('users.list');
Route::get('users/listCompanies', 'listCompanies')->name('users.company');
Route::get('users/{id}', 'show')->name('users.Show');
Route::get('users/{id}/edit', 'edit')->name('users.edit');
Route::put('users/{user}', 'update')->name('users.update');
Route::delete('users/{user}', 'destroy')->name('users.destroy');
Route::post('editProfile/{id}', 'EditProfile')->name('editProfile');
Route::get('company/{id}', 'showCompany')->name('showCompany');
Route::post('createCompany', 'createCompany')->name('createCompany');
Route::post('companyEdit', 'companyEdit')->name('companyEdit');
});
Route::post('editEquipmentTasks/{equipmentID}/{projectId}', [ProjectoDatacontroller::class, 'editEquipmentTasks'])->name('editEquipmentTasks');
/*
|--------------------------------------------------------------------------
| Management of projects created
|--------------------------------------------------------------------------
|
*/
Route::controller(CreateProjectController::class)
->group(function () {
// indication of progress bar to projects that are in 'Planning'
Route::get('projectDetails_1/{id}', 'showStep1')->name('projectDetails_1');
Route::get('articulated_2/{projectID}', 'showStep2')->name('articulated_2');
Route::get('workStation_3/{id}', 'showStep3')->name('workStation_3');
// Para adicionar uma tarefa Complementar
Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks');
Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks');
Route::get('createProject', 'createProjectForStep1')->name('createProject');
Route::post('receiveEquipmentToAssociateTasks', 'receiveEquipmentToAssociateTasks')->name('receiveEquipmentToAssociateTasks');
Route::get('finishCreatingProject/{numberProject}', 'finishCreatingProject')->name('finishCreatingProject');
Route::get('testDataTables', 'testDataTables')->name('testDataTables');
Route::get('workstationsAssociationTasks', 'workstationsAssociationTasks')->name('workstationsAssociationTasks');
Route::get('AddNomenclatureWorkstation', 'AddNomenclatureWorkstation')->name('AddNomenclatureWorkstation');
Route::get('removeProjectEquipment', 'removeProjectEquipment')->name('removeProjectEquipment');
Route::delete('deleteWorkstation/{name}', 'deleteWorkstation')->name('deleteWorkstation');
Route::post('editEquipment', 'EditEquipment')->name('editEquipment');
Route::post('newProject1', 'processStep1')->name('processStep1');
Route::post('createWorkStations', 'createWorkStations')->name('createWorkStations');
Route::post('projectDetails_1', 'EditprocessStep1')->name('EditprocessStep1');
Route::post('articulated_2', 'processStep2')->name('processStep2');
Route::post('articulated_2CreateEquipment', 'createEquipmentManual')->name('articulated_2CreateEquipment');
Route::post('workStation_3', 'processStep3');
Route::delete('removeEquipment/{id}', 'removePendingEquipment')->name('removeEquipment');
Route::post('CreateNewEquipmentFromPendingEquipment/{id}', 'CreateNewEquipmentFromPendingEquipment')->name('CreateNewEquipmentFromPendingEquipment');
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
Route::get('equipments/{id}/attributes', 'getAttributes');
Route::post('removingElementalTasksFromProject', 'removingElementalTasksFromProject')->name('removingElementalTasksFromProject');
/*
|--------------------------------------------------------------------------
| Template Excel
|--------------------------------------------------------------------------
*/
Route::get('template1/{numberProject}', 'receiveUnitsForExcelTemplate')->name('download');
});
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
Route::get('preparedProject/{projectID}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject');
Route::get('EditProjectForArticulated', [PreparedProjectController::class, 'editProjectForArticulated'])->name('EditProjectForArticulated');
Route::get('ExecutionProject/{projectID}', [ExecutionProjectController::class, 'receiveExecutionProject'])->name('ExecutionProject');
Route::get('/ReceiveEquipmentIdForShowModal/{EquipmentID}', [ExecutionProjectController::class, 'receiveEquipmentIdForShowModal'])->name('ReceiveEquipmentIdForShowModal ');
Route::any('/changeFromExecutionToPlanning/{projectID}', [ExecutionProjectController::class, 'changeFromExecutionToPlanning'])->name('changeFromExecutionToPlanning');
Route::get('showQrcodesInProject/{projectNumber}', [ExecutionProjectController::class, 'showQrcodesInProject'])->name('showQrcodesInProject');
//Gerir os Ativos gerais
Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets');
Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit');
Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles');
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
// Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register');
Route::get('/createNewUsers/{typeUser}', [Pending_UserController::class, 'ListPendingUsers'])->name('createNewUsers');
// Mostrar Instalação click
});
});
// *** All api routes have been moved to api.php ***
Route::get('/api/receiveEquipmentsExecutionProject/{receiveNumberProject}', [ExecutionProjectController::class, 'receiveEquipmentsExecutionProject'])->name('receiveEquipmentsExecutionProject');
Route::get('/api/receiveAllEquipments', [ProjectoDatacontroller::class, 'receiveAllEquipments']);
Route::get('/api/receiveEquipmentsProject/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveEquipmentsProject']);
Route::get('/api/receiveWorkstationProject/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveWorkstationProject']);
Route::get('/api/getEquipmentDetails/{receiveListEquipmentId}', [ProjectoDatacontroller::class, 'getEquipmentDetails']);
// Route::get('/api/receiveAllInstallationEquipment/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveAllInstallationEquipment']);
Route::get('/api/receiveAllInstallationEquipment', [ProjectoDatacontroller::class, 'receiveAllInstallationEquipment'])->name('api_receiveAllInstallationEquipment');
Route::get('/api/receveTasksWorkstationPlanning/{WorkstationId}', [CreateProjectController::class, 'receveTasksWorkstationPlanning']);
Route::get('/api/ambits/prepared{equipmentType}', [PreparedProjectController::class, 'getAmbits']);
Route::get('/api/equipment/{id}', [CreateProjectController::class, 'showJson']);
Route::get('/api/installations/', [CreateProjectController::class, 'getByUserNif']);
Route::get('/api/ambits/{equipmentType}', [CreateProjectController::class, 'getAmbits']);
Route::get('/api/receiveQuestionsEquipment/{equipmentID}', [WorkstationsJobsController::class, 'receiveQuestionsEquipment']);
// Route::get('/api/receiveUnits', [CreateProjectController::class, 'receiveUnits']);
//Rota Api diretamente para a cracao da Obra
Route::get('/api/receiveUnits/{numberProject}', [CreateProjectController::class, 'receiveUnits']);
Route::get('api/receivePlants/{receiveAllClients}', [ProjectoDatacontroller::class, 'receivePlants']);
Route::get('api/receiveUnitsManageAssets/{receivePlantClientRelated}', [ProjectoDatacontroller::class, 'receiveUnitsManageAssets']);
// Route::get('api/reloadWsPage{controlEquipmentId}',[WorkstationsJobsController::class,'reloadWsPage']);
// Route::post('/api/reloadWsPage/{controlEquipmentId}', [WorkstationsJobsController::class, 'reloadWsPage']);
// Route::post('/api/reloadWsPage/{controlEquipmentId}', [WorkstationsJobsController::class, 'reloadWsPage']);
// Route::post('/api/updateWorkstationStatus/', [WorkstationsJobsController::class, 'updateWorkstationStatus']);
// Route::post('/api/closeWorkstationSession/', [WorkstationsJobsController::class, 'closeWorkstationSession']);
Route::get('/api/verify-equipment-te7/{id}', [WorkstationsJobsController::class, 'verifyEquipmentStatusTe7']);
Route::post('/api/updateSessionStatus/{controlEquipmentId}', [WorkstationsJobsController::class, 'updateSessionStatus']);
Route::post('/api/closeSession/{controlEquipmentId}', [WorkstationsJobsController::class, 'closeSession']);
Route::get('/api/receiveDetailsEquipmentsProject/', [ExecutionProjectController::class, 'receiveDetailsEquipmentsProject'])->name('receiveDetailsEquipmentsProject');
// // Rotas para o tipo de usuário 'Técnico'
// Route::middleware(['auth', 'checkUserType:enterWorkstation'])->group(function () {
// Route::get('enterWorkstation', function () {
// return view('workstations.start');
// })->name('enterWorkstation');
// // Adicione outras rotas específicas para 'Técnico' aqui
// });
// Rotas para o tipo de usuário 'Empresa'
Route::middleware(['auth', 'checkUserType:dashboardClient'])->group(function () {
Route::get('dashboardClient', [ClientController::class, 'receiveProjectsClient'])->name('dashboardClient');
// Adicione outras rotas específicas para 'Empresa' aqui
});