<?php

namespace App\Http\Controllers\Api;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use  App\Models\PersonaAutorizada;

class RegistroAcademico extends Controller
{
  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
        $idRegistro = DB::table('registroacademico')->insertGetId([
            'idEscuela' => 'COLEGIOABC',
            'idAlumno' => $request->idAlumno,
            'FiDI_Nombre1' => $request->primerNombre ?? '',
            'FiDI_Nombre2' => $request->segundoNombre ?? null,
            'FiDI_ApellidoPaterno' => $request->apellidoPaterno ?? '',
            'FiDI_ApellidoMaterno' => $request->apellidoMaterno ?? '',
            'FiDI_CURP' => $request->curp ?? '',
            'FiDI_Sexo' => $request->sexo ?? '',
            'FiDI_Edad' => $request->edad ?? '',
            'FiDI_NacCiudad' => $request->ciudadNacimiento ?? '',
            'FiDI_NacEstado' => $request->estado ?? '',
            'FiDI_NacFechaDia' => $request->diaNacimiento ?? '',
            'FiDI_NacFechaMes' => $request->mesNacimiento ?? '',
            'FiDI_NacFechaAnio' => $request->añoNacimiento ?? '',
            'FiDI_Domicilio' => $request->domicilio ?? '',
            'FiDI_Telefono' => $request->telefonoCasa ?? '',
            'FiDI_InstProce' => $request->institucionProcedencia ?? '',
            'FiDI_MotivoCambio' => $request->motivoCambio ?? '',
            // Padres
            'FiDI_PadNombre1' => $request->padrePrimerNombre ?? '',
            'FiDI_PadNombre2' => $request->padreSegundoNombre ?? null,
            'FiDI_PadApellidoPaterno' => $request->padreApellidoPaterno ?? '',
            'FiDI_PadApellidoMaterno' => $request->padreApellidoMaterno ?? '',
            'FiDI_PadCURP' => $request->padreCurp ?? '',
            'FiDI_PadNacionalidad' => $request->padreNacionalidad ?? '',
            'FiDI_PadEstadoCivil' => $request->padreEstadoCivil ?? '',
            'FiDI_PadNacFechaDia' => $request->padreDiaNacimiento ?? '',
            'FiDI_PadNacFechaMes' => $request->padreMesNacimiento ?? '',
            'FiDI_PadNacFechaAnio' => $request->padreAñoNacimiento ?? '',
            'FiDI_PadDomicilio' => $request->padreDomicilio ?? '',
            'FiDI_PadCP' => $request->padreCPDomicilio ?? '',
            'FiDI_PadEscolaridad' => $request->padreEscolaridad ?? '',
            'FiDI_PadOcupacion' => $request->padreOcupacion ?? '',
            'FiDI_PadLugTrabajo' => $request->padreLugarTrabajo ?? '',
            'FiDI_PadTelTrabajo' => $request->padreTelefonoTrabajo ?? '',
            'FiDI_PadTelTrabajoExt' => $request->padreExtension ?? '',
            'FiDI_PadCelular' => $request->padreCelular ?? '',
            'FiDI_PadCorreo' => $request->padreCorreo ?? '',
            // Madres
            'FiDI_MadNombre1' => $request->madrePrimerNombre ?? '',
            'FiDI_MadNombre2' => $request->madreSegundoNombre ?? null,
            'FiDI_MadApellidoPaterno' => $request->madreApellidoPaterno ?? '',
            'FiDI_MadApellidoMaterno' => $request->madreApellidoMaterno ?? '',
            'FiDI_MadCURP' => $request->madreCurp ?? '',
            'FiDI_MadNacionalidad' => $request->madreNacionalidad ?? '',
            'FiDI_MadEstadoCivil' => $request->madreEstadoCivil ?? '',
            'FiDI_MadNacFechaDia' => $request->madreDiaNacimiento ?? '',
            'FiDI_MadNacFechaMes' => $request->madreMesNacimiento ?? '',
            'FiDI_MadNacFechaAnio' => $request->madreAñoNacimiento ?? '',
            'FiDI_MadDomicilio' => $request->madreDomicilio ?? '',
            'FiDI_MadCP' => $request->madreCPDomicilio ?? '',
            'FiDI_MadEscolaridad' => $request->madreEscolaridad ?? '',
            'FiDI_MadOcupacion' => $request->madreOcupacion ?? '',
            'FiDI_MadLugTrabajo' => $request->madreLugarTrabajo ?? '',
            'FiDI_MadTelTrabajo' => $request->madreTelefonoTrabajo ?? '',
            'FiDI_MadTelTrabajoExt' => $request->madreExtension ?? '',
            'FiDI_MadCelular' => $request->madreCelular ?? '',
            'FiDI_MadCorreo' => $request->madreCorreo ?? '',

            'FiDI_RetirarseSolo' => $request->AutorizarAlum ?? 'No',
            'FiDI_RecogerMadre' => $request->MadreFam ?? 'No',
            'FiDI_RecogerPadre' => $request->PadreFam ?? 'No',

            // Guardar personas autorizadas como JSON
            'personasAutorizadas' => $personasJson,
  // Padecimientos
                'CedA_TipoSangre' => $request->tipoSangre ?? '',
                'CedA_AlergiaAspirina' => $request->aspirina ?? '',
                'CedA_AlergiaPenicilina' => $request->penicilina ?? '',
                'CedA_AlergiaOtro' => $request->otrosMedicamentos ?? '',
                'CedA_PadPaperas' => $request->paperas ?? '',
                'CedA_PadSarampio' => $request->sarampion ?? '',
                'CedA_PadRubeola' => $request->rubeola ?? '',
                'CedA_PadEscarlatina' => $request->escarlatina ?? '',
                'CedA_PadTosferina' => $request->tosferina ?? '',
                'CedA_PadTifoidea' => $request->tifoidea ?? '',
                'CedA_PadHepatitis' => $request->hepatitis ?? '',
                'CedA_PadVaricela' => $request->varicela ?? '',
                'CedA_PadBronquitis' => $request->bronquitis ?? '',
                'CedA_PadApendicitis' => $request->apendicitis ?? '',
                'CedA_PadMeningitis' => $request->meninguitis ?? '',
                'CedA_PadDesmayos' => $request->desmayos ?? '',
                'CedA_PadCovid19' => $request->covid ?? '',
                'CedA_PadGarganta' => $request->garganta ?? '',
                'CedA_PadEstomago' => $request->estomago ?? '',
                'CedA_PadCatarro' => $request->catarro ?? '',
                'CedA_PadDiarrea' => $request->diarrea ?? '',
                'CedA_PadDolorCabeza' => $request->dolorCabeza ?? '',
                'CedA_PadFiebreAlta' => $request->fiebreAlta ?? '',
                'CedA_PadComezon' => $request->comezonFrecuente ?? '',
                'CedA_PadMareos' => $request->mareos ?? '',
                'CedA_DiabeticoPrecauciones' => $request->diabetes ?? '',
                'CedA_AsmaticoPrecauciones' => $request->asmatico ?? '',
                'CedA_EpilepticoPrecauciones' => $request->epileptico ?? '',
                'CedA_EnfermedadEnPiel' => $request->enfermedadPiel ?? '',

                // Antecedentes
                'CedA_ProbEmbarazo' => $request->problemasEmbarazo ?? '',
                'CedA_ProbParto' => $request->problemasParto ?? '',
                'CedA_PesoNacimiento' => $request->peso ?? '',
                'CedA_AlturaNacimiento' => $request->talla1 ?? '',
                'CedA_PesoActual' => $request->pesoActual ?? '',
                'CedA_AlturaActual' => $request->tallaActual ?? '',
                'CedA_EsfinteresDiurno' => $request->edad1 ?? '',
                'CedA_EsfinteresNocturno' => $request->edad2 ?? '',
                'CedA_Gateo' => $request->gateo ?? '',
                'CedA_GateoEdad' => $request->edadGateo ?? '',
                'CedA_EdadHablo' => $request->edadHablo ?? '',
                'CedA_EdadCamino' => $request->edadCamino ?? '',
                'CedA_EnfermedadesPadecidas' => $request->enfermedades ?? '',
                'CedA_EnfermedadesAlergiasActuales' => $request->alergias ?? '',
                'CedA_TratamientoMedicoActual' => $request->tratamientoMedico ?? '',
                'CedA_UsaLentes' => $request->lentes ?? '',
                'CedA_PiePlano' => $request->piePlano ?? '',
                'CedA_Ortopedico' => $request->zapatoOrtopedico ?? '',
                'CedA_ProbAprendizaje' => $request->problemasAprendizaje ?? '',
                'CedA_RelPareja' => $request->relacionPareja ?? '',
                'CedA_ProblemasFamiliares' => $request->problemasFamilia ?? '',
                'CedA_HijoAfectado' => $request->afectacionProblemas ?? '',
                'CedA_TratPsicologico' => $request->tratamientoPsicologico ?? '',
                'CedA_LoQueDesagradaFamilia' => $request->desagradaFamilia ?? '',
                'CedA_LoQueAgradaFamilia' => $request->agradaFamilia ?? '',
                'CedA_HogarNoGustan' => $request->actividadDesagrada ?? '',
                'CedA_HogarGustan' => $request->actividadAgrada ?? '',
                'CedA_Defectos' => $request->defectos ?? '',
                'CedA_Virtudes' => $request->virtudes ?? '',
                'CedA_Futuro' => $request->futuro ?? '',
                'CedA_Comentario' => $request->comentarios ?? '',


            'usuarioRegistro' => $request->usuarioRegistro,
        ]);

