# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.contrib.auth import logout
from Main.models import *
from Process.models import *
from Maintenance.models import *
from Consult.models import *
import sys 
from datetime import *
import string
import random
# Create your views here.
def id_cod_bloqueo(size=5, chars=string.ascii_lowercase + string.digits):
	return ''.join(random.choice(chars) for _ in range(size))


@login_required
def bloqueado(request):
	if not request.user.is_authenticated():
		return HttpResponseRedirect('/login/')
	else:
		usr=request.user.username
		try:
			usr= request.user.username
			cargo =''
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
				cargo='administrador'
		except:
			cargo =''
		return render(request,"bloqueado.html",{"cargo":cargo} )


@login_required
def autentificar(request):
	if not request.user.is_authenticated:
		return HttpResponseRedirect('/login/')
	else:
		try:

			if request.user.has_perm("Main.add_oficina"):
				usr = request.user.username
				if not request.user.is_staff:
					Ger = Gerente.objects.get(usuario=usr)
					#CG = Cajas.objects.get(id_usuario=Ger.id_usuario.pk)
				if Gerente_conf.objects.filter(id_gerente__usuario=usr,subGerente="si").exists():
					return HttpResponseRedirect('/Movimientos_admin_tem/')
				else:
					return HttpResponseRedirect('/Personales/')
					
			else:
				usr = request.user.username
				C= Cajas.objects.get(id_usuario__usuario=usr)
				if C.estado and C.id_oficina.estado_oficina and C.id_usuario.estado:

					start=datetime.now()
					horaI=start.strftime('%H:%M')
					fecha1= start.strftime('%Y-%m-%d') 
					fechaT= start.strftime('%Y-%m-%d %H:%M:%S')
					
					if not HoraIngresoPersonal.objects.filter(fecha_ingreso__icontains=fecha1,id_usuario=C.id_usuario.pk).exists():
						hi=HoraIngresoPersonal(id_usuario=C.id_usuario,fecha_ingreso=fechaT)
						hi.save()

						CC=Cajas.objects.get(pk=C.pk) 
						horaC=''
						if CC.horaIngreso!=None and CC.horaIngreso!='':
							fechaConvert=datetime.strptime(CC.horaIngreso, '%I:%M %p')
							horaC=fechaConvert.strftime('%H:%M')
							FMT = '%H:%M'
							timeD=0
							if datetime.strptime(horaI, FMT)>datetime.strptime(horaC, FMT)+ timedelta(minutes = 10):
								timeD = datetime.strptime(horaI, FMT) - datetime.strptime(horaC, FMT) 
							else:
								timeD=0

							if timeD==0:
								HoraIngresoPersonal.objects.filter(id_usuario=C.id_usuario.pk,fecha_ingreso__icontains=fecha1).update(horaMora=0,bloqueado="no")
								return HttpResponseRedirect('/')
							else:
								HoraIngresoPersonal.objects.filter(id_usuario=C.id_usuario.pk,fecha_ingreso__icontains=fecha1).update(horaMora=timeD.seconds,bloqueado="si")
								if not Codigo_desbloqueo_sistema.objects.filter(id_caja_solicitante=C.pk,estado__in=['pendiente','autorizado'],id_user_solicitante=C.id_usuario).exists():
									sol= Codigo_desbloqueo_sistema(codigo_aut='b'+id_cod_bloqueo(),estado='pendiente',id_user_solicitante=C.id_usuario,id_caja_solicitante=C)
									sol.save()
								return HttpResponseRedirect('/bloqueado/')
						else:
							HoraIngresoPersonal.objects.filter(id_usuario=C.id_usuario.pk,fecha_ingreso__icontains=fecha1).update(horaMora=0,bloqueado="no")
							return HttpResponseRedirect('/')

					else:
						if HoraIngresoPersonal.objects.filter(fecha_ingreso__icontains=fecha1,bloqueado="no",id_usuario=C.id_usuario.pk).exists():
							return HttpResponseRedirect('/')
						else:
							if not Codigo_desbloqueo_sistema.objects.filter(id_caja_solicitante=C.pk,id_user_solicitante=C.id_usuario,estado__in=['pendiente','autorizado']).exists():
								sol= Codigo_desbloqueo_sistema(codigo_aut='b'+id_cod_bloqueo(),estado='pendiente',id_user_solicitante=C.id_usuario,id_caja_solicitante=C)
								sol.save()
							return HttpResponseRedirect('/bloqueado/')
					

				else:
					return HttpResponseRedirect('/cerrar/')
					#return HttpResponseRedirect('/cerrar/')
		except:
			#return HttpResponseRedirect('/cerrar/')
			return HttpResponseRedirect('/cerrar/')

from django.http import HttpResponse
import json

def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')

    return ip

#validacion1
def Validacion_1_view(request):
	usr = request.POST.get('username')
	if usr !="" and usr!= None:
		if Personal.objects.filter(usuario=usr).exists():
			return HttpResponseRedirect('/validacion_codigo/')
		else:
			return render(request,"validacion1.html")
	else:
		return render(request,"validacion1.html")


def Validacion_2_view(request):
	cod = request.POST.get('codigo')
	if cod !="" and cod!= None:
		return HttpResponseRedirect('/login/')
	else:
		return render(request,"validacion2.html")


#prueva de  autentificacion
"""
@login_required
def prueva_view(request):
	data=request.user.has_perm("Main.add_oficina")
	mimetype="text"
	return HttpResponse(data,mimetype)"""

#todos  los formularios de siguen la misma logica anterior


"""class detalleTrans_ajax_view(TemplateView):
	def get(self, request,*args,**kwargs):
		idTransferencia=request.GET['id']
		print IdSolicitudTrans
		Transferecia={}
		Transferecia["IdSolicitudTrans"]="001"
		Transferecia["IdUserPersonal"]="002"
		Transferecia["cantidad"]=1234
		Transferecia["moneda"]="dolar"
		Transferecia["observaciones"]="nada"
		Transferecia["IdCliente"]="234"
		Transferecia["oficina"]="lima"
		Transferecia["comicion"]=23
		Transferecia["NombreBenef"]="jose"
		Transferecia["A_paternoBenef"]="duenas"
		Transferecia["A_maternoBenef"]="Mamani"
		Transferecia["dniCliente"]="12345"
		Transferecia["NombreCliente"]="jorge"
		Transferecia["A_parenoCliente"]="choque"
		Transferecia["A_marenoCliente"]="miranda"
		Transferecia["NroSolicitudT"]="123"
		Transferecia["direccionOfDes"]="av. zucre 1212"
		Transferecia["fecha"]="12/5/2012"
		Transferecia["direccion"]="prueva"
		Transferecia["Estado"]="activo"
		if idTransferencia==Transferencia["IdSolicitudTrans"]:
			data = serializers.serialize('json',Transferencia,)
		return HttpResponse(data,mimetype='application/json')
"""


