Kaynağa Gözat

controller actualizado con ruta completa

FREDY 3 ay önce
ebeveyn
işleme
168988c2e9

+ 30 - 6
Back/backendP-Educativa/app/Http/Controllers/Api/RegistroAcademico.php

@@ -7,17 +7,29 @@ use App\Http\Controllers\Controller;
 use  App\Models\PersonaAutorizada;
 use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Str;
-
+use App\Services\PeriodoService;
 
 class RegistroAcademico extends Controller
 {
+
+    
+ protected $nombrePeriodoActivo;
+
+   public function __construct(PeriodoService $periodoService)
+{
+    try {
+        $this->nombrePeriodoActivo = $periodoService->obtenerPeriodoActivoNombre();
+    } catch (\Exception $e) {
+        $this->nombrePeriodoActivo = null;
+    }
+}
   public function registroAca(Request $request)
 {
     $message = '';
     $status = 0;
 
     try {
-        // Codificar personas autorizadas a JSON
+       
         $personasJson = json_encode($request->personasAutorizadas ?? []);
 
         // Insertar en registroacademico incluyendo personasAutorizadas como JSON
@@ -365,6 +377,9 @@ public function registroAdministrativo(Request $request)
     $uuidArchivo = Str::uuid()->toString();
 
     try {
+        $periodoService = new PeriodoService();
+        $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
+
         $request->validate([
             'idAlumno' => 'required',
             'usuarioRegistro' => 'required',
@@ -379,13 +394,16 @@ public function registroAdministrativo(Request $request)
                 throw new \Exception('Archivo inválido');
             }
 
+            if (!$carpetaPeriodo) {
+                throw new \Exception('No hay un período activo configurado. No se puede subir archivos.');
+            }
+
             $originalName = $archivo->getClientOriginalName();
 
             if (strlen($originalName) > 250) {
                 throw new \Exception('El nombre del archivo excede los 250 caracteres permitidos.');
             }
 
-            // Regex actualizado: letras, números, espacios, paréntesis, puntos, guiones, acentos
             if (!preg_match('/^[a-zA-Z0-9\s._\-\(\)ñÑáéíóúÁÉÍÓÚ]+$/u', $originalName)) {
                 throw new \Exception('El nombre del archivo contiene caracteres no permitidos.');
             }
@@ -399,8 +417,8 @@ public function registroAdministrativo(Request $request)
             }
 
             $nombreArchivo = $uuidArchivo . '-' . $request->idAlumno . '-' . $originalName;
+            $rutaS3 = $carpetaPeriodo . '/constancias_fiscales/' . $nombreArchivo;
 
-            $rutaS3 = 'constancias_fiscales/' . $nombreArchivo;
             Storage::disk('s3')->put($rutaS3, file_get_contents($archivo), 'public');
         }
 
@@ -500,7 +518,6 @@ public function editarRegistroAdmin(Request $request, $id)
     $rutaS3 = '';
     $uuidArchivo = Str::uuid()->toString();
 
-
     try {
         $idAlumno = base64_decode($id);
 
@@ -516,6 +533,13 @@ public function editarRegistroAdmin(Request $request, $id)
         $datosActualizar = ['updated_at' => now()];
 
         if ($request->hasFile('constanciaFiscal')) {
+            $periodoService = new PeriodoService();
+            $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
+
+            if (!$carpetaPeriodo) {
+                throw new \Exception('No hay un período activo configurado. No se puede subir archivos.');
+            }
+
             $archivo = $request->file('constanciaFiscal');
 
             if (!$archivo->isValid()) {
@@ -542,7 +566,7 @@ public function editarRegistroAdmin(Request $request, $id)
 
             $nombreArchivo = $uuidArchivo . '-' . $idAlumno . '-' . $originalName;
 
-            $rutaS3 = 'constancias_fiscales/' . $nombreArchivo;
+            $rutaS3 = $carpetaPeriodo . '/constancias_fiscales/' . $nombreArchivo;
 
             Storage::disk('s3')->put($rutaS3, file_get_contents($archivo), 'public');