# Create your views here.
import os
import time
import cx_Oracle
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from transacciones.models import Transaccion
from modulos.models import Modulo
from transacciones.serializers import *
class JSONResponse(HttpResponse):
    """
    An HttpResponse that renders it's content into JSON.
    """
    def __init__(self, data, **kwargs):
        content = JSONRenderer().render(data)
        kwargs['content_type'] = 'application/json'
        super(JSONResponse, self).__init__(content, **kwargs)

#---Metodo para Modelo
@csrf_exempt
def transaccion_list(request):
    if request.method == 'GET':
        id_modulo = request.GET.get('id_modulo')
        if id_modulo is None:
            actividades = sorted(Transaccion.objects.all(), key=lambda a: a.nombre)
        else:
            actividades = sorted(Transaccion.objects.filter(id_modulo=id_modulo), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_transaccion"]=actividad.id_transaccion
            info["id_modulo"]=actividad.id_modulo.id_modulo
            info["nombre_mod"]=actividad.id_modulo.nombre
            info["nombre"]=actividad.nombre
            info["descripcion"]=actividad.descripcion
            info["id_tipo_comprobante"]=actividad.id_tipo_comprobante
            info["descripcion_conceptos"]=actividad.descripcion_conceptos
            if actividad.id_tabla==0 or actividad.id_tabla==None:
                info["id_tabla"]=""
            else:
                info["id_tabla"]=int(actividad.id_tabla)
            info["codigo_conceptos"]=actividad.codigo_conceptos
            info["id_cpto"]=actividad.id_cpto
            if actividad.aplica_concepto == 1:
                info["aplica_concepto"] = "true"
            else:
                info["aplica_concepto"] = "false"
            if actividad.id_cen_op_con==0 or actividad.id_cen_op_con==None:
                info["id_cen_op_con"]=""
            else:
                info["id_cen_op_con"]=int(actividad.id_cen_op_con)
            info["rownum_"] = fila
            contenedor.append(info)
            fila+=1
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
    elif request.method == 'POST':
        id_modulo = request.POST.get('id_modulo')
        if id_modulo is None:
            actividades = sorted(Transaccion.objects.all(), key=lambda a: a.nombre)
        else:
            actividades = sorted(Transaccion.objects.filter(id_modulo=id_modulo), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_transaccion"]=actividad.id_transaccion
            info["id_modulo"]=actividad.id_modulo.id_modulo
            info["nombre_mod"]=actividad.id_modulo.nombre
            info["nombre"]=actividad.nombre
            info["descripcion"]=actividad.descripcion
            info["id_tipo_comprobante"]=actividad.id_tipo_comprobante
            info["descripcion_conceptos"]=actividad.descripcion_conceptos
            if actividad.id_tabla==0 or actividad.id_tabla==None:
                info["id_tabla"]=""
            else:
                info["id_tabla"]=int(actividad.id_tabla)
            info["codigo_conceptos"]=actividad.codigo_conceptos
            info["id_cpto"]=actividad.id_cpto
            if actividad.aplica_concepto == 1:
                info["aplica_concepto"] = "true"
            else:
                info["aplica_concepto"] = "false"
            if actividad.id_cen_op_con==0 or actividad.id_cen_op_con==None:
                info["id_cen_op_con"]=""
            else:
                info["id_cen_op_con"]=int(actividad.id_cen_op_con)
            info["rownum_"] = fila
            contenedor.append(info)
            fila+=1
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
@csrf_exempt
def transaccion_ingresa(request):
    if request.method == 'GET':
        id_modulo = request.GET.get('id_modulo')
        nombre = request.GET.get('nombre')
        descripcion = request.GET.get('descripcion')
        id_tipo_comprobante = request.GET.get('id_tipo_comprobante')
        descripcion_conceptos = request.GET.get('descripcion_conceptos')
        id_tabla = request.GET.get('id_tabla')
        codigo_conceptos = request.GET.get('codigo_conceptos')
        id_cpto = request.GET.get('id_cpto')
        aplica_concepto = request.GET.get('aplica_concepto')
        id_cen_op_con = request.GET.get('id_cen_op_con')
        if(aplica_concepto == "true"):
            aplica_concepto = 1
        else:
            aplica_concepto = 0
        if id_tipo_comprobante is None:
            id_tipo_comprobante = "0"
        if id_tabla is None:
            id_tabla = "0"
        if id_cen_op_con is None:
            id_cen_op_con = "0"
        modulo=Modulo.objects.get(id_modulo=id_modulo)
        a=Transaccion(id_modulo=modulo,nombre=nombre,descripcion=descripcion,id_tipo_comprobante=id_tipo_comprobante,descripcion_conceptos=descripcion_conceptos,id_tabla=id_tabla,codigo_conceptos=codigo_conceptos,id_cpto=id_cpto,aplica_concepto=aplica_concepto,id_cen_op_con=id_cen_op_con) 
        a.save() 
        info={}
        info['id_transaccion']=a.id_transaccion
        info['id_modulo']=int(id_modulo)
        info['nombre']=nombre
        info['descripcion']=descripcion
        info['id_tipo_comprobante ']=int(id_tipo_comprobante) 
        info["descripcion_conceptos"]=descripcion_conceptos
        if id_cen_op_con=="0":
            info["id_cen_op_con"]=""
        else:
            info["id_cen_op_con"]=int(id_cen_op_con)
        info["codigo_conceptos"]=codigo_conceptos
        info["id_cpto"]=id_cpto
        info["aplica_concepto"] = aplica_concepto
        if id_tabla=="0":
            info["id_tabla"]=""
        else:
            info["id_tabla"]=int(id_tabla)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=info
        total['response']=response
        return JSONResponse(total)

    if request.method == 'POST':
        id_modulo = request.POST.get('id_modulo')
        nombre = request.POST.get('nombre')
        descripcion = request.POST.get('descripcion')
        id_tipo_comprobante = request.POST.get('id_tipo_comprobante')
        descripcion_conceptos = request.POST.get('descripcion_conceptos')
        id_tabla = request.POST.get('id_tabla')
        codigo_conceptos = request.POST.get('codigo_conceptos')
        id_cpto = request.POST.get('id_cpto')
        aplica_concepto = request.POST.get('aplica_concepto')
        id_cen_op_con = request.POST.get('id_cen_op_con')
        if(aplica_concepto == "true"):
            aplica_concepto = 1
        else:
            aplica_concepto = 0
        if id_tipo_comprobante is None:
            id_tipo_comprobante = "0"
        if id_tabla is None:
            id_tabla = "0"
        if id_cen_op_con is None:
            id_cen_op_con = "0"
        modulo=Modulo.objects.get(id_modulo=id_modulo)
        a=Transaccion(id_modulo=modulo,nombre=nombre,descripcion=descripcion,id_tipo_comprobante=id_tipo_comprobante,descripcion_conceptos=descripcion_conceptos,id_tabla=id_tabla,codigo_conceptos=codigo_conceptos,id_cpto=id_cpto,aplica_concepto=aplica_concepto,id_cen_op_con=id_cen_op_con) 
        a.save() 
        info={}
        info['id_transaccion']=a.id_transaccion
        info['id_modulo']=int(id_modulo)
        info['nombre']=nombre
        info['descripcion']=descripcion
        info['id_tipo_comprobante ']=int(id_tipo_comprobante) 
        info["descripcion_conceptos"]=descripcion_conceptos
        if id_tabla=="0":
            info["id_tabla"]=""
        else:
            info["id_tabla"]=int(id_tabla)
        if id_cen_op_con=="0":
            info["id_cen_op_con"]=""
        else:
            info["id_cen_op_con"]=int(id_cen_op_con)
        info["codigo_conceptos"]=codigo_conceptos
        info["id_cpto"]=id_cpto
        info["aplica_concepto"] = aplica_concepto
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=info
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def transaccion_actualiza(request):
    if request.method == 'GET':
        id_transaccion = request.GET.get('id_transaccion')
        id_modulo = request.GET.get('id_modulo')
        nombre = request.GET.get('nombre')
        descripcion = request.GET.get('descripcion')
        id_tipo_comprobante = request.GET.get('id_tipo_comprobante')
        descripcion_conceptos = request.GET.get('descripcion_conceptos')
        id_tabla = request.GET.get('id_tabla')
        codigo_conceptos = request.GET.get('codigo_conceptos')
        id_cpto = request.GET.get('id_cpto')
        aplica_concepto = request.GET.get('aplica_concepto')
        id_cen_op_con = request.GET.get('id_cen_op_con')
        if(aplica_concepto == "true"):
            aplica_concepto = 1
        else:
            aplica_concepto = 0
        if id_tipo_comprobante is None:
            id_tipo_comprobante = "0"
        if id_tabla is None:
            id_tabla = "0"
        if id_cen_op_con is None or len(id_cen_op_con)==0:
            id_cen_op_con = "0"
        modulo=Modulo.objects.get(id_modulo=id_modulo)
        actividades = Transaccion.objects.get(id_transaccion=id_transaccion)
        actividades.id_modulo=modulo
        actividades.nombre = nombre
        actividades.descripcion = descripcion
        actividades.id_tipo_comprobante = id_tipo_comprobante
        actividades.descripcion_conceptos = descripcion_conceptos
        actividades.id_tabla = int(id_tabla)
        actividades.codigo_conceptos = codigo_conceptos
        actividades.id_cpto = id_cpto
        actividades.aplica_concepto = aplica_concepto
        actividades.id_cen_op_con = int(id_cen_op_con)
        actividades.save()
        info={}
        info['id_transaccion']=actividades.id_transaccion
        info['id_modulo']=int(id_modulo)
        info['nombre']=nombre
        info['descripcion']=descripcion
        info['id_tipo_comprobante ']=int(id_tipo_comprobante) 
        info["descripcion_conceptos"]=descripcion_conceptos
        if id_tabla=="0":
            info["id_tabla"]=""
        else:
            info["id_tabla"]=int(id_tabla)
        info["codigo_conceptos"]=codigo_conceptos
        info["id_cpto"]=id_cpto
        info["aplica_concepto"] = aplica_concepto
        if id_cen_op_con=="0":
            info["id_cen_op_con"]=""
        else:
            info["id_cen_op_con"]=int(id_cen_op_con)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=info
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_transaccion = request.POST.get('id_transaccion')
        id_modulo = request.POST.get('id_modulo')
        nombre = request.POST.get('nombre')
        descripcion = request.POST.get('descripcion')
        id_tipo_comprobante = request.POST.get('id_tipo_comprobante')
        descripcion_conceptos = request.POST.get('descripcion_conceptos')
        id_tabla = request.POST.get('id_tabla')
        codigo_conceptos = request.POST.get('codigo_conceptos')
        id_cpto = request.POST.get('id_cpto')
        aplica_concepto = request.POST.get('aplica_concepto')
        id_cen_op_con = request.POST.get('id_cen_op_con')
        if(aplica_concepto == "true"):
            aplica_concepto = 1
        else:
            aplica_concepto = 0
        if id_tipo_comprobante is None:
            id_tipo_comprobante = "0"
        if id_tabla is None:
            id_tabla = "0"
        if id_cen_op_con is None or len(id_cen_op_con)==0:
            id_cen_op_con = "0"
        modulo=Modulo.objects.get(id_modulo=id_modulo)
        actividades = Transaccion.objects.get(id_transaccion=id_transaccion)
        actividades.id_modulo=modulo
        actividades.nombre = nombre
        actividades.descripcion = descripcion
        actividades.id_tipo_comprobante = id_tipo_comprobante
        actividades.descripcion_conceptos = descripcion_conceptos
        actividades.id_tabla = int(id_tabla)
        actividades.codigo_conceptos = codigo_conceptos
        actividades.id_cpto = id_cpto
        actividades.aplica_concepto = aplica_concepto
        actividades.id_cen_op_con = int(id_cen_op_con)
        actividades.save()
        info={}
        info['id_transaccion']=actividades.id_transaccion
        info['id_modulo']=int(id_modulo)
        info['nombre']=nombre
        info['descripcion']=descripcion
        info['id_tipo_comprobante ']=int(id_tipo_comprobante) 
        info["descripcion_conceptos"]=descripcion_conceptos
        if id_tabla=="0":
            info["id_tabla"]=""
        else:
            info["id_tabla"]=int(id_tabla)
        info["codigo_conceptos"]=codigo_conceptos
        info["id_cpto"]=id_cpto
        info["aplica_concepto"] = aplica_concepto
        if id_cen_op_con=="0":
            info["id_cen_op_con"]=""
        else:
            info["id_cen_op_con"]=id_cen_op_con
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=info
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def transaccion_elimina(request):
    if request.method == 'GET':
        id_conexion = request.POST.get('id_transaccion')
        transaccion = Transaccion.objects.get(id_transaccion=id_conexion)
        transaccion.delete()
        borro={}
        devuelve={}
        borro['id_transaccion']=id_conexion
        devuelve['response']=borro
        return JSONResponse(devuelve)
    if request.method == 'POST':
        id_conexion = request.POST.get('id_transaccion')
        transaccion = Transaccion.objects.get(id_transaccion=id_conexion)
        transaccion.delete()
        borro={}
        devuelve={}
        borro['id_transaccion']=id_conexion
        devuelve['response']=borro
        return JSONResponse(devuelve)