agregacion de la tabla actas, controllers, rutas, modelo y migracion

master
Christian Dacid Sullca Puma 2022-12-12 13:52:13 -05:00
parent df30926bdb
commit c6687c3971
4 changed files with 219 additions and 0 deletions

View File

@ -0,0 +1,150 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Acta;
use Dotenv\Validator;
class ActaController extends Controller
{
public function create(Request $request)
{
$request = Validator::make($request->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);
}
}

24
app/Models/Acta.php Normal file
View File

@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Acta extends Model
{
use HasFactory;
public $timestamps = true;
protected $table = 'actas';
protected $fillable = [
'titulo',
'fecha',
'file',
];
public function estandar()
{
return $this->belongsTo(Estandar::class, 'id_estandar');
}
}

View File

@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('actas', function (Blueprint $table) {
$table->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');
}
};

View File

@ -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) {