import base64
import os
from decimal import Decimal
from io import BytesIO
import json
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.db.models import Count, Sum, F, Q
from django.db.models.functions import TruncMonth
from django.http import HttpResponse
from django.http import JsonResponse
from django.shortcuts import render, redirect, get_object_or_404
from django.template.loader import get_template
from django.utils import timezone
from django.views.generic import ListView
from django.db.models import Sum
from datetime import timedelta
from .models import *
import base64
from typing import Tuple
import itertools
# Create your views here.
# Create your views here.
def signup(request):
    if request.method == 'POST':
        username = request.POST.get("username")
        password = request.POST.get("password")
        first_name = request.POST.get("first_name")
        last_name = request.POST.get("last_name")
        email = request.POST.get("email")

        user = User.objects.create_user(
            username=username,
            password=password,
            first_name=first_name,
            last_name=last_name,
            email=email
        )
        # connecté l'utilisateur qui s'enregistre
        login(request, user)
        # redirection
        return redirect('billing:dashboard')

    return render(request, 'accounts/signup.html')


def login_user(request):
    if request.method == 'POST':
        username = request.POST.get("username")
        password = request.POST.get("password")
        user = authenticate(request, username=username, password=password)
        if user is not None:
            # connecté l'utilisateur qui s'enregistre
            login(request, user)
            messages.success(request, f"Bienvenue {username} Chez CAN !")  # Message de succès
            # redirection
            return redirect('billing:dashboard')

    return render(request, 'accounts/login.html')

@login_required
def user_logout(request):
    logout(request)
    return redirect('frontsite:login')