        $message = 'Registro exitoso';
        $status = 200;
    } catch (\Exception $e) {
        $message = $e->getMessage();
        $status = 500;
    }

    return response()->json(['mensaje' => $message], $status);
}



public function ActualizarRegistroAca(Request $request, $id){
    $id = base64_decode($id);
    $message = '';
    $status = 0;
    $usuario = $request->usuario ?? 'sistema';

    try {
        $registroExistente = DB::table('registroacademico')
            ->where('idEscuela', 'COLEGIOABC')
            ->where('idAlumno', $id)
            ->first();

        $personasExistentes = json_decode($registroExistente->personasAutorizadas, true) ?? [];
        $nuevasPersonas = $request->personasAutorizadas ?? [];

        $personasAutorizadas = array_merge($personasExistentes, $nuevasPersonas);
        $personasJson = json_encode($personasAutorizadas);

        $registro = DB::table('registroacademico')
            ->where('idEscuela', 'COLEGIOABC')
            ->where('idAlumno', $id)
            ->update([
                'FiDI_Nombre1' => $request->primerNombre ?? '',
                'FiDI_Nombre2' => $request->segundoNombre ?? null,
                'FiDI_ApellidoPaterno' => $request->apellidoPaterno ?? '',
                'FiDI_ApellidoMaterno' => $request->apellidoMaterno ?? '',
                'FiDI_CURP' => $request->curp ?? '',
                'FiDI_Sexo' => $request->sexo ?? '',
                'FiDI_Edad' => $request->edad ?? '',
                'FiDI_NacCiudad' => $request->ciudadNacimiento ?? '',
                'FiDI_NacEstado' => $request->estado ?? '',
                'FiDI_NacFechaDia' => $request->diaNacimiento ?? '',
                'FiDI_NacFechaMes' => $request->mesNacimiento ?? '',
                'FiDI_NacFechaAnio' => $request->añoNacimiento ?? '',
                'FiDI_Domicilio' => $request->domicilio ?? '',
                'FiDI_Telefono' => $request->telefonoCasa ?? '',
                'FiDI_InstProce' => $request->institucionProcedencia ?? '',
                'FiDI_MotivoCambio' => $request->motivoCambio ?? '',
                'FiDI_PadNombre1' => $request->padrePrimerNombre ?? '',
                'FiDI_PadNombre2' => $request->padreSegundoNombre ?? null,
                'FiDI_PadApellidoPaterno' => $request->padreApellidoPaterno ?? '',
                'FiDI_PadApellidoMaterno' => $request->padreApellidoMaterno ?? '',
                'FiDI_PadCURP' => $request->padreCurp ?? '',
                'FiDI_PadNacionalidad' => $request->padreNacionalidad ?? '',
                'FiDI_PadEstadoCivil' => $request->padreEstadoCivil ?? '',
                'FiDI_PadNacFechaDia' => $request->padreDiaNacimiento ?? '',
                'FiDI_PadNacFechaMes' => $request->padreMesNacimiento ?? '',
                'FiDI_PadNacFechaAnio' => $request->padreAñoNacimiento ?? '',
                'FiDI_PadDomicilio' => $request->padreDomicilio ?? '',
                'FiDI_PadCP' => $request->padreCPDomicilio ?? '',
                'FiDI_PadEscolaridad' => $request->padreEscolaridad ?? '',
                'FiDI_PadOcupacion' => $request->padreOcupacion ?? '',
                'FiDI_PadLugTrabajo' => $request->padreLugarTrabajo ?? '',
                'FiDI_PadTelTrabajo' => $request->padreTelefonoTrabajo ?? '',
                'FiDI_PadTelTrabajoExt' => $request->padreExtension ?? '',
                'FiDI_PadCelular' => $request->padreCelular ?? '',
                'FiDI_PadCorreo' => $request->padreCorreo ?? '',
                'FiDI_MadNombre1' => $request->madrePrimerNombre ?? '',
                'FiDI_MadNombre2' => $request->madreSegundoNombre ?? null,
                'FiDI_MadApellidoPaterno' => $request->madreApellidoPaterno ?? '',
                'FiDI_MadApellidoMaterno' => $request->madreApellidoMaterno ?? '',
                'FiDI_MadCURP' => $request->madreCurp ?? '',
                'FiDI_MadNacionalidad' => $request->madreNacionalidad ?? '',
                'FiDI_MadEstadoCivil' => $request->madreEstadoCivil ?? '',
                'FiDI_MadNacFechaDia' => $request->madreDiaNacimiento ?? '',
                'FiDI_MadNacFechaMes' => $request->madreMesNacimiento ?? '',
                'FiDI_MadNacFechaAnio' => $request->madreAñoNacimiento ?? '',
                'FiDI_MadDomicilio' => $request->madreDomicilio ?? '',
                'FiDI_MadCP' => $request->madreCPDomicilio ?? '',
                'FiDI_MadEscolaridad' => $request->madreEscolaridad ?? '',
                'FiDI_MadOcupacion' => $request->madreOcupacion ?? '',
                'FiDI_MadLugTrabajo' => $request->madreLugarTrabajo ?? '',
                'FiDI_MadTelTrabajo' => $request->madreTelefonoTrabajo ?? '',
                'FiDI_MadTelTrabajoExt' => $request->madreExtension ?? '',
                'FiDI_MadCelular' => $request->madreCelular ?? '',
                'FiDI_MadCorreo' => $request->madreCorreo ?? '',
                'personasAutorizadas' => $personasJson,
                'FiDI_RetirarseSolo' => $request->AutorizarAlum ?? 'No',
                'FiDI_RecogerMadre' => $request->MadreFam ?? 'No',
                'FiDI_RecogerPadre' => $request->PadreFam ?? 'No',
                // ... campos de CedA_* y otros como en tu estructura actual ...
                'CedA_TipoSangre' => $request->tipoSangre ?? '',
                'CedA_AlergiaAspirina' => $request->aspirina ?? '',
                'CedA_AlergiaPenicilina' => $request->penicilina ?? '',
                'CedA_AlergiaOtro' => $request->otrosMedicamentos ?? '',
                'CedA_PadPaperas' => $request->paperas ?? '',
                'CedA_PadSarampio' => $request->sarampion ?? '',
                'CedA_PadRubeola' => $request->rubeola ?? '',
                'CedA_PadEscarlatina' => $request->escarlatina ?? '',
                'CedA_PadTosferina' => $request->tosferina ?? '',
                'CedA_PadTifoidea' => $request->tifoidea ?? '',
                'CedA_PadHepatitis' => $request->hepatitis ?? '',
                'CedA_PadVaricela' => $request->varicela ?? '',
                'CedA_PadBronquitis' => $request->bronquitis ?? '',
                'CedA_PadApendicitis' => $request->apendicitis ?? '',
                'CedA_PadMeningitis' => $request->meninguitis ?? '',
                'CedA_PadDesmayos' => $request->desmayos ?? '',
                'CedA_PadCovid19' => $request->covid ?? '',
                'CedA_PadGarganta' => $request->garganta ?? '',
                'CedA_PadEstomago' => $request->estomago ?? '',
                'CedA_PadCatarro' => $request->catarro ?? '',
                'CedA_PadDiarrea' => $request->diarrea ?? '',
                'CedA_PadDolorCabeza' => $request->dolorCabeza ?? '',
                'CedA_PadFiebreAlta' => $request->fiebreAlta ?? '',
                'CedA_PadComezon' => $request->comezonFrecuente ?? '',
                'CedA_PadMareos' => $request->mareos ?? '',
                'CedA_DiabeticoPrecauciones' => $request->diabetes ?? '',
                'CedA_AsmaticoPrecauciones' => $request->asmatico ?? '',
                'CedA_EpilepticoPrecauciones' => $request->epileptico ?? '',
                'CedA_EnfermedadEnPiel' => $request->enfermedadPiel ?? '',

                // Antecedentes
                'CedA_ProbEmbarazo' => $request->problemasEmbarazo ?? '',
                'CedA_ProbParto' => $request->problemasParto ?? '',
                'CedA_PesoNacimiento' => $request->peso ?? '',
                'CedA_AlturaNacimiento' => $request->talla1 ?? '',
                'CedA_PesoActual' => $request->pesoActual ?? '',
                'CedA_AlturaActual' => $request->tallaActual ?? '',
                'CedA_EsfinteresDiurno' => $request->edad1 ?? '',
                'CedA_EsfinteresNocturno' => $request->edad2 ?? '',
                'CedA_Gateo' => $request->gateo ?? '',
                'CedA_GateoEdad' => $request->edadGateo ?? '',
                'CedA_EdadHablo' => $request->edadHablo ?? '',
                'CedA_EdadCamino' => $request->edadCamino ?? '',
                'CedA_EnfermedadesPadecidas' => $request->enfermedades ?? '',
                'CedA_EnfermedadesAlergiasActuales' => $request->alergias ?? '',
                'CedA_TratamientoMedicoActual' => $request->tratamientoMedico ?? '',
                'CedA_UsaLentes' => $request->lentes ?? '',
                'CedA_PiePlano' => $request->piePlano ?? '',
                'CedA_Ortopedico' => $request->zapatoOrtopedico ?? '',
                'CedA_ProbAprendizaje' => $request->problemasAprendizaje ?? '',
                'CedA_RelPareja' => $request->relacionPareja ?? '',
                'CedA_ProblemasFamiliares' => $request->problemasFamilia ?? '',
                'CedA_HijoAfectado' => $request->afectacionProblemas ?? '',
                'CedA_TratPsicologico' => $request->tratamientoPsicologico ?? '',
                'CedA_LoQueDesagradaFamilia' => $request->desagradaFamilia ?? '',
                'CedA_LoQueAgradaFamilia' => $request->agradaFamilia ?? '',
                'CedA_HogarNoGustan' => $request->actividadDesagrada ?? '',
                'CedA_HogarGustan' => $request->actividadAgrada ?? '',
                'CedA_Defectos' => $request->defectos ?? '',
                'CedA_Virtudes' => $request->virtudes ?? '',
                'CedA_Futuro' => $request->futuro ?? '',
                'CedA_Comentario' => $request->comentarios ?? '',
            'usuarioRegistro' => $request->usuarioRegistro,
            ]);

        $message = 'Actualización exitosa';
        $status = 200;

    } catch (\Exception $e) {
        $message = $e->getMessage();
        $status = 500;
    }
    return response()->json(['mensaje' => $message], $status);
}



    public function getOneRegistro($id){
        $id = base64_decode($id);
        $registro = DB::table('registroacademico')
        ->where('idEscuela', 'COLEGIOABC')
        ->where('idAlumno', $id)
        ->get();
        return response()->json([
            'mensaje' => 'Registro encontrado',
            'registro' => $registro
        ]);
    }

    public function getAll(){
        $registro = DB::table('registroacademico')
        ->where('idEscuela', 'COLEGIOABC')
        ->get();
        return response()->json([
            'mensaje' => 'Registro encontrado',
            'registro' => $registro
        ]);
    }

    public function getAllAd(){
        $registro = DB::table('registroadministrativo')
        ->where('idEscuela', 'COLEGIOABC')
        ->get();
        return response()->json([
            'mensaje' => 'Registro encontrado',
            'registro' => $registro
        ]);
    }



