# 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 conceptos.models import Concepto
from transacciones.models import Transaccion
from tablas.models import Tabla
from conceptos.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 concepto_list(request):
    if request.method == 'GET':
        id_transaccion = request.GET.get('id_transaccion')
        id_concepto = request.GET.get('id_concepto')
        id_input = request.GET.get('input')
        if id_transaccion is not None and id_concepto is not None:
            actividades = sorted(Concepto.objects.filter(id_transaccion=id_transaccion,id_concepto=id_concepto), key=lambda a: a.nombre)
        elif id_input is not None:
            actividades = sorted(Concepto.objects.filter(nombre__istartswith=id_input), key=lambda a: a.nombre)
        else:
            if id_concepto is not None:
                actividades = sorted(Concepto.objects.filter(id_concepto=id_concepto), key=lambda a: a.nombre)
            elif id_transaccion is not None:
                actividades = sorted(Concepto.objects.filter(id_transaccion=id_transaccion), key=lambda a: a.nombre)
            else:
                actividades = sorted(Concepto.objects.all(), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_concepto"] = actividad.id_concepto
            info["id_transaccion"] = actividad.id_transaccion.id_transaccion
            info["nombre_tran"] = actividad.id_transaccion.nombre
            info["nombre"] = actividad.nombre
            info["id_tipo_documento"] = actividad.id_tipo_documento
            info["descripcion"] = actividad.descripcion
            try:
                info["id_concepto_generico"] = int(actividad.id_concepto_generico)
                info["cod_concepto_generico"] = actividad.cod_concepto_generico
                info["desc_concepto_generico"] = actividad.desc_concepto_generico
                if actividad.id_concepto_generico is None:
                    info["id_concepto_generico"] ="No tiene datos"
            except Exception, e:
                info["id_concepto_generico"] = 0
                info["cod_concepto_generico"] = actividad.cod_concepto_generico
                info["desc_concepto_generico"] = actividad.desc_concepto_generico
            id_tabla=actividad.id_transaccion.id_tabla
            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_transaccion = request.POST.get('id_transaccion')
        id_concepto = request.POST.get('id_concepto')
        id_input = request.POST.get('input')
        if id_transaccion is not None and id_concepto is not None:
            actividades = sorted(Concepto.objects.filter(id_transaccion=id_transaccion,id_concepto=id_concepto), key=lambda a: a.nombre)
        elif id_input is not None:
            actividades = sorted(Concepto.objects.filter(nombre__istartswith=id_input), key=lambda a: a.nombre)
        else:
            if id_concepto is not None:
                actividades = sorted(Concepto.objects.filter(id_concepto=id_concepto), key=lambda a: a.nombre)
            elif id_transaccion is not None:
                actividades = sorted(Concepto.objects.filter(id_transaccion=id_transaccion), key=lambda a: a.nombre)
            else:
                actividades = sorted(Concepto.objects.all(), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_concepto"] = actividad.id_concepto
            info["id_transaccion"] = actividad.id_transaccion.id_transaccion
            info["nombre_tran"] = actividad.id_transaccion.nombre
            info["nombre"] = actividad.nombre
            info["id_tipo_documento"] = actividad.id_tipo_documento
            info["descripcion"] = actividad.descripcion
            try:
                info["id_concepto_generico"] = int(actividad.id_concepto_generico)
                info["cod_concepto_generico"] = actividad.cod_concepto_generico
                info["desc_concepto_generico"] = actividad.desc_concepto_generico
            except Exception, e:
                info["id_concepto_generico"] = 0 
                info["cod_concepto_generico"] = actividad.cod_concepto_generico
                info["desc_concepto_generico"] = actividad.desc_concepto_generico
            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 concepto_ingresa(request):
    if request.method == 'GET':
        id_transaccion = request.GET.get('id_transaccion')
        nombre = request.GET.get('nombre')
        id_tipo_documento = request.GET.get('id_tipo_documento')
        descripcion = request.GET.get('descripcion')
        transaccion=Transaccion.objects.get(id_transaccion=id_transaccion)
        id_concepto_generico=request.GET.get('id_concepto_generico')
        cod_concepto_generico=request.GET.get('cod_concepto_generico')
        desc_concepto_generico=request.GET.get('desc_concepto_generico')
        a=Concepto(id_transaccion=transaccion,nombre=nombre,id_tipo_documento=id_tipo_documento,descripcion=descripcion,id_concepto_generico=id_concepto_generico,cod_concepto_generico=cod_concepto_generico,desc_concepto_generico=desc_concepto_generico) 
        a.save() 
        actividades = Concepto.objects.get(id_concepto=a.id_concepto)
        contenedor=[]
        info={}
        info["id_concepto"] = actividades.id_concepto
        info["id_transaccion"] = actividades.id_transaccion.id_transaccion
        info["nombre"] = actividades.nombre
        info["id_tipo_documento"] = actividades.id_tipo_documento
        info["descripcion"] = actividades.descripcion
        info["id_concepto_generico"] = actividades.id_concepto_generico
        info["cod_concepto_generico"] = actividades.cod_concepto_generico
        info["desc_concepto_generico"] = actividades.desc_concepto_generico
        contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_transaccion = request.POST.get('id_transaccion')
        nombre = request.POST.get('nombre')
        id_tipo_documento = request.POST.get('id_tipo_documento')
        descripcion = request.POST.get('descripcion')
        transaccion=Transaccion.objects.get(id_transaccion=id_transaccion)
        id_concepto_generico=request.POST.get('id_concepto_generico')
        cod_concepto_generico=request.POST.get('cod_concepto_generico')
        desc_concepto_generico=request.POST.get('desc_concepto_generico')
        a=Concepto(id_transaccion=transaccion,nombre=nombre,id_tipo_documento=id_tipo_documento,descripcion=descripcion,id_concepto_generico=id_concepto_generico,cod_concepto_generico=cod_concepto_generico,desc_concepto_generico=desc_concepto_generico) 
        a.save() 
        actividades = Concepto.objects.get(id_concepto=a.id_concepto)
        contenedor=[]
        info={}
        info["id_concepto"] = actividades.id_concepto
        info["id_transaccion"] = actividades.id_transaccion.id_transaccion
        info["nombre"] = actividades.nombre
        info["id_tipo_documento"] = actividades.id_tipo_documento
        info["descripcion"] = actividades.descripcion
        info["id_concepto_generico"] = actividades.id_concepto_generico
        info["cod_concepto_generico"] = actividades.cod_concepto_generico
        info["desc_concepto_generico"] = actividades.desc_concepto_generico
        contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
@csrf_exempt
def concepto_actualiza(request):
    if request.method == 'GET':
        id_concepto = request.GET.get('id_concepto')
        id_transaccion = request.GET.get('id_transaccion')
        nombre = request.GET.get('nombre')
        id_tipo_documento = request.GET.get('id_tipo_documento')
        descripcion = request.GET.get('descripcion')
        id_concepto_generico=request.GET.get('id_concepto_generico')
        cod_concepto_generico=request.GET.get('cod_concepto_generico')
        desc_concepto_generico=request.GET.get('desc_concepto_generico')
        transaccion=Transaccion.objects.get(id_transaccion=id_transaccion)
        actividades = Concepto.objects.get(id_concepto=id_concepto)
        actividades.id_transaccion = transaccion
        actividades.nombre = nombre
        actividades.id_tipo_documento = id_tipo_documento
        actividades.descripcion = descripcion
        actividades.id_concepto_generico = id_concepto_generico
        actividades.cod_concepto_generico = cod_concepto_generico
        actividades.desc_concepto_generico = desc_concepto_generico
        actividades.save()
        contenedor=[]
        info={}
        info["id_concepto"] = actividades.id_concepto
        info["id_transaccion"] = actividades.id_transaccion.id_transaccion
        info["nombre"] = actividades.nombre
        info["id_tipo_documento"] = actividades.id_tipo_documento
        info["descripcion"] = actividades.descripcion
        info["id_concepto_generico"] = actividades.id_concepto_generico
        info["cod_concepto_generico"] = actividades.cod_concepto_generico
        info["desc_concepto_generico"] = actividades.desc_concepto_generico
        contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_concepto = request.POST.get('id_concepto')
        id_transaccion = request.POST.get('id_transaccion')
        nombre = request.POST.get('nombre')
        id_tipo_documento = request.POST.get('id_tipo_documento')
        descripcion = request.POST.get('descripcion')
        id_concepto_generico=request.POST.get('id_concepto_generico')
        cod_concepto_generico=request.POST.get('cod_concepto_generico')
        desc_concepto_generico=request.POST.get('desc_concepto_generico')
        transaccion=Transaccion.objects.get(id_transaccion=id_transaccion)
        actividades = Concepto.objects.get(id_concepto=id_concepto)
        actividades.id_transaccion = transaccion
        actividades.nombre = nombre
        actividades.id_tipo_documento = id_tipo_documento
        actividades.descripcion = descripcion
        actividades.id_concepto_generico = id_concepto_generico
        actividades.cod_concepto_generico = cod_concepto_generico
        actividades.desc_concepto_generico = desc_concepto_generico
        actividades.save()
        contenedor=[]
        info={}
        info["id_concepto"] = actividades.id_concepto
        info["id_transaccion"] = actividades.id_transaccion.id_transaccion
        info["nombre"] = actividades.nombre
        info["id_tipo_documento"] = actividades.id_tipo_documento
        info["descripcion"] = actividades.descripcion
        info["id_concepto_generico"] = actividades.id_concepto_generico
        info["cod_concepto_generico"] = actividades.cod_concepto_generico
        info["desc_concepto_generico"] = actividades.desc_concepto_generico
        contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
@csrf_exempt
def concepto_elimina(request):
    if request.method == 'GET':
        id_concepto = request.POST.get('id_concepto')
        work = Concepto.objects.get(id_concepto=id_concepto)
        work.delete()
        borro={}
        devuelve={}
        borro['id_concepto']=id_concepto
        devuelve['response']=borro
        return JSONResponse(devuelve)
    if request.method == 'POST':
        id_concepto = request.POST.get('id_concepto')
        work = Concepto.objects.get(id_concepto=id_concepto)
        work.delete()
        borro={}
        devuelve={}
        borro['id_concepto']=id_concepto
        devuelve['response']=borro
        return JSONResponse(devuelve)