updating users' profiles to add a picture to their profile

This commit is contained in:
ygbanzato 2023-10-08 11:33:26 +01:00
parent 82f5e92d6c
commit 2e32068d88
13 changed files with 920 additions and 565 deletions

View File

@ -1,19 +1,133 @@
<?php
namespace App\Http\Controllers;
// namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
// use Illuminate\Http\Request;
// use Illuminate\Support\Facades\Auth;
// use Illuminate\Support\Facades\DB;
class WorkstationsJobsController extends Controller
{
public function index()
{
$userEmail = Auth::user()->email;
// class WorkstationsJobsController extends Controller
// {
// public function index()
// {
// $userEmail = Auth::user()->email;
// $equipmentsTodo= DB::select("
// // $equipmentsTodo= DB::select("
// // WITH equipments_multiple_rows AS (
// // SELECT
// // e.equipment_id,
// // e.equipment_tag,
// // COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks
// // FROM
// // users u
// // JOIN
// // construction_workstations cw ON u.user_name = cw.name_workstations
// // JOIN
// // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
// // JOIN
// // equipments e ON wat.company_projects_id = e.company_projects_id
// // JOIN
// // ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
// // WHERE
// // u.email = :email
// // AND
// // oet.execution_order = 1
// // GROUP BY
// // e.equipment_id,
// // e.equipment_tag
// // ),
// // workstations_multiple_rows AS (
// // SELECT
// // cw.id_workstations,
// // cw.name_workstations,
// // COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks
// // FROM
// // users u
// // JOIN
// // construction_workstations cw ON u.user_name = cw.name_workstations
// // JOIN
// // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
// // WHERE
// // u.email = :email
// // ),
// // workstations_control_all_tasks AS (
// // SELECT
// // cew.control_equipment_workstation_id,
// // cew.equipment_id,
// // CASE
// // WHEN cew.id_workstations IS NULL THEN NULL
// // WHEN cew.id_workstations IN (
// // SELECT wat.id_workstations
// // FROM workstations_association_tasks wat
// // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
// // JOIN users u ON u.user_name = cw.name_workstations
// // WHERE u.email = :email
// // ) THEN cew.id_workstations
// // ELSE NULL
// // END AS control_id_workstations,
// // COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks,
// // cew.equipment_comments_id,
// // cew.entry_date,
// // cew.departure_date
// // FROM
// // control_equipment_workstation cew
// // WHERE
// // cew.id_workstations IS NULL
// // OR cew.id_workstations IN (
// // SELECT wat.id_workstations
// // FROM workstations_association_tasks wat
// // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
// // JOIN users u ON u.user_name = cw.name_workstations
// // WHERE u.email = :email
// // )
// // )
// // SELECT
// // emr.equipment_id,
// // emr.equipment_tag
// // FROM
// // equipments_multiple_rows emr
// // WHERE
// // (
// // emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// // AND NOT EXISTS (
// // SELECT 1
// // FROM workstations_control_all_tasks wc
// // WHERE wc.equipment_id = emr.equipment_id
// // AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows)
// // )
// // )
// // OR
// // (
// // emr.equipment_id IN (
// // SELECT equipment_id
// // FROM workstations_control_all_tasks
// // WHERE control_id_workstations IS NULL
// // AND entry_date IS NULL
// // AND departure_date IS NULL
// // AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// // )
// // AND NOT EXISTS (
// // SELECT 1
// // FROM workstations_control_all_tasks wc
// // WHERE wc.equipment_id = emr.equipment_id
// // AND wc.control_id_workstations IS NOT NULL
// // GROUP BY wc.equipment_id
// // HAVING COUNT(DISTINCT wc.control_id_workstations) > 1
// // )
// // )
// // GROUP BY
// // emr.equipment_id,
// // emr.equipment_tag
// // ORDER BY
// // emr.equipment_id ASC;
// // ", ['email' => $userEmail]);
// $equipmentsDone = DB::select("
// WITH equipments_multiple_rows AS (
// SELECT
// e.equipment_id,
@ -91,33 +205,22 @@ public function index()
// FROM
// equipments_multiple_rows emr
// WHERE
// (
// emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// AND NOT EXISTS (
// SELECT 1
// FROM workstations_control_all_tasks wc
// WHERE wc.equipment_id = emr.equipment_id
// AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows)
// )
// )
// OR
// (
// emr.equipment_id IN (
// SELECT equipment_id
// FROM workstations_control_all_tasks
// WHERE control_id_workstations IS NULL
// AND entry_date IS NULL
// AND departure_date IS NULL
// AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// )
// AND NOT EXISTS (
// EXISTS (
// SELECT 1
// FROM workstations_control_all_tasks wc
// JOIN workstations_multiple_rows wmr ON wc.control_id_workstations = wmr.id_workstations
// WHERE wc.equipment_id = emr.equipment_id
// AND wc.control_workstation_all_tasks = wmr.all_tasks
// AND wc.entry_date IS NOT NULL
// AND wc.departure_date IS NOT NULL
// AND wc.control_id_workstations IS NOT NULL
// GROUP BY wc.equipment_id
// HAVING COUNT(DISTINCT wc.control_id_workstations) > 1
// )
// AND NOT EXISTS (
// SELECT 1
// FROM workstations_control_all_tasks wc
// WHERE wc.equipment_id = emr.equipment_id
// AND wc.control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// AND wc.control_id_workstations IS NULL
// )
// GROUP BY
// emr.equipment_id,
@ -127,7 +230,149 @@ public function index()
// ", ['email' => $userEmail]);
$equipmentsDone = DB::select("
// $equipmentsReturned = DB::select("
// WITH equipments_multiple_rows AS (
// SELECT
// e.equipment_id,
// e.equipment_tag,
// COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks
// FROM
// users u
// JOIN
// construction_workstations cw ON u.user_name = cw.name_workstations
// JOIN
// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
// JOIN
// equipments e ON wat.company_projects_id = e.company_projects_id
// JOIN
// ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
// WHERE
// u.email = :email
// AND
// oet.execution_order = 1
// GROUP BY
// e.equipment_id,
// e.equipment_tag
// ),
// workstations_multiple_rows AS (
// SELECT
// cw.id_workstations,
// cw.name_workstations,
// COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks
// FROM
// users u
// JOIN
// construction_workstations cw ON u.user_name = cw.name_workstations
// JOIN
// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
// WHERE
// u.email = :email
// ),
// workstations_control_all_tasks AS (
// SELECT
// cew.control_equipment_workstation_id,
// cew.equipment_id,
// CASE
// WHEN cew.id_workstations IS NULL THEN NULL
// WHEN cew.id_workstations IN (
// SELECT wat.id_workstations
// FROM workstations_association_tasks wat
// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
// JOIN users u ON u.user_name = cw.name_workstations
// WHERE u.email = :email
// ) THEN cew.id_workstations
// ELSE NULL
// END AS control_id_workstations,
// COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks,
// cew.equipment_comments_id,
// cew.entry_date,
// cew.departure_date
// FROM
// control_equipment_workstation cew
// WHERE
// cew.id_workstations IS NULL
// OR cew.id_workstations IN (
// SELECT wat.id_workstations
// FROM workstations_association_tasks wat
// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
// JOIN users u ON u.user_name = cw.name_workstations
// WHERE u.email = :email
// )
// )
// SELECT
// emr.equipment_id,
// emr.equipment_tag
// FROM
// equipments_multiple_rows emr
// WHERE
// emr.equipment_id IN (
// SELECT equipment_id
// FROM workstations_control_all_tasks
// WHERE control_id_workstations IS NULL
// AND entry_date IS NULL
// AND departure_date IS NULL
// AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
// AND EXISTS (
// SELECT 1
// FROM workstations_control_all_tasks wc
// WHERE wc.equipment_id = emr.equipment_id
// AND wc.control_id_workstations IS NOT NULL
// GROUP BY wc.equipment_id
// HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2
// )
// )
// GROUP BY
// emr.equipment_id,
// emr.equipment_tag
// ORDER BY
// emr.equipment_id ASC;
// ", ['email' => $userEmail]);
// $workstationNameQuery = DB::select("
// SELECT construction_workstations.nomenclature_workstation
// FROM construction_workstations
// JOIN users
// WHERE construction_workstations.name_workstations = users.user_name
// AND users.email = :email;
// ", ['email' => $userEmail]);
// $workstationName = $workstationNameQuery[0]->nomenclature_workstation;
// //Counting of equipments
// // $equipmentsTodoCount = count($equipmentsTodo);
// $equipmentsDoneCount = count($equipmentsDone);
// $equipmentsReturnedCount = count($equipmentsReturned);
// //Returning values of the queries to workstations layout
// return view('workstations.index', [
// // 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount,
// 'equipmentsDone' => $equipmentsDone, 'equipmentsDoneCount' => $equipmentsDoneCount,
// 'equipmentsReturned' => $equipmentsReturned, 'equipmentsReturnedCount' => $equipmentsReturnedCount,
// 'workstationName' => $workstationName
// ]);
// }
// }
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class WorkstationsJobsController extends Controller
{
public function index()
{
$userEmail = Auth::user()->email;
$equipmentsTodo = DB::select("
WITH equipments_multiple_rows AS (
SELECT
e.equipment_id,
@ -144,7 +389,7 @@ public function index()
JOIN
ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
WHERE
u.email = :email
u.email = :email1
AND
oet.execution_order = 1
GROUP BY
@ -164,7 +409,7 @@ public function index()
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
WHERE
u.email = :email
u.email = :email2
),
workstations_control_all_tasks AS (
@ -178,7 +423,7 @@ public function index()
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email
WHERE u.email = :email3
) THEN cew.id_workstations
ELSE NULL
END AS control_id_workstations,
@ -195,7 +440,236 @@ public function index()
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email
WHERE u.email = :email4
)
)
SELECT
emr.equipment_id,
emr.equipment_tag
FROM
equipments_multiple_rows emr
WHERE
(
emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
AND NOT EXISTS (
SELECT 1
FROM workstations_control_all_tasks wc
WHERE wc.equipment_id = emr.equipment_id
AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows)
)
)
OR
(
emr.equipment_id IN (
SELECT equipment_id
FROM workstations_control_all_tasks
WHERE control_id_workstations IS NULL
AND entry_date IS NULL
AND departure_date IS NULL
AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
)
AND NOT EXISTS (
SELECT 1
FROM workstations_control_all_tasks wc
WHERE wc.equipment_id = emr.equipment_id
AND wc.control_id_workstations IS NOT NULL
GROUP BY wc.equipment_id
HAVING COUNT(DISTINCT wc.control_id_workstations) > 1
)
)
GROUP BY
emr.equipment_id,
emr.equipment_tag
ORDER BY
emr.equipment_id ASC;
", [
'email1' => $userEmail,
'email2' => $userEmail,
'email3' => $userEmail,
'email4' => $userEmail
]);
$equipmentsReturned = DB::select("
WITH equipments_multiple_rows AS (
SELECT
e.equipment_id,
e.equipment_tag,
COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
JOIN
equipments e ON wat.company_projects_id = e.company_projects_id
JOIN
ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
WHERE
u.email = :email1
AND
oet.execution_order = 1
GROUP BY
e.equipment_id,
e.equipment_tag
),
workstations_multiple_rows AS (
SELECT
cw.id_workstations,
cw.name_workstations,
COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
WHERE
u.email = :email2
),
workstations_control_all_tasks AS (
SELECT
cew.control_equipment_workstation_id,
cew.equipment_id,
CASE
WHEN cew.id_workstations IS NULL THEN NULL
WHEN cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email3
) THEN cew.id_workstations
ELSE NULL
END AS control_id_workstations,
COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks,
cew.equipment_comments_id,
cew.entry_date,
cew.departure_date
FROM
control_equipment_workstation cew
WHERE
cew.id_workstations IS NULL
OR cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email4
)
)
SELECT
emr.equipment_id,
emr.equipment_tag
FROM
equipments_multiple_rows emr
WHERE
emr.equipment_id IN (
SELECT equipment_id
FROM workstations_control_all_tasks
WHERE control_id_workstations IS NULL
AND entry_date IS NULL
AND departure_date IS NULL
AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
AND EXISTS (
SELECT 1
FROM workstations_control_all_tasks wc
WHERE wc.equipment_id = emr.equipment_id
AND wc.control_id_workstations IS NOT NULL
GROUP BY wc.equipment_id
HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2
)
)
GROUP BY
emr.equipment_id,
emr.equipment_tag
ORDER BY
emr.equipment_id ASC;
", [
'email1' => $userEmail,
'email2' => $userEmail,
'email3' => $userEmail,
'email4' => $userEmail
]);
$equipmentsDone = DB::select("
WITH equipments_multiple_rows AS (
SELECT
e.equipment_id,
e.equipment_tag,
COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
JOIN
equipments e ON wat.company_projects_id = e.company_projects_id
JOIN
ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
WHERE
u.email = :email1
AND
oet.execution_order = 1
GROUP BY
e.equipment_id,
e.equipment_tag
),
workstations_multiple_rows AS (
SELECT
cw.id_workstations,
cw.name_workstations,
COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
WHERE
u.email = :email2
),
workstations_control_all_tasks AS (
SELECT
cew.control_equipment_workstation_id,
cew.equipment_id,
CASE
WHEN cew.id_workstations IS NULL THEN NULL
WHEN cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email3
) THEN cew.id_workstations
ELSE NULL
END AS control_id_workstations,
COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks,
cew.equipment_comments_id,
cew.entry_date,
cew.departure_date
FROM
control_equipment_workstation cew
WHERE
cew.id_workstations IS NULL
OR cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email4
)
)
@ -227,109 +701,12 @@ public function index()
emr.equipment_tag
ORDER BY
emr.equipment_id ASC;
", ['email' => $userEmail]);
$equipmentsReturned = DB::select("
WITH equipments_multiple_rows AS (
SELECT
e.equipment_id,
e.equipment_tag,
COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
JOIN
equipments e ON wat.company_projects_id = e.company_projects_id
JOIN
ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id
WHERE
u.email = :email
AND
oet.execution_order = 1
GROUP BY
e.equipment_id,
e.equipment_tag
),
workstations_multiple_rows AS (
SELECT
cw.id_workstations,
cw.name_workstations,
COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks
FROM
users u
JOIN
construction_workstations cw ON u.user_name = cw.name_workstations
JOIN
workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations
WHERE
u.email = :email
),
workstations_control_all_tasks AS (
SELECT
cew.control_equipment_workstation_id,
cew.equipment_id,
CASE
WHEN cew.id_workstations IS NULL THEN NULL
WHEN cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email
) THEN cew.id_workstations
ELSE NULL
END AS control_id_workstations,
COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks,
cew.equipment_comments_id,
cew.entry_date,
cew.departure_date
FROM
control_equipment_workstation cew
WHERE
cew.id_workstations IS NULL
OR cew.id_workstations IN (
SELECT wat.id_workstations
FROM workstations_association_tasks wat
JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id
JOIN users u ON u.user_name = cw.name_workstations
WHERE u.email = :email
)
)
SELECT
emr.equipment_id,
emr.equipment_tag
FROM
equipments_multiple_rows emr
WHERE
emr.equipment_id IN (
SELECT equipment_id
FROM workstations_control_all_tasks
WHERE control_id_workstations IS NULL
AND entry_date IS NULL
AND departure_date IS NULL
AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows)
AND EXISTS (
SELECT 1
FROM workstations_control_all_tasks wc
WHERE wc.equipment_id = emr.equipment_id
AND wc.control_id_workstations IS NOT NULL
GROUP BY wc.equipment_id
HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2
)
)
GROUP BY
emr.equipment_id,
emr.equipment_tag
ORDER BY
emr.equipment_id ASC;
", ['email' => $userEmail]);
", [
'email1' => $userEmail,
'email2' => $userEmail,
'email3' => $userEmail,
'email4' => $userEmail
]);
$workstationNameQuery = DB::select("
SELECT construction_workstations.nomenclature_workstation
@ -342,13 +719,13 @@ public function index()
$workstationName = $workstationNameQuery[0]->nomenclature_workstation;
//Counting of equipments
// $equipmentsTodoCount = count($equipmentsTodo);
$equipmentsTodoCount = count($equipmentsTodo);
$equipmentsDoneCount = count($equipmentsDone);
$equipmentsReturnedCount = count($equipmentsReturned);
//Returning values of the queries to workstations layout
return view('workstations.index', [
// 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount,
return view('workstations.start', [
'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount,
'equipmentsDone' => $equipmentsDone, 'equipmentsDoneCount' => $equipmentsDoneCount,
'equipmentsReturned' => $equipmentsReturned, 'equipmentsReturnedCount' => $equipmentsReturnedCount,
'workstationName' => $workstationName

View File

@ -5,6 +5,8 @@
use App\Models\TypeUser;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Validation\ValidationException;
@ -21,38 +23,55 @@
class userController extends Controller
{
public function EditProfile(Request $request){
public function EditProfile(Request $request)
{
// dd($request);
$messages = [
'user_logo.max' => 'O tamanho da imagem não deve ser maior que 70KB.',
];
// dump($request);
$request->validate([
'user_logo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:70',
'fullName' => 'required',
'email' => 'required|email|unique:users,email,' . $request->userID . ',user_id',
'phone' => 'required',
'nif' => 'required',
], $messages);
$user = User::find($request->userID);
if ($request->hasFile('user_logo')) {
$imageName = time() . '.' . $request->user_logo->extension();
// Verifica se o usuário já tem uma imagem e se é diferente da nova imagem
if ($user->user_logo && $user->user_logo != $imageName) {
// Constrói o caminho completo para o arquivo de imagem existente
$existingImagePath = public_path('user_logos/' . $user->user_logo);
// Verifica se o arquivo de imagem existente realmente existe no sistema de arquivos
if (File::exists($existingImagePath)) {
// Exclui o arquivo de imagem existente
File::delete($existingImagePath);
}
}
// Move o novo arquivo de imagem para o diretório
$request->user_logo->move(public_path('user_logos'), $imageName);
// Atualiza o campo user_logo do usuário com o nome do novo arquivo de imagem
$user->user_logo = $imageName;
}
$user->user_name = $request->fullName;
$user->email = $request->email;
$user->user_phone = $request->phone;
$user->user_nif = $request->nif;
$user->save();
// $request->validate([
// 'name' => 'required',
// 'email' => 'required|email|unique:users,email,' . $user->user_id,
// 'password' => 'nullable|min:8|confirmed',
// 'user_type' => 'required',
// 'user_phone' => 'required',
// 'user_nif' => 'required',
// ]);
// $user->update([
// 'name' => $request->get('name'),
// 'email' => $request->get('email'),
// 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
// 'user_type' => $request->get('user_type'),
// 'user_phone' => $request->get('user_phone'),
// 'user_nif' => $request->get('user_nif'),
// ]);
return redirect('/users/listUsers')->with('success', 'Utilizadores atualizado com Sucesso!!');
return back()->with('success', "Perfil actualizado com sucesso!");
}
public function UserProfile($id)
{
$user = User::find($id);
@ -136,28 +155,30 @@ public function edit($id)
public function update(Request $request, User $user)
{
dump($request);
// $request->validate([
// 'name' => 'required',
// 'email' => 'required|email|unique:users,email,' . $user->user_id,
// 'password' => 'nullable|min:8|confirmed',
// 'user_type' => 'required',
// 'user_phone' => 'required',
// 'user_nif' => 'required',
// ]);
// dump($request);
// $user->update([
// 'name' => $request->get('name'),
// 'email' => $request->get('email'),
// 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
// 'user_type' => $request->get('user_type'),
// 'user_phone' => $request->get('user_phone'),
// 'user_nif' => $request->get('user_nif'),
// ]);
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id',
'password' => 'nullable|min:8|confirmed',
'user_type' => 'required',
'user_phone' => 'required',
'user_nif' => 'required',
]);
// $userUpdate->
$user->update([
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
'user_type' => $request->get('user_type'),
'user_phone' => $request->get('user_phone'),
'user_nif' => $request->get('user_nif'),
]);
return redirect('/users/listUsers')->with('success', 'Utilizadores atualizado com Sucesso!!');
$user->save();
return redirect('/users/listUsers')->with('success', 'Utilizador atualizado com Sucesso!!');
}

View File

@ -27,7 +27,7 @@ class User extends Authenticatable
* @var array<int, string>
*/
protected $fillable = ['user_name', 'email', 'password', 'user_phone', 'user_nif', 'type_users'];
protected $fillable = ['user_id','user_name', 'email', 'password', 'user_phone', 'user_nif', 'type_users'];
/**

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -8,7 +8,7 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0" style="color:#00B0EA">Dashboard</h1>
<h1 class="m-0" style="color:#09255C">Dashboard</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
@ -48,7 +48,7 @@ class="info-box-number">{{ $CompanyProject->where('order_project', 1)->count() }
@if ($project->order_project == 1)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="card-title">{{ $project->company_project_description }}</h5>
<h5 class="progress-description" >{{ $project->company_project_description }}</h5>
<div class="card-tools">
<a href="{{ route('test2', ['id' => $project->company_projects_id]) }}"
class="btn btn-tool">
@ -88,7 +88,7 @@ class="info-box-number">{{ $CompanyProject->where('order_project', 2)->count() }
@if ($project->order_project == 2)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="card-title">{{ $project->company_project_description }}</h5>
<h5 class="progress-description">{{ $project->company_project_description }}</h5>
<div class="card-tools">
<a href="{{ route('preparedProject', ['ProjectId' => $project->company_projects_id]) }}"
class="btn btn-tool">
@ -127,7 +127,7 @@ class="info-box-number">{{ $CompanyProject->where('order_project', 3)->count() }
@if ($project->order_project == 3)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="card-title">{{ $project->company_project_description }}</h5>
<h5 class="progress-description">{{ $project->company_project_description }}</h5>
<div class="card-tools">
<a href="{{ route('ExecutionProject', ['ProjectId' => $project->company_projects_id]) }}"
class="btn btn-tool">

View File

@ -1,6 +1,38 @@
@extends('Templates/templateAdmin')
@section('Main-content')
@if (session('success'))
<div class="alert alert-success" role="alert" id="alert-message-success" style="transition: opacity 1s;">
{{ session('success') }}
</div>
<script>
setTimeout(function() {
$('#alert-message-success').fadeOut('slow', function() {
$(this).remove();
});
}, 5000); // A mensagem desaparecerá após 5 segundos
</script>
@endif
@if ($errors->any())
<div id="errorAlert" class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
<script>
$(document).ready(function() {
setTimeout(function() {
$('#errorAlert').fadeOut('slow', function() {
$(this).remove();
});
}, 5000); // A mensagem desaparecerá após 5 segundos
});
</script>
@endif
<section class="content">
@ -16,8 +48,10 @@
<div class="card">
<div class="card-body profile-card pt-4 d-flex flex-column align-items-center">
<img src="{{ asset('/img/avatar5.png') }}" class="img-circle elevation-2 imgProfile"
alt="User Image">
<img class="img-circle elevation-2 imgProfile"
src="{{ asset('user_logos/' . ($user->user_logo ?? 'logoISPT4.0.jpg')) }}"
alt="User Logo">
<h2>{{ $user->user_name }}</h2>
<h3>{{ $user->userType->type_user }}</h3>
@ -47,6 +81,9 @@
<div class="tab-content pt-2">
<div class="tab-pane fade show active profile-overview" id="profile-overview">
<div class="row">
<div class="col-lg-3 col-md-4 label ">Nome e Apelido </div>
<div class="col-lg-9 col-md-8">{{ $user->user_name }}</div>
@ -81,32 +118,29 @@
<div class="tab-pane fade profile-edit pt-3" id="profile-edit">
<!-- Profile Edit Form -->
<form action="{{ route('editProfile',$user->user_id)}}">
<form action="{{ route('editProfile', $user->user_id) }}" method="POST"
enctype="multipart/form-data">
@csrf
{{-- Quando for implementar a imagem ao Utilizador --}}
{{-- <div class="row mb-3">
<label for="profileImage"
class="col-md-4 col-lg-3 col-form-label">Profile Image</label>
<div class="col-md-8 col-lg-9">
<img src="assets/img/profile-img.jpg" alt="Profile">
<div class="pt-2">
<a href="#" class="btn btn-primary btn-sm"
title="Upload new profile image"><i
class="bi bi-upload"></i></a>
<a href="#" class="btn btn-danger btn-sm"
title="Remove my profile image"><i
class="bi bi-trash"></i></a>
</div>
</div>
</div> --}}
<input type="hidden" name="userID"
value="{{ $user->user_id }}">
<input type="hidden" name="userID" value="{{ $user->user_id }}">
<div class="row mb-3">
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Nome e Apelido</label>
<label for="user_logo"
class="col-md-4 col-lg-3 form-label">Actualizar o seu logótipo.
:</label>
<div class="custom-file col-md-8 col-lg-9">
<input type="file" class="custom-file-input" id="user_logo"
name="user_logo" accept="image/*">
<label class="custom-file-label" for="customFile">Máximo de
70KB*</label>
</div>
</div>
<div class="row mb-3">
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Nome
e Apelido</label>
<div class="col-md-8 col-lg-9">
<input type="text" class="form-control" id="fullName" name="fullName" value="{{ $user->user_name }}" required>
<input type="text" class="form-control" id="fullName"
name="fullName" value="{{ $user->user_name }}" required>
</div>
</div>
@ -114,7 +148,8 @@ class="bi bi-trash"></i></a>
<label for="about"
class="col-md-4 col-lg-3 col-form-label">Nif</label>
<div class="col-md-8 col-lg-9">
<input type="text" class="form-control" id="nif" name="nif" value="{{ $user->user_nif }}" required>
<input type="text" class="form-control" id="nif"
name="nif" value="{{ $user->user_nif }}" required>
</div>
</div>
@ -122,7 +157,8 @@ class="col-md-4 col-lg-3 col-form-label">Nif</label>
<label for="company"
class="col-md-4 col-lg-3 col-form-label">Email</label>
<div class="col-md-8 col-lg-9">
<input type="text" class="form-control" id="email" name="email" value="{{ $user->email }}" required>
<input type="text" class="form-control" id="email"
name="email" value="{{ $user->email }}" required>
</div>
</div>
@ -131,12 +167,13 @@ class="col-md-4 col-lg-3 col-form-label">Email</label>
<label for="Country"
class="col-md-4 col-lg-3 col-form-label">Telemóvel</label>
<div class="col-md-8 col-lg-9">
<input type="text" class="form-control" id="phone" name="phone" value="{{ $user->user_phone }}" >
<input type="text" class="form-control" id="phone"
name="phone" value="{{ $user->user_phone }}">
</div>
</div>
<div class="text-center">
<div class="float-right">
<button type="submit" class="btn btn-primary">Guardar</button>
</div>

View File

@ -69,6 +69,10 @@
<style>
#isptGroupLink:hover {
color: #EAF3F6;
}
.spin {
animation: spin 1s infinite linear;
}
@ -173,6 +177,13 @@
background-color: var(--prm-gray);
}
#editImg {
width: 215px;
height: 215px;
object-fit: cover;
/* Isso fará com que a imagem cubra completamente a área sem distorcer */
}
</style>
</head>
@ -224,16 +235,18 @@ class="fas fa-bars"></i></a>
<div class="sidebar">
<!-- Sidebar user panel (optional) -->
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
{{-- Verifica se esta logado , se estiver , busca os dados do utilizador atual. --}}
@if (Auth::check())
<div class="image">
<img src="{{ asset('/img/avatar5.png') }}" class="img-circle elevation-2" alt="User Image">
<img class="img-circle elevation-2 imgProfile editImg"
src="{{ asset('user_logos/' . (Auth::user()->user_logo ?? 'logoISPT4.0.jpg')) }}"
alt="User Logo">
</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>
@endif
</div>
<!-- Sidebar Menu -->
@ -356,10 +369,12 @@ class="d-block">{{ Auth::user()->userType?->type_user }}</a>
<!-- ./ Wrapper -->
<footer class="main-footer">
<strong>Copyright &copy; 2017-2022 <a href="#">ISPT - Industrial Services, SA</a>.</strong>
<strong>Copyright &copy; 2017-{{ date('Y') }} <a href="https://www.isptgroup.com" id="isptGroupLink">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
<b>Versão</b> {{ config('app.version') }}
</div>
</footer>
</body>
@ -369,7 +384,6 @@ class="d-block">{{ Auth::user()->userType?->type_user }}</a>
<script src="{{ asset('assets/dist/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('assets/plugins/jquery/jquery.min.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="{{ asset('assets/plugins/jquery-ui/jquery-ui.min.js') }}"></script>

View File

@ -133,19 +133,19 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
<a href="#" class="nav-link text-white" style="background-color: #007BFF;">
<i class="nav-icon fas fa-play"></i>
<p>
{{-- {{ $equipmentsTodoCount }} a iniciar --}}
{{ $equipmentsTodoCount }} a iniciar
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
{{-- @foreach ($equipmentsTodo as $equipmentTodo)
@foreach ($equipmentsTodo as $equipmentTodo)
<li class="nav-item">
<a href="#" class="nav-link text-white">
<i class="fas fa-tag nav-icon"></i>
<p>{{ $equipmentTodo->equipment_tag }}</p>
</a>
</li>
@endforeach --}}
@endforeach
</ul>
</li>
@ -153,19 +153,19 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
<a href="#" class="nav-link text-white" style="background-color: #ba9420;">
<i class="nav-icon fas fa-undo"></i>
<p>
{{-- {{ $equipmentsReturnedCount }} retornadas --}}
{{ $equipmentsReturnedCount }} retornadas
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
{{-- @foreach ($equipmentsReturned as $equipmentReturned)
@foreach ($equipmentsReturned as $equipmentReturned)
<li class="nav-item">
<a href="#" class="nav-link text-white">
<i class="fas fa-tag nav-icon"></i>
<p>{{ $equipmentReturned->equipment_tag }}</p>
</a>
</li>
@endforeach --}}
@endforeach
</ul>
</li>
</ul>
@ -248,19 +248,19 @@ class="brand-image img-circle elevation-3" style="opacity: .8">
<a href="#" class="nav-link text-white" style="background-color: #28a745;">
<i class="nav-icon fas fa-check"></i>
<p>
{{-- {{ $equipmentsDoneCount }} válvulas concluídas --}}
{{ $equipmentsDoneCount }} válvulas concluídas
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
{{-- @foreach ($equipmentsDone as $equipmentDone)
@foreach ($equipmentsDone as $equipmentDone)
<li class="nav-item-right">
<a href="#" class="nav-link text-white">
<i class="fas fa-tag nav-icon"></i>
<p>{{ $equipmentDone->equipment_tag }}</p>
</a>
</li>
@endforeach --}}
@endforeach
</ul>
</li>
</ul>

View File

@ -30,7 +30,6 @@
<input type="hidden" value="{{ $receiveNumberProject->company_projects_id }}" id="receiveNumberProject">
<section class="content-header">
<div class="container-fluid">
<!-- Progressbar -->
@ -59,16 +58,15 @@
<div class="card-body">
<div class="card card-success collapsed-card">
<div class="card-header">
<h3 class="card-title">Criar Equipamentos Manualmente</h3>
<div class="card-header clickable">
<h3 class="card-title">Criar Equipamentos Manualmente</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i
class="fas fa-plus"></i>
</button>
<button type="button" class="btn btn-tool collapse-button" data-card-widget="collapse"><i
class="fas fa-plus"></i></button>
</div>
<!-- /.card-tools -->
</div>
<!-- /.card-header -->
<div class="card-body">
<form action="{{ route('test2CreateEquipment') }}" method="POST">
@ -1058,16 +1056,15 @@ class="form-control card_inputs" id="PositionerSerialNumber"
</div>
<div class="card card-primary collapsed-card">
<div class="card-header">
<h3 class="card-title">Selecionar Equipamentos</h3>
<div class="card-header clickable">
<h3 class="card-title">Selecionar Equipamentos</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i
class="fas fa-plus"></i>
</button>
<button type="button" class="btn btn-tool collapse-button"
data-card-widget="collapse"><i class="fas fa-plus"></i></button>
</div>
<!-- /.card-tools -->
</div>
<div class="card-body">
<div class="table-responsive">
@ -1797,57 +1794,9 @@ class="form-control card_inputs"
</div>
<!-- /.card-body -->
<div class="card-footer">
<!--Tarefa Complementar -->
<div class="icheck-primary d-inline">
<input type="checkbox" id="checkboxAddicionalTask"
unchecked>
<label for="checkboxAddicionalTask">
Tarefa Complementares
</label>
</div>
</div>
@livewire('articulado.additonal-task', ['equipment' => $listEquipmentsProject], key($listEquipmentsProject->equipment_id))
</div>
<!-- general form elements disabled -->
<div id="descriptionAdditionalTask">
<div class="form-group">
<div class="card">
<div class="card-body">
<div class="text-center">
<p><b>Fluxo de Tarefas, Equipamento: {{$listEquipmentsProject->equipment_tag}}</b></p>
<p id="ValuesTableElementsTasks"></p>
</div>
<div class="row">
<div class="col-sm-6">
<p>Indique a tarefa complementar : </p>
<input type="text"
class="form-control">
</div>
<div class="col-sm-6">
<p>Selecione Após qual tarefa :</p>
<select id="ArrayListElementsTasks"
class="form-control">
<option value="InitTask">Tarefa
Inicial
</option>
</select>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-6"></div>
<div class="col-sm-6 text-right">
<a type="button"
id="AddComplementTasks"
class="btn btn-outline-success ">Adicionar</a>
</div>
</div>
</div>
</div>
</div>
</div>
{{-- ./description --}}
</div>
{{-- ./card-body --}}
</div>
@ -2965,11 +2914,11 @@ class="form-control card_inputs"
</div>
<!-- /.card-body -->
<div class="card-footer">
{{-- @foreach ($taskExecutionOrders as $taskExecutionOrder)
{{-- <div class="card-footer">
@foreach ($taskExecutionOrders as $taskExecutionOrder)
<p> {}
</p>
@endforeach --}}
@endforeach
<!--Tarefa Complementar -->
<div class="icheck-primary d-inline">
<input type="checkbox" id="checkboxAddicionalTask"
@ -2978,10 +2927,12 @@ class="form-control card_inputs"
Tarefa Complementares
</label>
</div>
</div>
</div> --}}
@livewire('articulado.additonal-task', ['equipment' => $listEquipmentsProject], key($listEquipmentsProject->equipment_id))
</div>
<!-- general form elements disabled -->
{{-- <!-- general form elements disabled -->
<div id="descriptionAdditionalTask">
<div class="form-group">
@ -3020,7 +2971,7 @@ class="btn btn-outline-success ">Adicionar</a>
</div>
</div>
</div>
</div>
</div> --}}
{{-- ./description --}}
</div>
{{-- ./card-body --}}
@ -3095,8 +3046,9 @@ class="btn btn-outline-success ">Adicionar</a>
</div>
<!-- ./Card card-Primary -->
<a href="{{ route('test1', ['id' => $numberProject]) }}" class="btn btn-primary float-left">Anterior</a>
<a href="{{ route('test3', ['id' => $numberProject]) }}" class="btn btn-primary float-right">Seguinte</a>
<a style="margin: 10px" href="{{ route('test1', ['id' => $numberProject]) }}" class="btn btn-primary float-left">Anterior</a>
<a style="margin: 10px" href="{{ route('test3', ['id' => $numberProject]) }}" class="btn btn-primary float-right">Seguinte</a>
</div>
{{-- ./container-fluid --}}
@ -3390,41 +3342,6 @@ class="btn btn-outline-success ">Adicionar</a>
@endsection
@section('scriptsTemplateAdmin')
{{-- <script>
$(document).ready(function() {
$('.open-modal').click(function(e) {
e.preventDefault();
// Limpa todos os checkboxes ao abrir a modal
$('input[name^="ordemTasks"]').prop('checked', false);
var equipmentId = $(this).data('equipment-id');
$.ajax({
url: '/api/equipment/' + equipmentId,
method: 'GET',
success: function(data) {
data.attributes.forEach(function(item) {
// Procura o input com name igual a general_attributes_equipment_id e preenche com specific_attributes_value
$('input[name="attributes[' + item
.general_attributes_equipment_id + ']"]').val(item
.specific_attributes_value);
});
data.OrdemTasks.forEach(function(item) {
console.log(data.OrdemTasks);
// Procura o checkbox com name igual a elemental_tasks_id e marca como checked
$('input[name="ordemTasks[' + item.elemental_tasks_id +
']"]').prop('checked', true);
});
// Abre a modal
// $('#modal-showEquipment').modal('show');
}
});
});
});
</script> --}}
<script>
$(document).ready(function() {
@ -3584,39 +3501,6 @@ function(task) {
})
</script>
{{-- <script>
$(document).ready(function() {
$('.open-modal').click(function(e) {
e.preventDefault();
var equipmentId = $(this).data('equipment-id');
$.ajax({
url: '/equipment/' +
equipmentId, // Ajuste a URL conforme a rota que você definiu
method: 'GET',
success: function(data) {
// Aqui você preenche a modal com os dados retornados
$('.modal-title').text('Equipamento : ' + data.equipment_tag);
// Remova o conteúdo anterior da modal
$('.modal-body').empty();
// Adicione os novos dados na modal
data.specificAttributes.forEach(function(attribute) {
$('.modal-body').append('<p>' + attribute
.general_attributes_equipment_description + '</p>');
$('.modal-body').append('<p>' + attribute
.specific_attributes_value + '</p>');
});
// Abre a modal
$('#modal-showEquipment').modal('show');
},
error: function(error) {
console.log(error);
}
});
});
});
</script> --}}
<script>
$(function() {
$("#ProjectEquipmentTable").DataTable({
@ -3969,11 +3853,33 @@ function(task) {
});
</script>
<script>
$(document).ready(function() {
$('#mytable').DataTable();
});
</script>
{{-- <script type="text/javascript">
$(document).ready(function() {
$('#cardHeader').on('click', function(e) {
// Verifica se o clique não foi no botão
if (!$(e.target).is('#collapseButton') && !$(e.target).is('#collapseButton *')) {
$('#collapseButton').trigger('click');
}
});
});
</script> --}}
<script type="text/javascript">
$(document).ready(function() {
$('.clickable').on('click', function(e) {
// Verifica se o clique não foi no botão
if (!$(e.target).is('.collapse-button') && !$(e.target).is('.collapse-button *')) {
$(this).find('.collapse-button').trigger('click');
}
});
});
</script>
@endsection

View File

@ -111,7 +111,7 @@
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::get('editProfile/{id}', 'EditProfile')->name('editProfile');
Route::post('editProfile/{id}', 'EditProfile')->name('editProfile');
});
Route::controller(CreateProjectController::class)
@ -182,7 +182,6 @@
|Crud model for the application's projects, where both their creation and the indication of project statuses are handled.
|
*/
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
@ -215,6 +214,7 @@
});
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');