162 lines
5.2 KiB
PHP
Executable File
162 lines
5.2 KiB
PHP
Executable File
<?php
|
|
|
|
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;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
|
|
use App\Mail\NewUserNotification;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
use App\Models\PendingUser;
|
|
use App\Models\User;
|
|
use App\Models\TypeUser;
|
|
|
|
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();
|
|
return view('email/pendingUsers', compact('pend_users'));
|
|
}
|
|
|
|
public function ShowFormUser($id)
|
|
{
|
|
$pend_user = PendingUser::findOrFail($id);
|
|
$allTypes = TypeUser::all();
|
|
$allCompanies = Company::all();
|
|
|
|
// Verifica se o usuário autenticado é de um tipo específico
|
|
if (auth()->user()->type_users == 1) {
|
|
// Se o usuário autenticado tem tipo '1', envia todos os tipos
|
|
$types = $allTypes;
|
|
} else {
|
|
// Caso contrário, filtra os tipos para excluir o tipo '1'
|
|
$types = $allTypes->reject(function ($type) {
|
|
return $type->type_user_id == 1;
|
|
});
|
|
}
|
|
|
|
return view('Admin.CrudUsers.createUser', compact('pend_user', 'types', 'allCompanies'));
|
|
}
|
|
|
|
|
|
|
|
public function store(Request $request)
|
|
{
|
|
// dd($request);
|
|
$request->validate([
|
|
'name' => 'required',
|
|
'lastName' => 'required',
|
|
'pending_email' => 'required|email|unique:pending_users,pending_user_email|unique:users,email',
|
|
'pending_phone' => 'required',
|
|
'pending_nif' => 'required',
|
|
'pending_password' => 'required|min:8|confirmed',
|
|
]);
|
|
|
|
$joinName = $request->get('name') . ' ' . $request->get('lastName');
|
|
|
|
$pendingUser = new PendingUser();
|
|
$pendingUser->pending_user_name = $joinName;
|
|
$pendingUser->pending_user_email = $request->get('pending_email');
|
|
$pendingUser->pending_user_phone = $request->get('pending_phone');
|
|
$pendingUser->pending_user_nif = $request->get('pending_nif');
|
|
$pendingUser->pending_user_password = Hash::make($request->get('pending_password'));
|
|
|
|
$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();
|
|
|
|
foreach ($superAdmins as $superAdmin) {
|
|
Mail::to($superAdmin->email)->send($newUserNotification);
|
|
}
|
|
|
|
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." ');
|
|
|
|
}
|
|
|
|
}
|