Browse Source

Subo exepcion y config para el s3 completa

FREDY 3 months ago
parent
commit
79db6ce35d

+ 1 - 1
Back/backendP-Educativa/.env

@@ -41,7 +41,7 @@ MAIL_FROM_NAME="${APP_NAME}"
 AWS_ACCESS_KEY_ID=4fcaae6da39a40198d8b4a27dc893a1a
 AWS_SECRET_ACCESS_KEY=aaaba8656aa91876038d77c362149689fb063e7c761ea47e
 AWS_DEFAULT_REGION=us-east-1
-AWS_BUCKET=pledu-dv-aeci
+AWS_BUCKET=pledu-dv-fjcm
 AWS_USE_PATH_STYLE_ENDPOINT=true
 AWS_ENDPOINT=https://s3.us-south.cloud-object-storage.appdomain.cloud
 AWS_USE_PATH_STYLE_ENDPOINT=true

+ 32 - 24
Back/backendP-Educativa/app/Http/Controllers/PersonalizarController.php

@@ -17,11 +17,14 @@ class PersonalizarController extends Controller
 
  protected $nombrePeriodoActivo;
 
-    public function __construct(PeriodoService $periodoService)
-    {
+   public function __construct(PeriodoService $periodoService)
+{
+    try {
         $this->nombrePeriodoActivo = $periodoService->obtenerPeriodoActivoNombre();
+    } catch (\Exception $e) {
+        $this->nombrePeriodoActivo = null;
     }
-
+}
 public function show()
 {
     $personalizar = Personalizar::find(1);
@@ -119,7 +122,18 @@ public function eliminarPerlogo(Request $request)
 public function update(Request $request)
 {
     $personalizar = Personalizar::find(1);
-    if ($personalizar) {
+
+    if (!$personalizar) {
+        return response()->json([
+            'message' => 'No se encontró la personalización',
+            'status' => 400
+        ], 400);
+    }
+
+    try {
+          
+        $periodoService = new PeriodoService();
+        $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre(); 
 
         $personalizar->PERMENSAJE = $request->mensajeBienvenida;
         $personalizar->PERNOMBRE = $request->nombreColegio;
@@ -131,8 +145,7 @@ public function update(Request $request)
         $personalizar->PERPR_COL_TIT = $request->primerColorTitulos;
         $personalizar->PERVINCULOS = $request->colorVinculos;
 
-        $carpetaPeriodo = $this->nombrePeriodoActivo ?? 'sin_periodo'; 
-
+        // Función interna para procesar imágenes
         $procesarImagen = function(?string $imageData, string $nombreArchivoBase, ?string $rutaActual) use ($carpetaPeriodo) {
             if (empty($imageData) || $imageData === 'null') {
                 return $rutaActual;
@@ -146,7 +159,9 @@ public function update(Request $request)
                 }
                 return $imageData;
             }
-
+    if (!$carpetaPeriodo) {
+                throw new \Exception('No hay un período activo configurado. No se puede subir imágenes.');
+            }
             if (preg_match('/^data:image\/(\w+);base64,/', $imageData, $matches)) {
                 $fileExtension = strtolower($matches[1]);
             } else {
@@ -167,7 +182,6 @@ public function update(Request $request)
             }
 
             $uniqueSuffix = time() . '_' . Str::uuid();
-
             $path = $carpetaPeriodo . '/personalizar/' . $nombreArchivoBase . '_' . $uniqueSuffix . '.' . $fileExtension;
 
             Storage::disk('s3')->put($path, base64_decode($imageBase64), 'public');
@@ -175,16 +189,10 @@ public function update(Request $request)
             return $path;
         };
 
-        try {
-            $personalizar->PERLOGO = $procesarImagen($request->imagen, 'personalizar', $personalizar->PERLOGO);
-            $personalizar->PERLOGO1 = $procesarImagen($request->imagen1, 'personalizar1', $personalizar->PERLOGO1);
-            $personalizar->PERLOGO2 = $procesarImagen($request->imagen2, 'personalizar2', $personalizar->PERLOGO2);
-        } catch (\Exception $ex) {
-            return response()->json([
-                'message' => $ex->getMessage(),
-                'status' => 400,
-            ], 400);
-        }
+        // Procesar imágenes
+        $personalizar->PERLOGO = $procesarImagen($request->imagen, 'personalizar', $personalizar->PERLOGO);
+        $personalizar->PERLOGO1 = $procesarImagen($request->imagen1, 'personalizar1', $personalizar->PERLOGO1);
+        $personalizar->PERLOGO2 = $procesarImagen($request->imagen2, 'personalizar2', $personalizar->PERLOGO2);
 
         $personalizar->save();
 
@@ -192,15 +200,15 @@ public function update(Request $request)
             'message' => 'Personalización del sistema actualizada',
             'status' => 200
         ], 200);
-    }
 
-    return response()->json([
-        'message' => 'No se encontró la personalización',
-        'status' => 400
-    ], 400);
+    } catch (\Exception $ex) {
+        return response()->json([
+            'message' => $ex->getMessage(),
+            'status' => 400,
+        ], 400);
+    }
 }
 
-
     public function getNombreColegio()
 {
     try {

+ 3 - 0
Back/backendP-Educativa/app/Services/PeriodoService.php

@@ -1,5 +1,7 @@
 <?php
 
+
+
 namespace App\Services;
 
 use Illuminate\Support\Facades\DB;
@@ -15,3 +17,4 @@ class PeriodoService
         return $periodo ? $periodo->nombrePeriodo : null;
     }
 }
+

+ 18 - 14
Front/src/app/modules/Administrador/pages/personalizar/personalizar.component.ts

@@ -178,7 +178,6 @@ if (index !== -1) {
   rutaRelativa = ruta.substring(index + basePath.length);
 }
 
-console.log('Ruta relativa enviada al backend:', rutaRelativa);
 
   const nombreMostrado = {
     PERLOGO: 'Logo Principal',
@@ -208,7 +207,6 @@ console.log('Ruta relativa enviada al backend:', rutaRelativa);
         timerProgressBar: true
       });
 
-      // Aquí usamos rutaRelativa
       this._personalizarService.eliminarArchivo(rutaRelativa).subscribe({
         next: () => {
           if (nombreCampo === 'PERLOGO') {
@@ -224,6 +222,7 @@ console.log('Ruta relativa enviada al backend:', rutaRelativa);
             this.form.get('imagen2')?.setValue('');
             this.formData.PERLOGO2 = null;
           }
+           
 
           Swal.fire({
             title: 'Eliminado',
@@ -231,8 +230,9 @@ console.log('Ruta relativa enviada al backend:', rutaRelativa);
             icon: 'success',
             confirmButtonColor: '#4074b0',
             confirmButtonText: 'De acuerdo'
-          });
-           window.location.reload();
+          }).then(() => {
+  window.location.reload(); 
+});
         },
         error: () => {
           Swal.fire({
@@ -365,19 +365,23 @@ clearErrors() {
             timer: 2000,
             showConfirmButton: false
 
-          });
-           window.location.reload();
+          }).then(() => {
+  window.location.reload();
+});
 
         },
-        error: (err) => {
-          Swal.fire({
-            icon: 'error',
-            title: 'Ocurrió un error al guardar',
-            text: err.message,
-          });
-           window.location.reload();
+error: (err) => {
+  const errorMsg = err.error.message || 'Ocurrió un error';
+
+  Swal.fire({
+    icon: 'error',
+    title: 'Error',
+    text: errorMsg,
+  }).then(() => {
+    window.location.reload();
+  });
+}
 
-        }
 
       });
     }