from django.shortcuts import render
from .models import *
from .forms import *
from att.views import *
from config.views import *

from django.http import HttpResponse,HttpResponseRedirect
from django.urls import reverse
from sicurezza.views import *

def welcome(request):
  if not 'AdminId' in request.session:
    print("Non rilevo presensa AdminId in request.session")
    return HttpResponseRedirect(reverse("login:start"))

  AdminId = request.session['AdminId']
  print('AdminId',AdminId)

  data = dict()
  data['HeaderTitle'] = getConfig('HeaderTitle')
  data['Navbar']=False

  admin = Amministratore.objects.get(pk=AdminId)
  data['admin'] = admin
  print('admin',admin.id,admin.nome)
  data['permesso'] = getAMP(admin)

  azienda = None
  if 'AziendaId' in request.session:
    AziendaId = request.session['AziendaId']
    print('AziendaId',AziendaId)
    azienda = Azienda.objects.get(pk=AziendaId)
    data['azienda'] = azienda

  sede = None
  if 'SedeId' in request.session:
    SedeId = request.session['SedeId']
    print('SedeId',SedeId)
    try:
      sede = Sede.objects.get(pk=SedeId)
    except Sede.DoesNotExist as dne:
      print("Sede non esiste")
    data['sede'] = sede

  amministratorelista = Amministratore.objects.all()
  data['amministratorelista'] = amministratorelista
  print(len(amministratorelista))

  # mostriamo gli amministratori per l'azienda
  if azienda:
    print('trovato riferimento per azienda')
    amministratorelista = azienda.assegnazioneazienda_set.all()
    tmp=[]
    for al in amministratorelista:
      print(al.amministratore.nome)
      tmp.append(al.amministratore)
    data['amministratorelista'] = tmp

  if sede:
    print('trovato riferimento per sede')
    amministratorelista = sede.assegnazionesede_set.all()
    tmp = []
    for al in amministratorelista:
      print(al.amministratore.nome)
      tmp1 = al.amministratore
      tmp.append(al.amministratore)
    data['amministratorelista'] = tmp

  data['amministratorelistalen'] = len(data['amministratorelista'])

  if request.method == 'POST':
    print("qualcosa e' stato premuto")
  
    if 'indietro' in request.POST:
      return HttpResponseRedirect(reverse("azienda:welcome"))

    if 'sceltanuovo' in request.POST:
      request.session['AmministratoreEditId'] = 0
      print('richiesto nuovo record')
      return HttpResponseRedirect(reverse('amministratore:edit'))

    formamministratoreeditid = FormAmministratoreEditId(request.POST,amministratore=data['amministratorelista'])
    if formamministratoreeditid.is_valid():
      scelta = formamministratoreeditid.cleaned_data.get('scelta')
      request.session['AmministratoreEditId'] = scelta
      print("Scelta effettuata",scelta)
      return HttpResponseRedirect(reverse("amministratore:edit"))

  #data['amministratorelista'] = amministratorelista
  #data['numeroRecordAmministratore'] = len(amministratorelista)

  print(data)
  return render(request,'amministratore.welcome.html',data)

def edit(request):
  '''
  edit amministratore o simile
  sulla base dei diritti assegnati, puo' leggero e/o scrivere nell'utente 
  nella sede o nell'azienda.
  i diritti sono assegnati sulla base dell'utente e non successivamente
  all'assegnazione, tanto se l'utente ha una zona assegnata, quella puo' vedere
  e basta.
  '''

  if not 'AdminId' in request.session:
    return HttpResponseRedirect(reverse("login:start"))

  data = dict()
  data['HeaderTitle'] = getConfig('HeaderTitle')
  data['Navbar']=True

  if 'AdminId' in request.session:
    data['AdminId'] = request.session['AdminId']
    admin = Amministratore.objects.get(pk=data['AdminId'])
    data['admin'] = admin
    print('admin',admin.id,admin.nome)
    data['permesso'] = getAMP(admin)
   
  amministratore = None
  print(request)
  if 'AmministratoreEditId' in request.session:
    amministratoreEditId = request.session.get('AmministratoreEditId')
    try:
      amministratore = Amministratore.objects.get(pk=amministratoreEditId)
    except Amministratore.DoesNotExist as dne:
      amministratore = Amministratore()
    print('amministratore',amministratore.id,amministratore.nome)

  print("request.method",request.method)

  if request.method == 'POST':
    print("qualcosa e' stato premuto")
  
    if 'indietro' in request.POST:
        return HttpResponseRedirect(reverse("amministratore:welcome"))

    formamministratore = FormAmministratore(request.POST)
    if formamministratore.is_valid():
      print('form valida')
      amministratore.login=formamministratore.cleaned_data.get('login')
      amministratore.nome=formamministratore.cleaned_data.get('nome')
      amministratore.mail=formamministratore.cleaned_data.get('mail')
      amministratore.pin=formamministratore.cleaned_data.get('pin')
      amministratore.save()
      print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome)
      request.session['AmministratoreEditId'] = amministratore.id

  tmp = dict()
  tmp['nome'] = amministratore.nome
  tmp['login'] = amministratore.login
  tmp['pin'] = amministratore.pin
  tmp['mail'] = amministratore.mail
  data['amministratore'] = FormAmministratore(tmp)

  print('data',data)

  return render(request,'amministratore.edit.html',data)
