diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index 5c1c9ec3..654e8274 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\AmbitsEquipment; +use App\Models\AssociationCompanyUser; use App\Models\Equipment; use App\Models\EquipmentAssociationAmbit; use App\Models\EquipmentWorkHistory; @@ -396,8 +397,12 @@ public function getDataProjects(Request $request) public function receiveProjectsClient() { $client = Auth::user()->user_id; + // DD($client); + $recebeCompanyID = AssociationCompanyUser::where('user_id',$client)->first(); - $recevePlantClient = Plant::where('user_id', $client)->get(); + + + $recevePlantClient = Plant::where('company_id', $recebeCompanyID->company_id)->get(); // Extrai os plant_id da coleção $recevePlantClient $plantsIds = $recevePlantClient->pluck('plant_id'); diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 779b33a8..3b0bbcbe 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers; +use App\Models\AssociationCompanyUser; +use App\Models\Company; use App\Models\EquipmentWorkHistory; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -150,7 +152,7 @@ public function deletePendingEquipments(Request $request) $pendingEquipmentIds = $request->input('pendingEquipmentIds', []); // Verifica se o array não está vazio - if (!empty ($pendingEquipmentIds)) { + if (!empty($pendingEquipmentIds)) { // Deleta todos os registros de PendingEquipment que correspondam aos IDs PendingEquipment::whereIn('pending_equipment_id', $pendingEquipmentIds)->delete(); } @@ -187,7 +189,7 @@ public function deleteFurtherTasks(Request $request) //Se o utilizador click mas nao associar as tarefas. $selectedTasks = $request->input('selectedTasks', []); - if (empty ($selectedTasks)) { + if (empty($selectedTasks)) { return back()->with('danger', 'Não existem tarefas complementares selecionadas para exclusão.'); } @@ -471,9 +473,9 @@ public function finishCreatingProject($numberProject) $taskId = $furtherTask->elemental_tasks_id; // Verificar se a tarefa está associada a algum id_workstations - $checkExistFurtherTaskInWs = WorkstationsAssociationTasks::whereIn('id_workstations',$workstationIds) - ->where('elemental_tasks_id',$taskId) - ->exists(); + $checkExistFurtherTaskInWs = WorkstationsAssociationTasks::whereIn('id_workstations', $workstationIds) + ->where('elemental_tasks_id', $taskId) + ->exists(); // Se não existe, adicionar à lista de tarefas faltantes if (!$checkExistFurtherTaskInWs) { @@ -493,7 +495,7 @@ public function finishCreatingProject($numberProject) 'workstation' => $missingWorkstations ]; // Verificar se todos os arrays internos estão vazios - $isEmpty = empty ($allMissingTasks['elemental']) && empty ($allMissingTasks['further']) && empty ($allMissingTasks['workstation']); + $isEmpty = empty($allMissingTasks['elemental']) && empty($allMissingTasks['further']) && empty($allMissingTasks['workstation']); if (!$isEmpty) { return redirect()->back()->with('errors', $allMissingTasks); @@ -699,11 +701,11 @@ public function createWorkStations(Request $request) ->with('listWorkstations', $listWorkstations); } - // Funcao apenas para retornar os dados necessarios para a view criar uma Obra. public function createProjectForStep1() { - $companies = User::where('type_users', 3)->get(); + // $companies = User::where('type_users', 3)->get(); + $companies = Company::all(); // Apos terminar não vai ficar step 1 return view('projectsClients/createProject', ['step' => 1], ['companies' => $companies]); } @@ -857,7 +859,7 @@ public function processStep1(Request $request) $newInstallation->plant_name = $request->input('new_company_name'); $newInstallation->plant_address = $request->input('new_company_address'); - $newInstallation->user_id = $request->input('user_id'); + $newInstallation->company_id = $request->input('company_select'); $newInstallation->save(); @@ -891,7 +893,7 @@ public function processStep1(Request $request) $project->save(); - return redirect()->route('articulated_2', ['id' => $project->company_projects_id]) + return redirect()->route('articulated_2', ['projectID' => $project->company_projects_id]) ->with('success', 'Project criado com sucesso!'); } @@ -990,7 +992,7 @@ public function createEquipmentManual(Request $request) ]); if ($existingEquipment) { - return redirect()->route('articulated_2', ['id' => $request->numberProject]) + return redirect()->route('articulated_2', ['projectID' => $request->numberProject]) ->with('danger', 'Equipamento ja Existe !!') ->with('listEquipmentsProjects', $listEquipmentsProjects); } @@ -1103,7 +1105,7 @@ public function createEquipmentManual(Request $request) } // O $request->numberProject e sempre necessario retornar para indicar a obra que se esta modificando... - return redirect()->route('articulated_2', ['id' => $request->numberProject]) + return redirect()->route('articulated_2', ['projectID' => $request->numberProject]) ->with('success', 'Equipamento criado com sucesso') ->with('listEquipmentsProjects', $listEquipmentsProjects); } @@ -1153,7 +1155,7 @@ public function processStep2(Request $request) $dataLines = $data[$i]; // Verifica se a coluna 'fábrica' (primeiro campo) está vazia - if (empty ($dataLines[0])) { + if (empty($dataLines[0])) { // Se a coluna 'fábrica' estiver vazia, pule para a próxima linha continue; } @@ -1161,7 +1163,7 @@ public function processStep2(Request $request) // Verifica se os 5 primeiros campos essenciais estão preenchidos for ($j = 0; $j < 5; $j++) { - if (empty ($dataLines[$j])) { + if (empty($dataLines[$j])) { // Adiciona o índice do campo vazio ao array $camposVazios $emptyFields[] = $columnRealNames[$j]; // ou simplesmente $j se não tiver o nome da coluna } @@ -1292,7 +1294,7 @@ public function processStep2(Request $request) } elseif ($chooseAction == 'createEquipments') { - if (!empty ($emptyFields)) { + if (!empty($emptyFields)) { // Se houver campos vazios, adicione a linha e os campos vazios às linhas ignoradas $ignoredLines[] = [ 'line' => $i + 1, @@ -1433,7 +1435,7 @@ public function processStep2(Request $request) } } - if ($countPendingEquipments != 0 && !empty ($equipmentPendingLogs)) { + if ($countPendingEquipments != 0 && !empty($equipmentPendingLogs)) { // Se houver equipamentos pendentes, redirecione com essa informação e inclua os $linhasIgnoradas se não estiverem vazios return redirect()->route('articulated_2', ['id' => $request->numberProject]) ->with('danger', 'Equipamentos Pendentes criados: ' . $countPendingEquipments) @@ -1536,9 +1538,9 @@ public function workstationsAssociationTasks(Request $request) // Atualizar a lista de tipos de tarefas para incluir os novos grupos $taskTypes = ['generalTasks', '1', '2', '3', 'FurtherTasks']; - + foreach ($taskTypes as $groupTasks) { - if (isset ($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request + if (isset($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request foreach ($request[$groupTasks] as $taskID => $check) { //Este code pode parecer repetitivo, pois antes tinha uma tabela para os 2 tipos de tarefa. TE e TC apos atualizacao ambas ficam em uma so tabela, porem por falta de tempo ainda nao foi melhorado sua logina , MAS FUNCIONA !!!! @@ -1607,7 +1609,7 @@ public function index() $groupedEquipments = []; foreach ($results as $result) { - if (!isset ($groupedEquipments[$result->tag])) { + if (!isset($groupedEquipments[$result->tag])) { $groupedEquipments[$result->tag] = []; } @@ -1620,7 +1622,7 @@ public function index() $equipments = DB::table('equipments')->get(); foreach ($equipments as $equipment) { - if (isset ($groupedEquipments[$equipment->tag])) { + if (isset($groupedEquipments[$equipment->tag])) { $equipment->specific_attributes = $groupedEquipments[$equipment->tag]; } } @@ -1691,15 +1693,32 @@ public function storeProject(Request $request) // Agora, você pode usar $company_id ao criar o projeto } + // public function getByUserNif(Request $request) + // { + + // $user_id = $request->input('user_id'); //Check + // $installations = Plant::where('user_id', $user_id)->get(); + + // $associationUserCompany = AssociationCompanyUser::where('association_company_user_id',$user_id)->get(); + + // return response()->json($installations); + // } + public function getByUserNif(Request $request) { + $companyId = $request->input('company_id'); // Considerando que este ID é na verdade o ID da empresa - // dd(Plant::where('user_id', $request->input('user_id'))->get()); + // Busca as instalações associadas à empresa + // $installations = Plant::where('company_id', $companyId)->get(); - $user_id = $request->input('user_id'); //Check - $installations = Plant::where('user_id', $user_id)->get(); + // Busca os usuários associados à empresa + $userIds = AssociationCompanyUser::where('company_id', $companyId)->pluck('user_id'); + $users = User::whereIn('user_id', $userIds)->get(); - return response()->json($installations); + return response()->json([ + // 'installations' => $installations, + 'users' => $users + ]); } public function getAmbits($equipmentType) diff --git a/app/Http/Controllers/CustomRegistrationController.php b/app/Http/Controllers/CustomRegistrationController.php index 9db11e3e..459cb154 100755 --- a/app/Http/Controllers/CustomRegistrationController.php +++ b/app/Http/Controllers/CustomRegistrationController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\AssociationCompanyUser; use Illuminate\Http\Request; use App\Actions\Fortify\CreateNewUser; @@ -25,8 +26,10 @@ class CustomRegistrationController extends Controller { public function store(Request $request): RedirectResponse { + // dd($request); $user = app(CreateNewUser::class)->create($request->all()); + $pendingUser = PendingUser::where('pending_user_email', $user->email)->first(); if ($pendingUser) { $pendingUser->delete(); @@ -36,9 +39,16 @@ public function store(Request $request): RedirectResponse $user->sendEmailVerificationNotification(); } + if($request->type_users == 3 && $request->company){ + $associationUserCompany = new AssociationCompanyUser; + $associationUserCompany->company_id = $request->company; + $associationUserCompany->user_id = $user->user_id; + $associationUserCompany->save(); + } + return $request->wantsJson() ? new JsonResponse([], 201) - : Redirect::to('/CreateUsers')->with('success', 'Utilizador criado com sucesso, aguarda confirmacao por Email!!'); + : Redirect::to('/CreateUsers')->with('status', 'Utilizador criado com sucesso !'); } diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php index bf057e85..8a92670a 100755 --- a/app/Http/Controllers/FormController.php +++ b/app/Http/Controllers/FormController.php @@ -2,21 +2,62 @@ namespace App\Http\Controllers; +use App\Models\FormAccessToken; use Illuminate\Http\Request; +use Illuminate\Support\Str; +use Carbon\Carbon; use Illuminate\Support\Facades\Mail; class FormController extends Controller { + public function createUserForm(Request $request) + { + $token = $request->query('token'); + $tokenRecord = FormAccessToken::where('token', $token)->first(); + + if (!$tokenRecord || $tokenRecord->expires_at <= now()) { + if ($tokenRecord) { + $email = $tokenRecord->email; + $tokenRecord->delete(); // Apaga o registro do token expirado + // Reenviar o email + $this->gerarEnviarEmail($email); + + return redirect('/login')->with('success', 'O token anterior expirou, consequentemente,um novo link foi remetido para o seu email.'); + } else { + return redirect('/login')->with('danger', 'O token é inválido.'); + } + } else { + // Token é válido e ainda não expirou + return view('email/FormAdmin', compact('tokenRecord')); + } + } + public function enviarEmail(Request $request) { $email = $request->input('email'); - - Mail::send('email.email', [], function ($message) use ($email) { - $message->to($email); - $message->subject('Formulário "Ispt4.0"'); - }); + $this->gerarEnviarEmail($email); return back()->with('status', 'Email enviado com sucesso!'); } + + protected function gerarEnviarEmail($email) + { + // Gerar um token único + $token = Str::random(60); + // Definir o tempo de expiração do token (ex: 1 hora a partir de agora) + $expiresAt = Carbon::now()->addHour(); + // Criar registro na tabela form_access_tokens + FormAccessToken::create([ + 'token' => $token, + 'email' => $email, + 'expires_at' => $expiresAt, + ]); + + // Enviar email + Mail::send('email.email', ['token' => $token], function ($message) use ($email) { + $message->to($email); + $message->subject('Formulário "Ispt4.0"'); + }); + } } diff --git a/app/Http/Controllers/Pending_UserController.php b/app/Http/Controllers/Pending_UserController.php index 20c46713..ed03647a 100755 --- a/app/Http/Controllers/Pending_UserController.php +++ b/app/Http/Controllers/Pending_UserController.php @@ -2,6 +2,9 @@ namespace App\Http\Controllers; +use App\Models\Company; +use App\Models\CompanyProject; +use App\Models\FormAccessToken; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; @@ -17,6 +20,74 @@ class Pending_UserController extends Controller { + + public function validateForm(Request $request) + { + $value = $request->get('value'); + $type = $request->get('type'); + + + // Inicializa os resultados como null para indicar que não foram verificados + $resultEmail = null; + $resultNif = null; + $resultPhone = null; + + + if ($type === 'email') { + $columnEmail = ['pending_user_email', 'email']; + + $existsInPendingUser = PendingUser::where($columnEmail[0], $value)->exists(); + $existsInUser = User::where($columnEmail[1], $value)->exists(); + + if ($existsInPendingUser && $existsInUser) { + $resultEmail = 3; + } elseif ($existsInPendingUser) { + $resultEmail = 2; + } elseif ($existsInUser) { + $resultEmail = 1; + } else { + $resultEmail = 0; + } + } elseif ($type === 'nif') { + $columnNif = ['pending_user_nif', 'user_nif']; + + $existsInPendingUser = PendingUser::where($columnNif[0], $value)->exists(); + $existsInUser = User::where($columnNif[1], $value)->exists(); + + if ($existsInPendingUser && $existsInUser) { + $resultNif = 3; + } elseif ($existsInPendingUser) { + $resultNif = 2; + } elseif ($existsInUser) { + $resultNif = 1; + } else { + $resultNif = 0; + } + } elseif ($type === 'phone') { + $resultPhone = ['pending_user_phone', 'user_phone']; + + $existsInPendingUser = PendingUser::where($resultPhone[0], $value)->exists(); + $existsInUser = User::where($resultPhone[1], $value)->exists(); + + if ($existsInPendingUser && $existsInUser) { + $resultPhone = 3; + } elseif ($existsInPendingUser) { + $resultPhone = 2; + } elseif ($existsInUser) { + $resultPhone = 1; + } else { + $resultPhone = 0; + } + } + + return response()->json([ + 'result_email' => $resultEmail, + 'result_nif' => $resultNif, + 'result_phone' => $resultPhone + ]); + } + + public function ListPendingUsers() { $pend_users = PendingUser::all(); @@ -27,13 +98,15 @@ public function ShowFormUser($id) { $pend_user = PendingUser::findOrFail($id); $types = TypeUser::all(); - return view('Admin.CrudUsers.createUser', compact('pend_user', 'types')); + $allCompanies = Company::all(); + + return view('Admin.CrudUsers.createUser', compact('pend_user', 'types','allCompanies')); } public function store(Request $request) { - + // dd($request); $request->validate([ 'name' => 'required', 'lastName' => 'required', @@ -42,22 +115,7 @@ public function store(Request $request) 'pending_nif' => 'required', 'pending_password' => 'required|min:8|confirmed', ]); - - // $validator = Validator::make($request->all(), [ - // 'name' => 'required', - // 'lastName' => 'required', - // 'pending_email' => 'required', - // 'pending_phone' => 'required', - // 'pending_nif' => 'required', - // 'pending_password' => 'required', - // 'pending_password_confirmation' => 'required' - // ]); - - // dd($validator); - // if ($validator->fails()) { - // return redirect()->back()->withErrors($validator)->withInput(); - // } - + $joinName = $request->get('name') . ' ' . $request->get('lastName'); $pendingUser = new PendingUser(); @@ -69,6 +127,13 @@ public function store(Request $request) $pendingUser->save(); + //Recebe o token criado para preencher o formulario e apaga o mesmo apos criar o User. + $receiveToken = FormAccessToken::where('token',$request->get('receiveToken'))->first(); + + if($receiveToken){ + $receiveToken->delete(); + } + // Enviar email de notificação para todos os Super_Administrador $superAdmins = User::where('type_users', 'Super_Administrador')->get(); $newUserNotification = new NewUserNotification(); @@ -77,7 +142,7 @@ public function store(Request $request) Mail::to($superAdmin->email)->send($newUserNotification); } - return redirect('/formulario')->with('success', 'O seu registo foi submetido e encontra-se pendente de aprovação. Pode encerrar a página. '); + return redirect('login')->with('success', '"O seu registo foi submetido e está atualmente pendente de aprovação. Por favor, aguarde antes de iniciar sessão no sistema." '); } diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php index f0f46127..cf66ba7a 100755 --- a/app/Http/Controllers/userController.php +++ b/app/Http/Controllers/userController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers; +use App\Models\AssociationCompanyUser; +use App\Models\Company; use App\Models\TypeUser; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Auth; @@ -20,9 +22,11 @@ use Illuminate\Auth\Events\Verified; use App\Models\User; +use App\Models\FormAccessToken; class userController extends Controller { + public function EditProfile(Request $request) { // Verifica se um arquivo foi enviado e se o tamanho é maior que 70 KB @@ -77,7 +81,6 @@ public function EditProfile(Request $request) return back()->with('success', "Perfil actualizado com sucesso!"); } - public function UserProfile($id) { $user = User::find($id); @@ -131,12 +134,6 @@ public static function authenticateAndRedirect(Request $request) } - public function listCompanies() - { - $users = User::with('userType')->where('type_users', '=', 3)->get(); - - return view('Admin.CrudUsers.listCompany', compact('users')); - } //Busca Todos os Utilizador Exeto as 'Empresas' public function listUsers() @@ -162,13 +159,13 @@ public function edit($id) // } else return view('Admin.CrudUsers.editUsers', compact('user')); - + } public function update(Request $request, User $user) { - //Por enquanto foi retirado o 'user_type' pois ainda não é necessario alterar o tipo de utilizador na edição. + //Por enquanto foi retirado o 'user_type' pois ainda não é necessario alterar o tipo de utilizador na edição. $request->validate([ 'name' => 'required', @@ -190,10 +187,10 @@ public function update(Request $request, User $user) $user->save(); - if($user->type_users == 3){ + if ($user->type_users == 3) { return redirect('/users/listCompanies')->with('success', 'Utilizador atualizado com Sucesso!!'); - - }else + + } else return redirect('/users/listUsers')->with('success', 'Utilizador atualizado com Sucesso!!'); } @@ -230,11 +227,51 @@ public function destroy(User $user) { $user->delete(); - if($user->type_users == 3){ + if ($user->type_users == 3) { return redirect('/users/listCompanies')->with('success', 'Empresa deletado com sucesso!'); - }else { + } else { return redirect('/users/listUsers')->with('success', 'Utilizador deletado com sucesso!'); } } + + public function listCompanies() + { + // $users = User::with('userType')->where('type_users', '=', 3)->get(); + $companiesList = Company::all(); + + // $companierList = AssociationCompanyUser + + return view('Admin.CrudUsers.listCompany', compact('companiesList')); + } + + public function showCompany($id) + { + + $company = Company::where('company_id', $id)->first(); + + // Busca todos os registros na tabela association_company_user que correspondem à company_id + $associationRecords = AssociationCompanyUser::where('company_id', $id)->get(); + + // Extrai todos os user_id da coleção de registros + $userIds = $associationRecords->pluck('user_id'); + + // Busca os detalhes dos usuários na tabela users usando os IDs coletados + $companyUsers = User::whereIn('user_id', $userIds)->get(); + + return view('Admin.CrudCompanies.showCompanyDetails', compact('company','companyUsers')); + } + + + public function createCompany(Request $request) + { + + $createCompany = new Company; + $createCompany->company_name = $request->company_name; + $createCompany->save(); + + return redirect('CreateUsers')->with('status', 'A Empresa ' . $createCompany->company_name . ' foi criada com êxito. Consulte na página "Empresas".'); + } + + } diff --git a/app/Http/Middleware/CheckUserType.php b/app/Http/Middleware/CheckUserType.php index 3944a742..32cf4ea9 100755 --- a/app/Http/Middleware/CheckUserType.php +++ b/app/Http/Middleware/CheckUserType.php @@ -71,8 +71,11 @@ protected function getAllowedRoutesForUserType($userType) 'users.company','users.Show','users.edit','users.destroy','users.update','users.list', 'CreateUsers', 'enviar.formulario', - 'projectDetails_1','workStation_3','addFurtherTasks','deleteFurtherTasks','editEquipmentTasks' - + 'projectDetails_1','workStation_3','addFurtherTasks','deleteFurtherTasks','editEquipmentTasks', + 'usersProfiles','showCompany', + 'articulated_2CreateEquipment','processStep2','deleteEquipmentInProject','changeAmbitEquipment', + 'deletePendingEquipments','CreateNewEquipmentFromPendingEquipment','removeEquipment','receiveEquipmentToAssociateTasks', + '' ]; diff --git a/app/Models/AssociationCompanyUser.php b/app/Models/AssociationCompanyUser.php new file mode 100644 index 00000000..0fe1b665 --- /dev/null +++ b/app/Models/AssociationCompanyUser.php @@ -0,0 +1,16 @@ +belongsToMany(User::class, 'association_company_user', 'company_id', 'user_id'); + } + + +} diff --git a/app/Models/FormAccessToken.php b/app/Models/FormAccessToken.php new file mode 100644 index 00000000..2c1fae15 --- /dev/null +++ b/app/Models/FormAccessToken.php @@ -0,0 +1,36 @@ + 'datetime', + ]; +} \ No newline at end of file diff --git a/app/Models/Plant.php b/app/Models/Plant.php index d042062a..e763fd04 100755 --- a/app/Models/Plant.php +++ b/app/Models/Plant.php @@ -15,9 +15,9 @@ class Plant extends Model public $timestamps = false; - public function user(){ - return $this->belongsTo(User::class, 'user_id', 'user_id'); - } + // public function user(){ + // return $this->belongsTo(User::class, 'user_id', 'user_id'); + // } public function companyProjects(){ return $this->hasMany(CompanyProject::class, 'plant_id', 'plant_id'); diff --git a/app/Models/User.php b/app/Models/User.php index 45686ddb..99033bf4 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -61,4 +61,8 @@ public function plants(){ return $this->hasMany(Plant::class,'user_id', 'user_id'); } + public function companies() + { + return $this->belongsToMany(Company::class, 'association_company_user', 'user_id', 'company_id'); + } } diff --git a/public/assets/dist/css/countryFlag.css b/public/assets/dist/css/countryFlag.css index d425c360..f76741e3 100644 --- a/public/assets/dist/css/countryFlag.css +++ b/public/assets/dist/css/countryFlag.css @@ -1,4 +1,4 @@ -/* International Telephone Input Css */ +/* International Telephone Input Css .flag-container { position: absolute; top: 0; @@ -20,8 +20,42 @@ .selected-flag { align-items: center; height: 100%; padding: 0 6px 0 8px; +} */ + +/* Estilização para o input de telefone */ +input#pending_phone { + padding-left: 50px; + /* Ajuste este valor baseando-se na largura do seu seletor de bandeiras */ + position: relative; } +/* International Telephone Input Css */ +.flag-container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + padding: 1px; + z-index: 2; + /* Garante que o seletor de bandeiras fique acima do input */ +} + +.flag-container:hover { + cursor: pointer; +} + +.selected-flag { + z-index: 3; + /* Mais especificidade para garantir que fique acima do input */ + position: absolute; + /* Posicionamento absoluto dentro do input */ + display: flex; + align-items: center; + height: 100%; + padding: 0 6px 0 8px; +} + + .flag.bd { height: 12px; background-position: -418px 0; @@ -138,7 +172,8 @@ .flag.va { width: 15px; } -@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { +@media (-webkit-min-device-pixel-ratio: 2), +(min-resolution: 192dpi) { .flag { background-size: 5652px 15px; } @@ -1444,7 +1479,8 @@ .flag { background-position: 20px 0; } -@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { +@media (-webkit-min-device-pixel-ratio: 2), +(min-resolution: 192dpi) { .flag { background-image: url("../../../img/flagsImg/flags.png"); } diff --git a/resources/lang/pt/messages.php b/resources/lang/pt/messages.php index 78a0d501..86c4c9b0 100755 --- a/resources/lang/pt/messages.php +++ b/resources/lang/pt/messages.php @@ -54,7 +54,7 @@ 'users_listUsers' => [ //Navbar 'users' => 'Utilizadores', - 'companies' => 'Clientes', + 'companies' => 'Empresas', 'create_users' => 'Criar Utilizadores', 'top_view_part' => [ diff --git a/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php b/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php new file mode 100644 index 00000000..b09127fc --- /dev/null +++ b/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php @@ -0,0 +1,130 @@ +@extends('Templates/templateAdmin') + +@section('Main-content') +
+
+
+
+

{{ $company->company_name }}

+
+
+ +
+
+
+
+ +
+
+ +
+
+

Detalhes da Empresa

+
+ +
+ +
+
+

Utilizadores associados a Empresa

+
+
+ + + + + + + + + + + + @foreach ($companyUsers as $user) + + + + + + @endforeach + {{-- @foreach ($companiesList as $company) + + + + + @endforeach --}} + +
NomeEmailAções
{{ $user->user_name }}{{ $user->email }} + +
{{ $company->company_name }} + +
+
+
+ +
+ {{-- /.card-body --}} +
+ +
+
+@endsection + +@section('scriptsTemplateAdmin') + +@endsection diff --git a/resources/views/Admin/CrudUsers/createUser.blade.php b/resources/views/Admin/CrudUsers/createUser.blade.php index 811c9298..8097c734 100755 --- a/resources/views/Admin/CrudUsers/createUser.blade.php +++ b/resources/views/Admin/CrudUsers/createUser.blade.php @@ -51,7 +51,7 @@
-
@@ -66,7 +66,7 @@
-
+
-
+ + + +
+ +
+
+
@@ -91,7 +108,8 @@ {{-- ./card-light --}}
-{{-- + + {{--
@@ -143,4 +161,20 @@
--}} + + @endsection diff --git a/resources/views/Admin/CrudUsers/listCompany.blade copy.php b/resources/views/Admin/CrudUsers/listCompany.blade copy.php new file mode 100755 index 00000000..b924ed62 --- /dev/null +++ b/resources/views/Admin/CrudUsers/listCompany.blade copy.php @@ -0,0 +1,108 @@ +@extends('Templates/templateAdmin') + +@section('Main-content') + @if (session('success')) +
+ {{ session('success') }} +
+ @endif + +
+
+
+
+

{{__('messages.users_listUsers.top_view_part.companies')}}

+
+
+ +
+
+
+
+ +
+
+
+
+

{{__('messages.users_listUsers.top_view_part.companies_table')}}

+
+ {{-- ./card-header --}} +
+
+ + + + + + + + + + + + @foreach ($users as $user) + + + + + + + + @endforeach + +
IDNomeEmailTipo de UtilizadorAções
{{ $user->user_id }}{{ $user->user_name }}{{ $user->email }}{{ $user->userType->type_user }} + +
+
+ +
+ +
+ {{-- ./card-light --}} +
+ {{-- /.container-fluid" --}} +
+@endsection + +@section('scriptsTemplateAdmin') + +@endsection \ No newline at end of file diff --git a/resources/views/Admin/CrudUsers/listCompany.blade.php b/resources/views/Admin/CrudUsers/listCompany.blade.php index b924ed62..21fc450e 100755 --- a/resources/views/Admin/CrudUsers/listCompany.blade.php +++ b/resources/views/Admin/CrudUsers/listCompany.blade.php @@ -35,20 +35,14 @@ - - - - @foreach ($users as $user) + @foreach ($companiesList as $company) - - - - + diff --git a/resources/views/Admin/CrudUsers/showUsers.blade.php b/resources/views/Admin/CrudUsers/showUsers.blade.php index 4dfdff1b..20b9ae52 100755 --- a/resources/views/Admin/CrudUsers/showUsers.blade.php +++ b/resources/views/Admin/CrudUsers/showUsers.blade.php @@ -5,23 +5,27 @@
- @if($user->type_users == 3) + {{-- @if($user->type_users == 3)

Detalhes da Empresa

@else

Detalhes do Utilizador

- @endif + @endif --}} +

Detalhes do Utilizador

+
@@ -33,11 +37,13 @@
- @if ($user->type_users == 3) + {{-- @if ($user->type_users == 3) Empresa : {{ $user->user_name }} @else Utilizador : {{ $user->user_name }} - @endif + @endif --}} + Utilizador : {{ $user->user_name }} +
@@ -80,14 +86,13 @@ @if ($user->type_users != 1) - @if ($user->type_users == 3) + {{-- @if ($user->type_users == 3) Editar Empresa - @else + @else --}} Editar Utilizador @endif - @endif @endif

diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 6574183c..93cbbfd1 100755 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -83,6 +83,39 @@ + + @if (session('success')) +
+ + +
+ + @endif + + @if (session('danger')) +
+ + +
+ +@endif + @if (count($errors) > 0)
{{ implode('', $errors->all('Utilizador ou palavra-passe não Coincidem')) }} diff --git a/resources/views/email/FormAdmin.blade.php b/resources/views/email/FormAdmin.blade.php index 98dbdbde..128e59d0 100755 --- a/resources/views/email/FormAdmin.blade.php +++ b/resources/views/email/FormAdmin.blade.php @@ -6,6 +6,8 @@ ISPT 4.0 + + @@ -19,7 +21,63 @@ - + + + + @@ -55,11 +113,13 @@
@endif -
+ @csrf + +
-
+
@@ -70,7 +130,7 @@
-
+
@@ -82,83 +142,96 @@
-
-
- -
-
- + +
+
+
+ +
+ +
+
+ +
-
+
+
+ id="pending_nif" data-type="nif">
- +
-
+
+
+ id="pending_phone" data-type="phone" required>
- +
- {{--
- -
--}}
-
+
+ {{--
--}}
- +
+
+
    +
  • Pelo menos 8 caracteres
  • +
  • Uma letra maiúscula
  • +
  • Uma letra minúscula
  • +
  • Um número
  • +
  • Um caractere especial (@$!%*?&)
  • +
+
-
+ +
+
- +
- {{-- @if ($errors->any()) -
- {{ implode('', $errors->all('

:message

')) }} -
- @endif --}}
- + {{-- --}} +
@@ -175,4 +248,278 @@ + + + diff --git a/resources/views/email/email.blade.php b/resources/views/email/email.blade.php index 2522804a..b85c54aa 100755 --- a/resources/views/email/email.blade.php +++ b/resources/views/email/email.blade.php @@ -17,7 +17,7 @@

Olá!

Temos o prazer de apresentar-lhe o acesso exclusivo ao formulário do projeto 'Ispt4.0'

- Acessar Formulário

Se não estava à espera deste e-mail ou não reconhece o projeto 'Ispt4.0', por favor, ignore esta mensagem.

diff --git a/resources/views/email/pendingUsers.blade.php b/resources/views/email/pendingUsers.blade.php index e16e98c3..b105806a 100755 --- a/resources/views/email/pendingUsers.blade.php +++ b/resources/views/email/pendingUsers.blade.php @@ -2,7 +2,7 @@ @section('Main-content') @if (session('status')) -
- - - + + + @@ -80,7 +115,8 @@ - @endforeach diff --git a/resources/views/projectsClients/createProject.blade.php b/resources/views/projectsClients/createProject.blade.php index 570172ad..7d421ae2 100755 --- a/resources/views/projectsClients/createProject.blade.php +++ b/resources/views/projectsClients/createProject.blade.php @@ -41,7 +41,7 @@
-
+
+ +
+ +
+ + +
+ + +
+
-
-
- -
- - -
- - -
- - -
@@ -90,18 +85,39 @@
- {{-- --}} {{-- --}} @foreach ($companies as $company) - + @endforeach
+
+ +
+ + + {{--
+ + +
--}} + +
+ + +
-
ID NomeEmailTipo de Utilizador Ações
{{ $user->user_id }}{{ $user->user_name }}{{ $user->email }}{{ $user->userType->type_user }}{{ $company->company_name }}
{{__('messages.pendingUsers.table_pending_user.name')}}{{__('messages.pendingUsers.table_pending_user.email')}}{{__('messages.pendingUsers.table_pending_user.verify')}}{{ __('messages.pendingUsers.table_pending_user.name') }}{{ __('messages.pendingUsers.table_pending_user.email') }}{{ __('messages.pendingUsers.table_pending_user.verify') }}
{{ $pend_user->pending_user_name }} {{ $pend_user->pending_user_email }}