|
|
@@ -5,6 +5,10 @@ namespace App\Http\Controllers;
|
|
|
use App\Models\Personalizar;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
+
|
|
|
+
|
|
|
class PersonalizarController extends Controller
|
|
|
{
|
|
|
public function show()
|
|
|
@@ -17,6 +21,7 @@ class PersonalizarController extends Controller
|
|
|
'personalizacion' => [
|
|
|
'PERMENSAJE' => $personalizar->PERMENSAJE,
|
|
|
'PERNOMBRE' => $personalizar->PERNOMBRE,
|
|
|
+ 'PERESLOGAN'=> $personalizar ->PERESLOGAN,
|
|
|
'PERLOGO' => $imagenUrl,
|
|
|
'PERPR_COL_BAR' => $personalizar->PERPR_COL_BAR,
|
|
|
'PERSDO_COL_BAR' => $personalizar->PERSDO_COL_BAR,
|
|
|
@@ -37,65 +42,125 @@ class PersonalizarController extends Controller
|
|
|
|
|
|
|
|
|
public function update(Request $request)
|
|
|
- {
|
|
|
- $personalizar = Personalizar::find(1);
|
|
|
- if ($personalizar) {
|
|
|
- // Actualizar los campos de personalización
|
|
|
- $personalizar->PERMENSAJE = $request->mensajeBienvenida;
|
|
|
- $personalizar->PERNOMBRE = $request->nombreColegio;
|
|
|
- $personalizar->PERPR_COL_BAR = $request->primerColorBarra;
|
|
|
- $personalizar->PERSDO_COL_BAR = $request->segundoColorBarra;
|
|
|
- $personalizar->PERTXT_BAR = $request->texturaBarra;
|
|
|
- $personalizar->PERCOL_LTR_BAR = $request->colorLetraNav;
|
|
|
- $personalizar->PERPR_COL_TIT = $request->primerColorTitulos;
|
|
|
- $personalizar->PERVINCULOS = $request->colorVinculos;
|
|
|
- // Manejar la imagen si se proporciona
|
|
|
+{
|
|
|
+ $personalizar = Personalizar::find(1);
|
|
|
+ if ($personalizar) {
|
|
|
+ // Actualizar campos de personalización
|
|
|
+ $personalizar->PERMENSAJE = $request->mensajeBienvenida;
|
|
|
+ $personalizar->PERNOMBRE = $request->nombreColegio;
|
|
|
+ $personalizar->PERESLOGAN = $request->eslogan;
|
|
|
+ $personalizar->PERPR_COL_BAR = $request->primerColorBarra;
|
|
|
+ $personalizar->PERSDO_COL_BAR = $request->segundoColorBarra;
|
|
|
+ $personalizar->PERTXT_BAR = $request->texturaBarra;
|
|
|
+ $personalizar->PERCOL_LTR_BAR = $request->colorLetraNav;
|
|
|
+ $personalizar->PERPR_COL_TIT = $request->primerColorTitulos;
|
|
|
+ $personalizar->PERVINCULOS = $request->colorVinculos;
|
|
|
+
|
|
|
+ // Función anónima para procesar imagen base64 y subir a S3
|
|
|
+ $procesarImagen = function(?string $imageData, string $nombreArchivo) {
|
|
|
+ if (empty($imageData)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ $fileInfo = explode(';', $imageData)[0];
|
|
|
+ $fileExtension = explode('/', $fileInfo)[1];
|
|
|
+ $allowedExtensions = ['jpeg', 'jpg', 'png'];
|
|
|
+ if (!in_array($fileExtension, $allowedExtensions)) {
|
|
|
+ throw new \Exception('Formato de imagen no soportado. Por favor, utiliza JPEG o PNG.');
|
|
|
+ }
|
|
|
+
|
|
|
+ $imageBase64 = substr($imageData, strpos($imageData, ',') + 1);
|
|
|
+ $imageBase64 = str_replace(' ', '+', $imageBase64);
|
|
|
+
|
|
|
+ // Validar tamaño en bytes (1MB)
|
|
|
+ $decodedSize = strlen(base64_decode($imageBase64));
|
|
|
+ if ($decodedSize > 1 * 1024 * 1024) {
|
|
|
+ throw new \Exception('El tamaño de la imagen excede el límite permitido (1 MB).');
|
|
|
+ }
|
|
|
+
|
|
|
+ $path = 'personalizar/' . $nombreArchivo . '.' . $fileExtension;
|
|
|
+
|
|
|
+ // Subir a S3
|
|
|
+ Storage::disk('s3')->put($path, base64_decode($imageBase64), 'public');
|
|
|
+
|
|
|
+ return $path;
|
|
|
+ };
|
|
|
+
|
|
|
+ try {
|
|
|
+ // Procesar imagen principal (PERLOGO)
|
|
|
if ($request->has('imagen')) {
|
|
|
- $imageData = $request->imagen;
|
|
|
- if (!empty($imageData)) {
|
|
|
- // Procesar la imagen solo si se proporciona un dato válido
|
|
|
- $fileInfo = explode(';', $imageData)[0];
|
|
|
- $fileExtension = explode('/', $fileInfo)[1];
|
|
|
- // Validar si es un formato de imagen permitido
|
|
|
- $allowedExtensions = ['jpeg', 'jpg', 'png'];
|
|
|
- if (!in_array($fileExtension, $allowedExtensions)) {
|
|
|
- return response()->json([
|
|
|
- 'message' => 'Formato de imagen no soportado. Por favor, utiliza JPEG o PNG.',
|
|
|
- 'status' => 400
|
|
|
- ], 400);
|
|
|
- }
|
|
|
- // Decodificar la imagen base64
|
|
|
- $imageData = substr($imageData, strpos($imageData, ',') + 1);
|
|
|
- $imageData = str_replace(' ', '+', $imageData);
|
|
|
- $maxSize = 1 * 1024 * 1024; // Define el tamaño máximo (1 MB)
|
|
|
- if (strlen($imageData) > $maxSize) {
|
|
|
- return response()->json([
|
|
|
- 'message' => 'El tamaño de la imagen excede el límite permitido (1 MB).',
|
|
|
- 'status' => 400,
|
|
|
- ], 400);
|
|
|
- }
|
|
|
- // Nombre fijo para la imagen
|
|
|
- $imageName = 'personalizar.' . $fileExtension;
|
|
|
- // Guardar la imagen sobrescribiendo la anterior si existe
|
|
|
- \Storage::disk('public')->put($imageName, base64_decode($imageData));
|
|
|
- // Asignar el nombre de la imagen al modelo
|
|
|
- $personalizar->PERLOGO = $imageName;
|
|
|
- } else {
|
|
|
- //Si no hay imagen asignar null
|
|
|
- $personalizar->PERLOGO = null;
|
|
|
- }
|
|
|
+ $rutaImagen = $procesarImagen($request->imagen, 'personalizar');
|
|
|
+ $personalizar->PERLOGO = $rutaImagen;
|
|
|
+ } else {
|
|
|
+ $personalizar->PERLOGO = null;
|
|
|
}
|
|
|
- $personalizar->save();
|
|
|
- return response()->json([
|
|
|
- 'message' => 'Personalización del sistema actualizado',
|
|
|
- 'status' => 200
|
|
|
- ], 200);
|
|
|
- } else {
|
|
|
+
|
|
|
+ // Procesar imagen1 (PERLOGO1)
|
|
|
+ if ($request->has('imagen1')) {
|
|
|
+ $rutaImagen1 = $procesarImagen($request->imagen1, 'personalizar1');
|
|
|
+ $personalizar->PERLOGO1 = $rutaImagen1;
|
|
|
+ } else {
|
|
|
+ $personalizar->PERLOGO1 = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Procesar imagen2 (PERLOGO2)
|
|
|
+ if ($request->has('imagen2')) {
|
|
|
+ $rutaImagen2 = $procesarImagen($request->imagen2, 'personalizar2');
|
|
|
+ $personalizar->PERLOGO2 = $rutaImagen2;
|
|
|
+ } else {
|
|
|
+ $personalizar->PERLOGO2 = null;
|
|
|
+ }
|
|
|
+ } catch (\Exception $ex) {
|
|
|
return response()->json([
|
|
|
- 'message' => 'No se encontró la personalización',
|
|
|
- 'status' => 400
|
|
|
+ 'message' => $ex->getMessage(),
|
|
|
+ 'status' => 400,
|
|
|
], 400);
|
|
|
}
|
|
|
+
|
|
|
+ $personalizar->save();
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'message' => 'Personalización del sistema actualizado',
|
|
|
+ 'status' => 200
|
|
|
+ ], 200);
|
|
|
+ } else {
|
|
|
+ return response()->json([
|
|
|
+ 'message' => 'No se encontró la personalización',
|
|
|
+ 'status' => 400
|
|
|
+ ], 400);
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+ public function getNombreColegio()
|
|
|
+{
|
|
|
+ try {
|
|
|
+ $personalizacion = DB::table('personalizar')->first();
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'nombreColegio' => $personalizacion->PERNOMBRE ?? 'Sin nombre'
|
|
|
+ ], 200);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json([
|
|
|
+ 'error' => 'No se pudo obtener el nombre del colegio',
|
|
|
+ 'detalle' => $e->getMessage()
|
|
|
+ ], 500);
|
|
|
+ }
|
|
|
+}
|
|
|
+ public function getEsloganColegio()
|
|
|
+{
|
|
|
+ try {
|
|
|
+ $personalizacion = DB::table('personalizar')->first();
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'eslogan' => $personalizacion->PERESLOGAN ?? 'Sin nombre'
|
|
|
+ ], 200);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json([
|
|
|
+ 'error' => 'No se pudo obtener el eslogan del colegio',
|
|
|
+ 'detalle' => $e->getMessage()
|
|
|
+ ], 500);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
}
|
|
|
|