# 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 modulos.models import Modulo
from conexiones.models import Conexion
from modulos.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 modulo_list(request):
    if request.method == 'GET':
        actividades = sorted(Modulo.objects.all(), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_modulo"]=actividad.id_modulo
            info["id_conexion"]=actividad.id_conexion.id_conexion
            info["descripcion_con"]=actividad.id_conexion.descripcion
            info["nombre"]=actividad.nombre
            info["descripcion"]=actividad.descripcion
            info["rownum_"] = fila
            contenedor.append(info)
            fila+=1
        serializer = ModuloSerializer(actividades, many=True)
        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':
        actividades = sorted(Modulo.objects.all(), key=lambda a: a.nombre)
        contenedor=[]
        fila=1
        for actividad in actividades:
            info={}
            info["id_modulo"]=actividad.id_modulo
            info["id_conexion"]=actividad.id_conexion.id_conexion
            info["descripcion_con"]=actividad.id_conexion.descripcion
            info["nombre"]=actividad.nombre
            info["descripcion"]=actividad.descripcion
            info["rownum_"] = fila
            contenedor.append(info)
            fila+=1
        serializer = ModuloSerializer(actividades, many=True)
        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 modulo_ingresa(request):
    if request.method == 'GET':
        id_conexion=request.GET.get('id_conexion')
        nombre=request.GET.get('nombre')
        descripcion=request.GET.get('descripcion')
        if descripcion is None:
            descripcion=None
        conexion=Conexion.objects.get(id_conexion=id_conexion)
        a=Modulo(id_conexion=conexion,nombre=nombre,descripcion=descripcion) 
        a.save() 
        actividades = Modulo.objects.get(id_modulo=a.id_modulo)
        serializer = ModuloSerializer(actividades)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_conexion=request.POST.get('id_conexion')
        nombre=request.POST.get('nombre')
        descripcion=request.POST.get('descripcion')
        if descripcion is None:
            descripcion=None
        conexion=Conexion.objects.get(id_conexion=id_conexion)
        a=Modulo(id_conexion=conexion,nombre=nombre,descripcion=descripcion) 
        a.save() 
        actividades = Modulo.objects.get(id_modulo=a.id_modulo)
        serializer = ModuloSerializer(actividades)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def modulo_actualiza(request):
    if request.method == 'GET':
        id_modulo=request.GET.get('id_modulo')
        id_conexion=request.GET.get('id_conexion')
        nombre=request.GET.get('nombre')
        descripcion=request.GET.get('descripcion')
        if descripcion is None:
            descripcion=None
        conexion=Conexion.objects.get(id_conexion=id_conexion)
        actividades = Modulo.objects.get(id_modulo=id_modulo)
        actividades.nombre=nombre
        actividades.descripcion=descripcion
        actividades.id_conexion=conexion
        actividades.save()
        serializer = ModuloSerializer(actividades)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_modulo=request.POST.get('id_modulo')
        id_conexion=request.POST.get('id_conexion')
        nombre=request.POST.get('nombre')
        descripcion=request.POST.get('descripcion')
        if descripcion is None:
            descripcion=None
        conexion=Conexion.objects.get(id_conexion=id_conexion)
        actividades = Modulo.objects.get(id_modulo=id_modulo)
        actividades.nombre=nombre
        actividades.descripcion=descripcion
        actividades.id_conexion=conexion
        actividades.save()
        serializer = ModuloSerializer(actividades)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def modulo_elimina(request):
    if request.method == 'GET':
        id_modulo = request.GET.get('id_modulo')
        modulos = Modulo.objects.get(id_modulo=id_modulo)
        modulos.delete()
        borro={}
        devuelve={}
        borro['id_modulo']=id_modulo
        devuelve['response']=borro
        return JSONResponse(devuelve)
    if request.method == 'POST':
        id_modulo = request.POST.get('id_modulo')
        modulos = Modulo.objects.get(id_modulo=id_modulo)
        modulos.delete()
        borro={}
        devuelve={}
        borro['id_modulo']=id_modulo
        devuelve['response']=borro
        return JSONResponse(devuelve)
