<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;


class AsistenciaController extends Controller
{

    public function findOne($id)
    {
        $id = base64_decode($id);
        $asistencia = DB::table('niveles')->where('idNivel', $id)->first();
        return response()->json($asistencia, 200);
    }

    public function mostrar()
{
    $asistencia = DB::table('asistencia')
        ->select(
            'asistencia.*',
            'materias.nombreMateria as nombreMateria',
            DB::raw("CONCAT(COALESCE(usuarios.primerNombre, ''), ' ', COALESCE(usuarios.segundoNombre, ''), ' ', COALESCE(usuarios.apellidoPaterno, ''), ' ', COALESCE(usuarios.apellidoMaterno, '')) AS nombreCompleto")
        )
        ->where('asistencia.idEscuela', 'COLEGIOABC')
        ->join('materias', 'asistencia.idMateria', '=', 'materias.idMateria')
        ->join('usuarios', 'asistencia.idUsuario', '=', 'usuarios.idUsuario')
        ->get();
    return response()->json($asistencia, 200);
}

    public function nivelesHabilitados()
    {
        $asistencia = DB::table('niveles')
            ->where('idEscuela', 'COLEGIOABC')
            ->where('estado', 'Activo')
            ->get();
        return response()->json($asistencia, 200);
    }

    public function crear(Request $request)
    {
        try {
            DB::table('asistencia')->insert([
                'idEscuela' => 'COLEGIOABC',
                'idMateria' => $request->idMateria,
                'idFechaHora' => $request->idFechaHora,
                'estado' => 'Borrador',
                'version' => 1,
                'versionActiva' => 'Si',
                'listaAsistencia' => json_encode(json_decode($request->listaAsistencia)),
                'tAlumnos' => $request->tAlumnos,
                'tAsistencia' => 0,
                'tFalta' => 0,
                'tJustificada' => 0,
                'idUsuario' => $request->idUsuario,
                'ulActualizacion' => $request->ulActualizacion,
            ]);
            return response()->json([
                'mensaje' => 'Asistencia creada exitosamente',
                'idLista' => DB::getPdo()->lastInsertId()
            ], 201);
        } catch (\Exception $e) {
            return response()->json(['mensaje' => 'Error al crear el asistencia: ' . $e->getMessage()], 500);
        }
    }

    public function actualizar(Request $request)
    {
        try {
            DB::table('asistencia')
                ->updateOrInsert(
                    ['idAsistencia' => $request->idLista],
                    [
                        'listaAsistencia' => $request->listaAsistencia,
                        'tAsistencia' => $request->tAsistencia,
                        'tFalta' => $request->tFalta,
                        'tJustificada' => $request->tJustificada,
                        'estado' => $request->estado,
                    ]
                );

            return response()->json(['mensaje' => 'Registro actualizado exitosamente'], 201);
        } catch (\Exception $e) {

            return response()->json(['mensaje' => 'Error al actualizar el registro: ' . $e->getMessage()], 500);
        }
    }



    public function eliminar($id)
    {

        try {

            DB::table('asistencia')
                ->updateOrInsert(
                    ['idAsistencia' => $id],
                    ['estado' => 'Eliminada']
                );

            return response()->json(['mensaje' => 'Asistencia eliminada exitosamente'], 200);
        } catch (\Exception $e) {
            return response()->json(['mensaje' => 'Error al eliminar la asistencia: ' . $e->getMessage()], 500);
        }
    }


    public function habilitar($id)
    {
        $id = base64_decode($id);
        try {
            //code...
            DB::table('niveles')
                ->updateOrInsert(
                    ['idNivel' => $id],
                    ['estado' => 'Activo']
                );

            return response()->json(['mensaje' => 'Nivel eliminado exitosamente'], 201);
        } catch (\Exception $e) {
            //throw $th;
            return response()->json(['mensaje' => 'Error al eliminar el asistencia: ' . $e->getMessage()], 500);
        }

    }

    


}
