from usuarios.permissions import IsClubAdmin, IsClubStaff
import json

from django.shortcuts import render
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
from rest_framework import status
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import AllowAny
from rest_framework.response import Response

from avisos.models import Aviso
from eventos.models import Evento
from finanzas.models import PlanSuscripciones
from usuarios.models import Usuarios, Equipos


# Create your views here.
@swagger_auto_schema(
    method='get',
    operation_description="Obteniendo datos de dashboard",
    tags=["Dashboard"],
    security=[{'Bearer': []}],
    responses={
        200: openapi.Response(
            description="Datos de dashboard cargados con éxito"
        ),
        400: openapi.Response(description="Solicitud inválida"),
    },
)
@api_view(['GET'])
@permission_classes([IsClubStaff])
def dashboard(request):
    try:
        totalUsuarios = Usuarios.objects.all().count()
        totalEquipos = Equipos.objects.all().count()
        totalPlanes = PlanSuscripciones.objects.all().count()
        totalAvisos = Aviso.objects.all().count()
        totalEventos = Evento.objects.all().count()

        return Response({
            "message": "Datos de dashboard cargados con éxito",
            "datos": {
                "totalUsuarios": totalUsuarios,
                "totalEquipos": totalEquipos,
                "totalPlanes": totalPlanes,
                "totalAvisos": totalAvisos,
                "totalEventos": totalEventos
            }
        }, status=status.HTTP_200_OK)
    except json.JSONDecodeError as error:
        return Response({"error": "Solicitud inválida"}, status=status.HTTP_400_BAD_REQUEST)