<?php

namespace App\Http\Controllers;

use App\Models\Personalizar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class PersonalizarController extends Controller
{
    public function show()
    {
        $personalizar = Personalizar::find(1);
        if ($personalizar) {
            // Obtener la URL completa de la imagen si está definida
            $imagenUrl = $personalizar->PERLOGO ? asset('storage/' . $personalizar->PERLOGO) : null;
            return response()->json([
                'personalizacion' => [
                    'PERMENSAJE' => $personalizar->PERMENSAJE,
                    'PERNOMBRE' => $personalizar->PERNOMBRE,
                    'PERLOGO' => $imagenUrl,
                    'PERPR_COL_BAR' => $personalizar->PERPR_COL_BAR,
                    'PERSDO_COL_BAR' => $personalizar->PERSDO_COL_BAR,
                    'PERTXT_BAR' => $personalizar->PERTXT_BAR,
                    'PERCOL_LTR_BAR' => $personalizar->PERCOL_LTR_BAR,
                    'PERPR_COL_TIT' => $personalizar->PERPR_COL_TIT,
                    'PERVINCULOS' => $personalizar->PERVINCULOS,
                ],
                'status' => 200
            ], 200);
        } else {
            return response()->json([
                'message' => 'No se encontró la personalización',
                'status' => 400
            ], 400);
        }
    }


    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
            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;
                }
            }
            $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);
        }
    }
}

