<?php

namespace App\Http\Controllers\Api;

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

class ActividadController extends Controller
{

    public function index(Request $request)
    {

        $inicioDelDia = now()->startOfDay();
        $finDelDia = now()->endOfDay();

        $actividad = DB::table('vista_usuarios_acceso')
            ->where('idEscuela', 'COLEGIOABC')
            ->whereBetween('fechaHora', [$inicioDelDia, $finDelDia])
            ->get();

        $data = [
            "message" => "actividad encontrada",
            "data" => $actividad,
            "status" => 200,
        ];
        return response()->json($data, 200);
    }
    public function count()
    {
        $totalUsers = DB::table('usuarios')
            ->count();

        $teachers = DB::table('usuarios')
            ->where('tipoUsuario', 'PR')
            ->count();
        $students = DB::table('usuarios')
            ->where('tipoUsuario', 'AL')
            ->count();
        $parents = DB::table('usuarios')
            ->where('tipoUsuario', 'PF')
            ->count();
        $data = [
            "message" => "actividad encontrada",
            "totalUsers" => $totalUsers,
            "teachers" => $teachers,
            "students" => $students,
            "parents" => $parents,
            "status" => 200,
        ];
        return response()->json($data, 200);
    }



    public function localIP(Request $request)
    {
        // Obtener la IP local
        $ipLocal = $request->ip();

        // respuesta del endpoint
        $data = [
            "message" => "Se encotró la ipLocal",
            "local_ip" => $ipLocal,
            "status" => 200
        ];

        return response()->json($data, 200);
    }

    public function show($id)
    {
        $id = base64_decode($id);
        $actividad = DB::table('vista_usuarios_acceso')
            ->select('ipPublica', 'iPLocal', 'plataforma', 'navegador', 'version', 'tipoDispositivo')
            ->where('idActividad', $id)->get();
        if (!$actividad) {
            $data = [
                "message" => "No se encontró la actividad",
                "status" => 404,
            ];
            return response()->json($data, 404);
        }
        $data = [
            "message" => "actividad encontrada",
            "data" => $actividad,
            "status" => 200,
        ];
        return response()->json($data, 200);
    }

    public function store(Request $request)
    {
        // Creación de la actividad
        try {
            DB::table('usuariosacceso')->insert([
                'idEscuela' => 'COLEGIOABC',
                'idUsuario' => $request->idUsuario,
                'fechaHora' => $request->fechaHora,
                'ipPublica' => $request->ipPublica,
                'ipLocal' => $request->ipLocal,
                'plataforma' => $request->plataforma,
                'navegador' => $request->navegador,
                'version' => $request->version,
                'tipoDispositivo' => $request->tipoDispositivo,
                'esMovil' => $request->esMovil,
                'esTableta' => $request->esTableta,
                'sesionCerrada' => $request->sesionCerrada,
                'sesionMensual' => $request->sesionMensual,
                'fechaHoraFin' => $request->fechaHoraFin,
            ]);
            // Si la inserción fue exitosa, retornar un mensaje de éxito
            return response()->json(['mensaje' => 'Actividad almacenada exitosamente'], 201);
        } catch (\Exception $e) {
            // Respuesta de error
            return response()->json(['mensaje' => 'Error al registrar la actividad: ' . $e->getMessage()], 500);
        }
    }
}