public function registroAdministrativo(Request $request) {
    $message = '';
    $status = 0;
    $nombreArchivo = '';

    try {
        // Validar campos requeridos mínimos
        $request->validate([
            'idAlumno' => 'required',
            'usuarioRegistro' => 'required',
        ]);

        // Procesar archivo si se recibió como base64
        if ($request->has('constanciaFiscalBase64') && $request->has('nombreArchivo')) {
            $base64 = $request->constanciaFiscalBase64;
            $nombreArchivo = time() . '_' . $request->idAlumno . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '', $request->nombreArchivo);

            // Limpiar encabezado si viene con "data:..."
            if (preg_match('/^data:application\/pdf;base64,/', $base64)) {
                $base64 = substr($base64, strpos($base64, ',') + 1);
            }

            $contenido = base64_decode($base64);

            if ($contenido === false) {
                throw new \Exception('No se pudo decodificar el archivo PDF');
            }

            $rutaDestino = public_path('uploads/constancias_fiscales');
            if (!file_exists($rutaDestino)) {
                if (!mkdir($rutaDestino, 0755, true)) {
                    throw new \Exception('No se pudo crear el directorio para guardar el archivo');
                }
            }

            file_put_contents($rutaDestino . '/' . $nombreArchivo, $contenido);

            // Verificar que el archivo se haya guardado
            if (!file_exists($rutaDestino . '/' . $nombreArchivo)) {
                throw new \Exception('El archivo no se guardó correctamente desde base64');
            }
        }

        // Preparar datos para la inserción
        $registro = [
            'idEscuela' => $request->idEscuela ?? 'COLEGIOABC',
            'idAlumno' => $request->idAlumno,
            'RegA_MesInscripcion' => $request->mesInscripcion ?? '',
            'RegA_GradoCursar' => $request->gradoCursar ?? '',
            'RegA_BecaCurso' => $request->becaCurso ?? '',
            'RegA_BecaPorcentaje' => $request->becaPorcentaje ?? '',
            'RegA_PlanPagos' => $request->planPago ?? '',
            'RegA_RequiereFactura' => $request->factura ?? '',
            'RegA_MetodoPago' => $request->metodoPago ?? $request->metedoPago ?? '',
            'RegA_RfcFactura' => $request->RFCFactura ?? '',
            'RegA_NombreFactura' => $request->razonSocial ?? '',
            'RegA_DireccionFactura' => $request->domicilioFactura ?? 'NA',
            'RegA_CorreoFactura' => $request->correoFactura ?? 'NA',
            'RegA_CuentaPago' => $request->cuentaPago ?? 'NA',
            'RegA_ConstanciaFiscal' => $nombreArchivo,
            'RegA_Modalidad' => 'Presencial',
            'usuarioRegistro' => $request->usuarioRegistro,
            'created_at' => now(),
            'updated_at' => now(),
        ];

        // Insertar en la base de datos
        $insertado = DB::table('registroadministrativo')->insert($registro);

        if (!$insertado) {
            throw new \Exception('No se pudo insertar el registro en la base de datos');
        }

        $message = 'Registro exitoso';
        $status = 200;

    } catch (\Exception $e) {
        // Eliminar el archivo si algo falló
        if ($nombreArchivo && file_exists(public_path('uploads/constancias_fiscales/' . $nombreArchivo))) {
            @unlink(public_path('uploads/constancias_fiscales/' . $nombreArchivo));
        }

        $message = 'Error: ' . $e->getMessage();
        $status = 500;
    }

    return response()->json([
        'mensaje' => $message,
        'archivo' => $nombreArchivo
    ], $status);
}

  public function editarRegistroAdmin(Request $request, $id)
{
    $message = '';
    $status = 0;

    try {
        $idAlumno = base64_decode($id);

        // Buscar el registro existente
        $registroExistente = DB::table('registroadministrativo')
            ->where('idEscuela', 'COLEGIOABC')
            ->where('idAlumno', $idAlumno)
            ->first();

        if (!$registroExistente) {
            error_log('ERROR: Registro no encontrado para idAlumno: ' . $idAlumno);
            return response()->json(['mensaje' => 'Registro no encontrado'], 404);
        }

        // Preparar datos para actualizar
        $datosActualizar = [
            'updated_at' => now(),
        ];

        // Mapeo de campos del frontend al backend
        $camposMapeo = [
            'mesInscripcion' => 'RegA_MesInscripcion',
            'gradoCursar' => 'RegA_GradoCursar',
            'becaCurso' => 'RegA_BecaCurso',
            'becaPorcentaje' => 'RegA_BecaPorcentaje',
            'planPago' => 'RegA_PlanPagos',
            'factura' => 'RegA_RequiereFactura',
            'metodoPago' => 'RegA_MetodoPago',
            'RFCFactura' => 'RegA_RfcFactura',
            'razonSocial' => 'RegA_NombreFactura',
            'domicilioFactura' => 'RegA_DireccionFactura',
            'correoFactura' => 'RegA_CorreoFactura',
            'cuentaPago' => 'RegA_CuentaPago',
            'usuarioRegistro' => 'usuarioRegistro',
        ];

        // Procesar cada campo
        foreach ($camposMapeo as $campoRequest => $campoBD) {
            if ($request->has($campoRequest)) {
                $valor = $request->input($campoRequest);
                if ($valor !== null && $valor !== '') {
                    $datosActualizar[$campoBD] = $valor;
                    error_log("Campo {$campoRequest} -> {$campoBD}: {$valor}");
                }
            }
        }

        // Procesar archivo en Base64 si existe
        if ($request->has('constanciaFiscalBase64') && $request->has('nombreArchivo')) {
            $base64 = $request->input('constanciaFiscalBase64');
            $nombreOriginal = $request->input('nombreArchivo');
            $extension = pathinfo($nombreOriginal, PATHINFO_EXTENSION);

            // Validar que sea un PDF
            if (strtolower($extension) !== 'pdf') {
                return response()->json(['mensaje' => 'El archivo debe ser PDF'], 400);
            }

            // Generar nombre único para el archivo
            $nombreArchivo = time() . '_' . $idAlumno . '_' . $nombreOriginal;

            // Extraer el contenido Base64 (eliminar el prefijo data:application/pdf;base64,)
            $base64Str = substr($base64, strpos($base64, ',') + 1);
            $contenidoArchivo = base64_decode($base64Str);

            // Validar tamaño del archivo (5MB máximo)
            if (strlen($contenidoArchivo) > (5 * 1024 * 1024)) {
                return response()->json(['mensaje' => 'El archivo es demasiado grande (máximo 5MB)'], 400);
            }

            $rutaDestino = public_path('uploads/constancias_fiscales');
            if (!file_exists($rutaDestino)) {
                mkdir($rutaDestino, 0755, true);
            }

            // Eliminar archivo anterior si existe
            if ($registroExistente->RegA_ConstanciaFiscal) {
                $rutaArchivoAnterior = public_path('uploads/constancias_fiscales/' . $registroExistente->RegA_ConstanciaFiscal);
                if (file_exists($rutaArchivoAnterior)) {
                    unlink($rutaArchivoAnterior);
                }
            }

            // Guardar el nuevo archivo
            file_put_contents($rutaDestino . '/' . $nombreArchivo, $contenidoArchivo);
            $datosActualizar['RegA_ConstanciaFiscal'] = $nombreArchivo;
        }

        // Campos adicionales
        if ($request->has('idEscuela')) {
            $datosActualizar['idEscuela'] = $request->input('idEscuela', 'COLEGIOABC');
        }

        if ($request->has('lastUpdate')) {
            $datosActualizar['lastUpdate'] = $request->input('lastUpdate');
        }

        error_log('Datos finales para actualizar: ' . json_encode($datosActualizar));

        $actualizado = DB::table('registroadministrativo')
            ->where('idEscuela', 'COLEGIOABC')
            ->where('idAlumno', $idAlumno)
            ->update($datosActualizar);

        error_log('Filas afectadas por la actualización: ' . $actualizado);

        if ($actualizado > 0) {
            $message = 'Actualización exitosa';
            $status = 200;

            $registroActualizado = DB::table('registroadministrativo')
                ->where('idEscuela', 'COLEGIOABC')
                ->where('idAlumno', $idAlumno)
                ->first();

            error_log('Registro después de actualización: ' . json_encode($registroActualizado));
        } else {
            $message = 'No se detectaron cambios en el registro';
            $status = 200;
            error_log('ADVERTENCIA: No se detectaron cambios');
        }

    } catch (\Exception $e) {
        error_log('ERROR en editarRegistroAdmin: ' . $e->getMessage());
        error_log('Stack trace: ' . $e->getTraceAsString());

        if (isset($nombreArchivo) && $nombreArchivo && isset($registroExistente) && $nombreArchivo !== $registroExistente->RegA_ConstanciaFiscal) {
            $rutaArchivo = public_path('uploads/constancias_fiscales/' . $nombreArchivo);
            if (file_exists($rutaArchivo)) {
                unlink($rutaArchivo);
            }
        }

        $message = 'Error interno del servidor: ' . $e->getMessage();
        $status = 500;
    }

    return response()->json(['mensaje' => $message], $status);
}
    public function getOneRegistroAdmi($id){
        $id = base64_decode($id);
        $registro = DB::table('registroadministrativo')
        ->where('idEscuela', 'COLEGIOABC')
        ->where('idAlumno', $id)
        ->get();
        return response()->json(['registro'=>$registro]);
    }

   public function getAllMetoPago(){
        $metodoPago = DB::table('config_metodopago')
        ->where('idEscuela', 'COLEGIOABC')
        ->get();
        return response()->json(['metodoPago'=>$metodoPago]);
    }

   public function getAllPlanPago(){
        $planPago = DB::table('config_planpago')
        ->where('idEscuela', 'COLEGIOABC')
        ->get();
        return response()->json(['planPago'=>$planPago]);
    }

  public function  getAllPorcentajeBeca(){
        $porcentajeBeca = DB::table('config_porcentajebeca')
        ->where('idEscuela', 'COLEGIOABC')
        ->get();
        return response()->json(['porcentajeBeca'=>$porcentajeBeca]);
    }

    public function findOne($id)
    {
        $id = base64_decode($id);
        $usuario = DB::table('usuarios')
            ->where('idUsuario', $id)
            ->select(
                DB::raw("CONCAT(COALESCE(primerNombre, ''), ' ', COALESCE(segundoNombre, ''), ' ', COALESCE(apellidoPaterno, ''), ' ', COALESCE(apellidoMaterno, '')) AS nombreUsuario"),
                'idUsuario',
                'grado'
            )
            ->get();
        return response()->json($usuario, 200);
    }

}
