from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
from django.http import HttpResponseRedirect,JsonResponse
from django.urls import reverse

# Create your views here.

from .models import *

from sicurezza.views import *
 
from datetime import datetime

from .library import deletemail

def setCoda(acronimo=None,parametri=None):
  '''
  inserimento valori coda
  parms:
    comando=Int,comando prelevato (sigla alfanumerica prelevabile dal db coda-comandi)
    parametri=array di parametri da eleborare.
    return value = l'id con cui e' stato registrato il comando.
  '''

  #identifichiamo l'acronimo
  try:
    codacomandi = CodaComandi.objects.get(acronimo = acronimo)
  except CodaComandi.DoesNotExists as dne:
    print('il record indicato non esiste')

  coda = Coda()
  coda.codacomandi = codacomandi
  coda.parametri = parametri
  coda.esecuzione = codacomandi.comando.format(parametri)
  coda.dataEsecuzione = 0
  coda.dataInserimento = int(datetime.timestamp(datetime.now())) 
  coda.sid = codacomandi.sid

  coda.stato=0
  coda.save()

  print("record:",coda.id)
  return coda.id

def getCodaHtml(request,comando=0):
  '''
  ottiene la prima voce non eseguita della coda, a meno che non si inserisce un id specifico
  parms:
    comando=eventuale comando richiesto, se None, il primo disponibile.
  '''
  coda = Coda.objects.all().filter(enabled=1)
  print("coda:",coda)
  codaOrdered=coda.order_by('id')
  if len(codaOrdered) > 0:
    codaFirst = codaOrdered[0]
  else:
    codaFirst = ""

  value={}
  
  value['comando'] = codaFirst

  print("value,",value)
  return render(request,"comando.html",value)

def getCodaJson(request,comando=0):
  '''
  ottiene la prima voce non eseguita della coda, a meno che non si inserisce un id specifico
  parms:
    comando=eventuale comando richiesto, se None, il primo disponibile.
  '''
  coda = Coda.objects.all().filter(enabled=1).filter(stato=0)
  codaOrdered=coda.order_by('id')
  if len(codaOrdered) > 0:   
    codaFirst = codaOrdered[0]
  else:
    codaFirst = 0

  print("codafirst: ",codaFirst)
  value={}
  value['id'] = codaFirst.id
  value['exc'] = codaFirst.esecuzione
  value['sid'] = codaFirst.sid
  print("value,",value)
  return JsonResponse(value)

@csrf_exempt
def CodaUpdate(request):
  # arriva la risposta e vengono aggiornati i campi
  print('request',request.POST)
  if request.method == 'POST':
    id = request.POST.get('id')
    errs = request.POST.get('errs')
    outs = request.POST.get('outs')
    stat = request.POST.get('stat')

    print(":",id,errs,outs,stat)

    try:
      coda = Coda.objects.get(pk=id)
    except Coda.DoesNotExist as dne:
      print("cazzo, id sbagliato!")
      coda = None

    if coda:
      coda.dataEsecuzione = int(datetime.now().timestamp())
      coda.stato = stat
      coda.risultato = "{}\n{}".format(outs,errs)
      coda.save()

  value={}

  return render(request,'risposta.html',value)

def CodaList(request):
  '''
  mostra la coda comandi, lo stato e la situazione
  '''

  session = getSessionParms(request)
  userauth = session['_userauth_']

  utenteautorizzato = User.objects.get(pk=userauth)

  coda =  Coda.objects.all()

  value={}
  value['utenteautorizzato'] = utenteautorizzato
  value['navbar'] = True
  value['coda'] = coda

  return render(request,'gestioneCodaLista.html',value)

