From c6687c39716491a0d91fba1c21d4c84256d6b3b5 Mon Sep 17 00:00:00 2001 From: Christian Dacid Sullca Puma Date: Mon, 12 Dec 2022 13:52:13 -0500 Subject: [PATCH] agregacion de la tabla actas, controllers, rutas, modelo y migracion --- app/Http/Controllers/Api/ActaController.php | 150 ++++++++++++++++++ app/Models/Acta.php | 24 +++ .../2022_12_11_224806_create_actas_table.php | 38 +++++ routes/api.php | 7 + 4 files changed, 219 insertions(+) create mode 100644 app/Http/Controllers/Api/ActaController.php create mode 100644 app/Models/Acta.php create mode 100644 database/migrations/2022_12_11_224806_create_actas_table.php diff --git a/app/Http/Controllers/Api/ActaController.php b/app/Http/Controllers/Api/ActaController.php new file mode 100644 index 0000000..669988c --- /dev/null +++ b/app/Http/Controllers/Api/ActaController.php @@ -0,0 +1,150 @@ +all(), [ + 'titulo' => 'required', + 'fecha' => 'required', + 'id_estandar' => 'required|exists:estandars,id', + 'file' => 'required', + ]); + + if ($request->fails()) { + return response()->json([ + 'success' => false, + 'message' => 'Se necesita llenar todos los campos', + 'data' => $request->errors() + ], 400); + } + + $user = auth()->user(); + if (!($user->isAdmin() or $user->isEncargadoEstandar($request->id_estandar))) { + return response()->json([ + 'success' => false, + 'message' => 'No tienes permisos para crear una acta', + ], 401); + } + $acta = new Acta(); + $acta->titulo = $request->titulo; + $acta->fecha = $request->fecha; + $acta->id_estandar = $request->id_estandar; + $acta->file = $request->file; + $acta->save(); + return response()->json([ + 'success' => true, + 'message' => 'Acta creada', + 'data' => $acta + ], 200); + } + + public function showActa($id) + { + $acta = Acta::find($id); + if ($acta) { + return response()->json([ + 'success' => true, + 'message' => 'Acta encontrada', + 'data' => $acta + ], 200); + } else { + return response()->json([ + 'success' => false, + 'message' => 'Acta no encontrada', + 'data' => '' + ], 404); + } + } + + public function listActas() + { + $actas = Acta::all(); + return response()->json([ + 'success' => true, + 'message' => 'Actas encontradas', + 'data' => $actas + ], 200); + } + + public function update(Request $request, $id) + { + $request = Validator::make($request->all(), [ + 'titulo' => 'present', + 'fecha' => 'present', + 'id_estandar' => 'present|exists:estandars,id', + 'file' => 'present', + ]); + + $acta = Acta::find($id); + if (!$acta) { + return response()->json([ + 'success' => false, + 'message' => 'Acta no encontrada', + ], 404); + } + + + if ($request->fails()) { + return response()->json([ + 'success' => false, + 'message' => 'Se produjo un error al actualizar la acta', + 'data' => $request->errors() + ], 400); + } + + $user = auth()->user(); + if (!($user->isAdmin() or $user->isEncargadoEstandar($request->id_estandar))) { + return response()->json([ + 'success' => false, + 'message' => 'No tienes permisos para actualizar una acta', + ], 401); + } + + $acta->titulo = isset($request->titulo) ? $request->titulo : $acta->titulo; + $acta->fecha = isset($request->fecha) ? $request->fecha : $acta->fecha; + $acta->id_estandar = isset($request->id_estandar) ? $request->id_estandar : $acta->id_estandar; + $acta->file = isset($request->file) ? $request->file : $acta->file; + $acta->save(); + + return response()->json([ + 'success' => true, + 'message' => 'Acta actualizada', + 'data' => $acta + ], 200); + } + + public function delete($id) + { + $acta = Acta::find($id); + if (!$acta) { + return response()->json([ + 'success' => false, + 'message' => 'Acta no encontrada', + 'data' => '' + ], 404); + } + + $user = auth()->user(); + if (!($user->isAdmin() or $user->isEncargadoEstandar($acta->id_estandar))) { + return response()->json([ + 'success' => false, + 'message' => 'No tienes permisos para eliminar una acta', + ], 401); + } + + $acta->delete(); + return response()->json([ + 'success' => true, + 'message' => 'Acta eliminada', + ], 200); + } +} diff --git a/app/Models/Acta.php b/app/Models/Acta.php new file mode 100644 index 0000000..928be27 --- /dev/null +++ b/app/Models/Acta.php @@ -0,0 +1,24 @@ +belongsTo(Estandar::class, 'id_estandar'); + } +} diff --git a/database/migrations/2022_12_11_224806_create_actas_table.php b/database/migrations/2022_12_11_224806_create_actas_table.php new file mode 100644 index 0000000..9a50db1 --- /dev/null +++ b/database/migrations/2022_12_11_224806_create_actas_table.php @@ -0,0 +1,38 @@ +id(); + $table->date('fecha'); + $table->string('titulo', 255); + $table->foreignId('id_estandar') + ->constrained('estandars'); + $table->string('file', 255); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('actas'); + } +}; diff --git a/routes/api.php b/routes/api.php index 671c3d7..4a30d26 100644 --- a/routes/api.php +++ b/routes/api.php @@ -122,6 +122,13 @@ Route::middleware("auth:sanctum")->group(function () { Route::delete('narrativa/{id}', [NarrativasController::class, 'delete'])->where('id', '[0-9]+'); Route::get('narrativa', [NarrativasController::class, 'listNarrativas']); Route::get('narrativa/ultima/{id}', [NarrativasController::class, 'ultimaNarrativa'])->where('id', '[0-9]+'); + + //ruta Actas + Route::post('acta', [ActaController::class, 'create']); + Route::get('acta/{id}', [ActaController::class, 'showActa'])->where('id', '[0-9]+'); + Route::put('acta/{id}', [ActaController::class, 'update'])->where('id', '[0-9]+'); + Route::delete('acta/{id}', [ActaController::class, 'delete'])->where('id', '[0-9]+'); + Route::get('acta', [ActaController::class, 'listActas']); }); /*Route::middleware('auth:sanctum')->get('/user', function (Request $request) {