import datetime

from django.contrib import messages
from django.db.models import Sum
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render
from Consultas.models import Extenos
from Index.models import Parroquia
from Oficios.models import TipoDocumento
from TransitoApp.snnipers import render_to_pdf
from Vial.models import Informe, Seniales, InformeDetalle, FotosInforme


# Create your views here.
def registroVial(request):
    registro=None
    if request.POST:
        registro=Informe(
            fecha=request.POST.get("fecha"),
            parroquia_id=request.POST.get("parroquia"),
            sector=request.POST.get("sector"),
            ubicacion=request.POST.get("direccion")
        )
        registro.save()
        messages.add_message(request,messages.SUCCESS,"El registro se ha creado exitosamente..!")
        return HttpResponseRedirect("rvial?id=%s"%registro.id)

    if request.GET.get('id'):
        registro=Informe.objects.get(id=request.GET.get('id'))

    contexto={
        'fecha':datetime.datetime.now().date(),
        'parroquias':Parroquia.objects.all(),
        'registro':registro,
        'seniales':Seniales.objects.all(),
        'consultas': Extenos.objects.all(),
        'documentos': TipoDocumento.objects.all(),
    }
    return render(request,'registroVial.html',contexto)

def eliminar_detalles(request):
    detalles = InformeDetalle.objects.filter(informe_id=request.GET.get('idregistro'))
    for d in detalles:
        d.delete()
    return HttpResponse("eliminado")

def registro_detalles(request):
    informe = Informe.objects.get(id=request.GET.get('idregistro'))
    if float(request.GET.get('longitud'))>0 and float(request.GET.get('cantidad'))>0 and float(request.GET.get('total'))>0:
        InformeDetalle(
            informe=informe,
            detalle_id=request.GET.get('id'),
            color=request.GET.get('color'),
            longitud=request.GET.get('longitud'),
            ancho=request.GET.get('ancho'),
            cantidad = request.GET.get('cantidad'),
            total = request.GET.get('total'),
        ).save()
        informe.observacion = request.GET.get('observacion')
        informe.total=request.GET.get('tt')
        informe.save()
        return HttpResponse("ok")
    else:
        return HttpResponse("No")



def cargafotos(request):
    estado=False
    if request.GET.get('f1'):
        estado=False
    else:
        estado=True
    FotosInforme(
        informe_id=request.GET.get('id'),
        foto=request.FILES['file'],
        estado=estado,
    ).save()
    return HttpResponse("ok")

def reporteVial(request):
    if request.GET.get('id'):
        informe=Informe.objects.get(id=request.GET.get('id'))
        contexto={
            'informe':informe,

        }
        return  render_to_pdf('reporteVial.html',contexto)
    else:
        contexto={
            'informes':Informe.objects.all(),
            'consultas': Extenos.objects.all(),
            'documentos': TipoDocumento.objects.all(),
        }
        return render(request,'reporteRegistroVial.html',contexto)

def eliminar_vial(request):
    informe=Informe.objects.get(id=request.GET.get('id'))
    informe.delete()
    messages.add_message(request,messages.ERROR,'Se elimino el registro')
    return HttpResponseRedirect('repvial')

def reporte_consolidado(request):
    if request.GET.get('f1') and request.GET.get('f2'):
        f1=request.GET.get('f1')
        f2=request.GET.get('f2')
    else:
        f1=str(datetime.datetime.now().date())
        f2=str(datetime.datetime.now().date())
    print(f1,f2)
    if request.GET.get('f1') and request.GET.get('f2'):
        informes=Informe.objects.filter(fecha__range=[datetime.datetime.strptime(request.GET.get('f1'), '%Y-%m-%d'), datetime.datetime.strptime(request.GET.get('f2'), '%Y-%m-%d')])
    else:
        informes = Informe.objects.filter(fecha__range=[datetime.datetime.now().date(),datetime.datetime.now().date()])
    contexto={
        'informes':informes,
        'fecha':datetime.datetime.now().date(),
        'consultas': Extenos.objects.all(),
        'documentos': TipoDocumento.objects.all(),
    }
    return render(request,'vialConsolidado.html',contexto)

def pdf_consolidado(request):
    informes=InformeDetalle.objects.filter(fecha__range=[
            datetime.datetime.strptime(request.GET.get('f1'), '%Y-%m-%d'),
            datetime.datetime.strptime(request.GET.get('f2'), '%Y-%m-%d')
        ])
    contexto={}
    try:
        contexto={
            'f1':datetime.datetime.strptime(request.GET.get('f1'), '%Y-%m-%d'),
            'f2':datetime.datetime.strptime(request.GET.get('f2'), '%Y-%m-%d'),
            'metros':informes.aggregate(Sum('total')),
            'metros_amarillo':informes.filter(color='Amarillo').aggregate(Sum('total')),
            'metros_blanca': informes.filter(color='Blanco').aggregate(Sum('total')),
            'canecas_a':informes.filter(color='Amarillo').aggregate(Sum('total'))['total__sum']/40,
            'canecas_b':informes.filter(color='Blanco').aggregate(Sum('total'))['total__sum']/40,
            'detalles':informes.values('detalle__nombre','color').annotate(totales=Sum('total')),
            'numero':Informe.objects.filter(fecha__range=[
                datetime.datetime.strptime(request.GET.get('f1'), '%Y-%m-%d'),
                datetime.datetime.strptime(request.GET.get('f2'), '%Y-%m-%d')
            ]).count(),
        }
    except:
        pass

    return render_to_pdf('pdfVial.html', contexto)

def carga_detalle_foto(request):
    registro=Informe.objects.get(id=request.GET.get('id'))
    contexto={
        'registro':registro,
    }
    if request.POST:
        registro.observacion=request.POST.get('observacion')
        registro.save()
        messages.add_message(request,messages.SUCCESS,"Se registro el detalle en el registro..!")
        return HttpResponseRedirect('carga_f_d?id=%s'%registro.id)
    return render(request,'FotoregistroVial.html',contexto)