import datetime

from django.contrib import messages
from django.contrib.auth import authenticate, login, logout
from django.core.paginator import Paginator
from django.db import connection
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render
import os

from Consultas.models import Extenos, Banco
from Costos.models import Especies, CambioServicio
from Estadistica.models import EstadisticaFecha, EstadisticaUsuarioTipo, TotalUsuariosFecha
from Oficios.models import TipoDocumento


# Create your views here.
def login_(request):
    if request.POST:

        user = authenticate(username=request.POST.get('username'), password=request.POST.get('password'))
        print(user)
        if user is not None:
            messages.add_message(request, messages.SUCCESS,
                                 "Bienvenido %s" % user.get_full_name())
            login(request, user)
            print("ENTRO", user.get_full_name())
        else:
            messages.add_message(request, messages.ERROR,
                                 "El Usuario no se puede autenticar con las credeciales proporcionadas")
            print('ERROR')
        return HttpResponseRedirect("/")
    return render(request, 'login.html')


def logout_(request):
    logout(request)
    return HttpResponseRedirect("/")


def reportes_proc(request):
    fecha1 = request.GET.get('fecha1')
    fecha2 = request.GET.get('fecha2')
    with connection.cursor() as cursor:
        cursor.callproc('ConsultarTotalesFechas', [fecha1, fecha2])
        cursor.callproc('ConsultartTotalUsuariosFechas', [fecha1, fecha2])
        cursor.callproc('ConsularTotalesUsuarioTipo', [fecha1, fecha2])
        cursor.callproc('cantidadTipo', [fecha1, fecha2])
        cursor.callproc('rubro', [fecha1, fecha2])
        cursor.close()
    contexto = {
        'totales': EstadisticaFecha.objects.all().order_by('mes'),
        'total_usuario_tipo': EstadisticaUsuarioTipo.objects.all(),
        'total_usuario_fecha': TotalUsuariosFecha.objects.all(),
        'fecha': datetime.datetime.now().date()
    }
    return render(request, 'estadistica.html', contexto)


def especies_defectuosas(request):
    especie = Especies()
    if request.POST:
        if request.GET.get('edit'):
            especie = Especies.objects.get(id=request.GET.get('edit'))
            messages.add_message(request,messages.INFO,"Se ha modificado la especie defectuosa No. "+str(especie.numero_especie))
        else:
            messages.add_message(request, messages.SUCCESS, "Se ha registrado una especie como defectuosa..!")
        especie.fecha_generacion=request.POST.get('fecha')
        especie.placa=request.POST.get('placa')
        especie.tipo_vehiculo=request.POST.get('tipo_vehiculo')
        especie.tipo_tramite=request.POST.get('tipo_tramite')
        especie.numero_especie=request.POST.get('numero_especie')
        especie.usuario=request.POST.get('usuario')
        especie.motivo=request.POST.get('motivo')
        especie.save()

        return HttpResponseRedirect('/especies_defectuosas')
    if request.GET.get('rm'):
        try:
            es=Especies.objects.get(id=request.GET.get('rm'))
            es.delete()
            messages.add_message(request, messages.ERROR, "Se eliminó un registro..!")
            return HttpResponseRedirect('/especies_defectuosas')
        except:
            pass
    especies=Especies.objects.all().order_by('fecha_generacion')
    if request.GET.get('f1'):
        especies=especies.filter(fecha_generacion__gte=request.GET.get('f1'), fecha_generacion__lte=request.GET.get('f2'))
    p = Paginator(especies, 20)
    page_number = request.GET.get("page")
    page_obj = p.get_page(page_number)

    contexto = {
        'consultas': Extenos.objects.all(),
        'documentos': TipoDocumento.objects.all(),
        'especies': page_obj
    }
    return render(request, 'especies.html', contexto)

def cambio_servicio(request):
    cambio=CambioServicio()
    if request.POST:
        if request.GET.get('edit'):
            cambio=CambioServicio.objects.get(id=request.GET.get('edit'))
            messages.add_message(request,messages.INFO,"Se ha modificado un registro")
        else:
            messages.add_message(request, messages.SUCCESS, "Se ha registrado un cambio de servicio..!")
        cambio.numero_tramite=request.POST.get('tramite')
        cambio.fecha_tramite = request.POST.get('fecha_tramite')
        cambio.cedula = request.POST.get('cedula')
        cambio.propietario = request.POST.get('propietario')
        cambio.numero_placa = request.POST.get('placa')
        cambio.banco_id = request.POST.get('banco')
        cambio.numero_comprobante =request.POST.get('comprobante')
        cambio.fecha_pago = request.POST.get('fecha_pago')
        cambio.valor = request.POST.get('valor')
        cambio.cambio = request.POST.get('cambio')
        cambio.save()
        return HttpResponseRedirect('/cambio_servicio')
    if request.GET.get('rm'):
        try:
            ca=CambioServicio.objects.get(id=request.GET.get('rm'))
            ca.delete()
            messages.add_message(request, messages.ERROR, "Se eliminó un registro..!")
            return HttpResponseRedirect('/cambio_servicio')
        except:
            pass
    cambios=CambioServicio.objects.all().order_by('estado')
    if request.GET.get('f1'):
        cambios=cambios.filter(fecha_tramite__gte=request.GET.get('f1'), fecha_tramite__lte=request.GET.get('f2'))
    p = Paginator(cambios, 20)
    page_number = request.GET.get("page")
    page_obj = p.get_page(page_number)

    contexto={
        'consultas': Extenos.objects.all(),
        'documentos': TipoDocumento.objects.all(),
        'bancos': Banco.objects.all().order_by('nombre'),
        'cambiosServicios':page_obj,
    }
    return render(request,'registro_cambioservicio.html',contexto)
