diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index ab95f143..5872a37a 100644 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -1,5 +1,364 @@ email; + +// // $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, +// 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 +// 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 +// ) +// 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, +// 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]); + +// $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; @@ -13,121 +372,7 @@ public function index() { $userEmail = Auth::user()->email; - // $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(" + $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,16 +719,16 @@ 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 ]); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php index d12de3f6..44f291fb 100755 --- a/app/Http/Controllers/userController.php +++ b/app/Http/Controllers/userController.php @@ -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); - $user->user_name = $request->fullName; + 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); @@ -109,7 +128,7 @@ 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')); } @@ -117,7 +136,7 @@ public function listCompanies() public function listUsers() { $users = User::with('userType')->where('type_users', '<>', 3)->get(); - + return view('Admin.CrudUsers.listUsers', compact('users')); } @@ -128,36 +147,38 @@ public function show($id) } public function edit($id) - { + { $user = User::findOrFail($id); - + return view('Admin.CrudUsers.editUsers', compact('user')); } 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!!'); } diff --git a/app/Models/User.php b/app/Models/User.php index eadda4d3..45686ddb 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -27,7 +27,7 @@ class User extends Authenticatable * @var array */ - 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']; /** diff --git a/public/user_logos/1696636614.png b/public/user_logos/1696636614.png new file mode 100644 index 00000000..e5f18688 Binary files /dev/null and b/public/user_logos/1696636614.png differ diff --git a/public/user_logos/1696759647.jpg b/public/user_logos/1696759647.jpg new file mode 100644 index 00000000..8fb40909 Binary files /dev/null and b/public/user_logos/1696759647.jpg differ diff --git a/public/user_logos/logoISPT4.0.jpg b/public/user_logos/logoISPT4.0.jpg new file mode 100644 index 00000000..6d603aec Binary files /dev/null and b/public/user_logos/logoISPT4.0.jpg differ diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index 350fb493..aa5eab8b 100755 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -8,7 +8,7 @@
-

Dashboard

+

Dashboard