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')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Nome |
+ Email |
+ Ações |
+
+
+
+
+ @foreach ($companyUsers as $user)
+
+ | {{ $user->user_name }} |
+ {{ $user->email }} |
+
+
+
+
+
+ |
+
+ @endforeach
+ {{-- @foreach ($companiesList as $company)
+
+ | {{ $company->company_name }} |
+
+
+
+
+
+ |
+
+ @endforeach --}}
+
+
+
+
+
+
+ {{-- /.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 --}}
-{{--
+
+ {{--
--}}
+
+
@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
+
+
+
+
+
+
+
+ {{-- ./card-header --}}
+
+
+
+
+
+ | ID |
+ Nome |
+ Email |
+ Tipo de Utilizador |
+ Ações |
+
+
+
+ @foreach ($users as $user)
+
+ | {{ $user->user_id }} |
+ {{ $user->user_name }} |
+ {{ $user->email }} |
+ {{ $user->userType->type_user }} |
+
+
+
+
+
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+ {{-- ./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 @@
- | ID |
Nome |
- Email |
- Tipo de Utilizador |
Ações |
- @foreach ($users as $user)
+ @foreach ($companiesList as $company)
- | {{ $user->user_id }} |
- {{ $user->user_name }} |
- {{ $user->email }} |
- {{ $user->userType->type_user }} |
+ {{ $company->company_name }} |
|
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
+
- Administração
- @if($user->type_users == 3)
+ {{-- @if($user->type_users == 3)
- Empresas
- Detalhes da Empresa
@else
- Utilizadores
- Detalhes do Empresa
- @endif
+ @endif --}}
+ - Utilizadores
+ - Detalhes do Empresa
@@ -33,11 +37,13 @@
@@ -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'))
+
+
+
+ {{ session('success') }}
+
+
+
+ @endif
+
+ @if (session('danger'))
+
+
+
+ {{ 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
-