# 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 rel_actividad.models import Rel_Actividad
from workflow.models import Workflow
from actividades.models import Actividad
from rel_actividad.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 relactividad_list(request):
    if request.method == 'GET':
        id_workflow = request.GET.get('id_workflow')
        if id_workflow is None:
            actividades = Rel_Actividad.objects.all()
        else:
            actividades = Rel_Actividad.objects.filter(id_workflow=id_workflow)
        contenedor=[]
        for actividad in actividades:
            info={}
            info["id_workflow"]=actividad.id_workflow.id_workflow
            if actividad.id_actividad_padre is None:
                info["id_actividad_padre"]=None
            else:
                info["id_actividad_padre"]=actividad.id_actividad_padre.id_actividad
            if actividad.id_actividad_hijo is None:
                info["id_actividad_hijo"]=None
            else:
                info["id_actividad_hijo"]=actividad.id_actividad_hijo.id_actividad
                info["nombre_act"]=actividad.id_actividad_hijo.nombre
                info["descripcion_act"]=actividad.id_actividad_hijo.descripcion
            contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)-1
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)
    elif request.method == 'POST':
        id_workflow = request.POST.get('id_workflow')
        if id_workflow is None:
            actividades = Rel_Actividad.objects.all()
        else:
            actividades = Rel_Actividad.objects.filter(id_workflow=id_workflow)
        contenedor=[]
        for actividad in actividades:
            info={}
            info["id_workflow"]=actividad.id_workflow.id_workflow
            if actividad.id_actividad_padre is None:
                info["id_actividad_padre"]=None
            else:
                info["id_actividad_padre"]=actividad.id_actividad_padre.id_actividad
            if actividad.id_actividad_hijo is None:
                info["id_actividad_hijo"]=None
            else:
                info["id_actividad_hijo"]=actividad.id_actividad_hijo.id_actividad
                info["nombre_act"]=actividad.id_actividad_hijo.nombre
                info["descripcion_act"]=actividad.id_actividad_hijo.descripcion
            contenedor.append(info)
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)-1
        response['data']=contenedor
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def relactividad_ingresa(request):
    if request.method == 'GET':
        id_actividad_padre = request.GET.get('id_actividad_padre')
        id_actividad_hijo = request.GET.get('id_actividad_hijo')
        id_workflow = request.GET.get('id_workflow')
        workflow=Workflow.objects.get(id_workflow=id_workflow)
        if id_actividad_padre is None:
            actividadPadre=None
        else:
            actividadPadre=Actividad.objects.get(id_actividad=id_actividad_padre)
        if id_actividad_hijo is None:
            actividadHijo=None
        else:
            actividadHijo=Actividad.objects.get(id_actividad=id_actividad_hijo)
        a=Rel_Actividad(id_actividad_padre=actividadPadre,id_actividad_hijo=actividadHijo,id_workflow=workflow) 
        a.save() 
        conexiones = Rel_Actividad.objects.get(id_rel_actividad=a.id_rel_actividad)
        res={}
        res["id_actividad_padre"]=id_actividad_padre
        res["id_actividad_hijo"]=id_actividad_hijo
        res["nombre_act"]=actividadHijo.nombre
        res["descripcion_act"]=actividadHijo.descripcion
        res["id_workflow"]=id_workflow
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=res
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_actividad_padre = request.POST.get('id_actividad_padre')
        id_actividad_hijo = request.POST.get('id_actividad_hijo')
        id_workflow = request.POST.get('id_workflow')
        workflow=Workflow.objects.get(id_workflow=id_workflow)
        if id_actividad_padre is None:
            actividadPadre=None
        else:
            actividadPadre=Actividad.objects.get(id_actividad=id_actividad_padre)
        if id_actividad_hijo is None:
            actividadHijo=None
        else:
            actividadHijo=Actividad.objects.get(id_actividad=id_actividad_hijo)
        a=Rel_Actividad(id_actividad_padre=actividadPadre,id_actividad_hijo=actividadHijo,id_workflow=workflow) 
        a.save() 
        conexiones = Rel_Actividad.objects.get(id_rel_actividad=a.id_rel_actividad)
        res={}
        res["id_actividad_padre"]=id_actividad_padre
        res["id_actividad_hijo"]=id_actividad_hijo
        res["id_workflow"]=id_workflow
        res["nombre_act"]=actividadHijo.nombre
        res["descripcion_act"]=actividadHijo.descripcion
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=res
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def relactividad_elimina(request):
    if request.method == 'GET':
        id_actividad_padre = request.GET.get('id_actividad_padre')
        id_actividad_hijo = request.GET.get('id_actividad_hijo')
        id_workflow = request.GET.get('id_workflow')
        a = Rel_Actividad.objects.filter(id_actividad_padre=id_actividad_padre,id_actividad_hijo=id_actividad_hijo,id_workflow=id_workflow)
        a.delete()
        borro={}
        devuelve={}
        borro['id_workflow']=id_workflow
        borro['id_actividad_padre']=id_actividad_padre
        borro['id_actividad_hijo']=id_actividad_hijo
        devuelve['response']=borro
        return JSONResponse(devuelve)

    if request.method == 'POST':
        id_actividad_padre = request.POST.get('id_actividad_padre')
        id_actividad_hijo = request.POST.get('id_actividad_hijo')
        id_workflow = request.POST.get('id_workflow')
        a = Rel_Actividad.objects.filter(id_actividad_padre=id_actividad_padre,id_actividad_hijo=id_actividad_hijo,id_workflow=id_workflow)
        a.delete()
        borro={}
        devuelve={}
        borro['id_workflow']=id_workflow
        borro['id_actividad_padre']=id_actividad_padre
        borro['id_actividad_hijo']=id_actividad_hijo
        devuelve['response']=borro
        return JSONResponse(devuelve)