diff --git a/back/src/app/Http/Controllers/ProfessorController.php b/back/src/app/Http/Controllers/ProfessorController.php index c355ac1..eb34cd5 100755 --- a/back/src/app/Http/Controllers/ProfessorController.php +++ b/back/src/app/Http/Controllers/ProfessorController.php @@ -23,7 +23,7 @@ public function index() } - public function store(Request $request) + public function store(StoreProfessorRequest $request) { try { DB::beginTransaction(); @@ -51,7 +51,7 @@ public function store(Request $request) } - public function update(Request $request, $id) + public function update(UpdateProfessorRequest $request, $id) { $professor = Professor::findOrFail($id); $user = User::findOrFail($professor->id); @@ -89,9 +89,19 @@ public function destroy($id) $professor = Professor::findOrFail($id); $user = User::findOrFail($id); - $professor->delete(); - $user->delete(); + try { + DB::beginTransaction(); + + $professor->delete(); + $user->delete(); + + DB::commit(); - return response()->json(null, 204); + return response()->json(null, 204); + } catch (\Throwable $e) { + DB::rollBack(); + + return response()->json(['error' => 'Erro ao deletar professor', 'details' => $e->getMessage()], 500); + } } } diff --git a/back/src/app/Http/Requests/StoreProfessorRequest.php b/back/src/app/Http/Requests/StoreProfessorRequest.php new file mode 100755 index 0000000..af6d168 --- /dev/null +++ b/back/src/app/Http/Requests/StoreProfessorRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => [ 'required', 'string', 'max:255', ], + 'email' => [ 'required', 'string','email', 'max:255', Rule::unique('users', 'email'), ], + 'password' => [ 'required', 'string', ], + 'area_atuacao' => [ 'required', 'string', 'max:255', ], + ]; + } +} diff --git a/back/src/app/Http/Requests/UpdateProfessorRequest.php b/back/src/app/Http/Requests/UpdateProfessorRequest.php new file mode 100755 index 0000000..bda5431 --- /dev/null +++ b/back/src/app/Http/Requests/UpdateProfessorRequest.php @@ -0,0 +1,33 @@ +|string> + */ + public function rules(): array + { + $professorId = $this->route('professor'); + + return [ + 'name' => [ 'sometimes', 'string', 'max:255', ], + 'email' => [ 'sometimes', 'string','email', 'max:255', Rule::unique('users', 'email')->ignore($professorId), ], + 'area_atuacao' => [ 'sometimes', 'string', 'max:255', ], + ]; + } +}