from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.urls import reverse
from .models import *
from django.contrib.auth.models import User
from config.views import *
from att.views import *
from .forms import *

def welcome(request):

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

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

  data = dict()

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

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

  admin = User.objects.get(pk=AdminId)
  data['admin'] = admin
  print('admin',admin.id,admin.get_username())

  assegnazione = Assegnazione.objects.filter(user=admin.id)
  print('assegnazione',len(assegnazione))

  data['listaAttivitaxAmministrazione']=getLogxAmministrazione(admin)

  if request.method=="POST":

    print(request.POST)
    if 'ritorna' in request.POST:
      print('premuto tast ritorno,logout')
      return HttpResponseRedirect(reverse("login:start"))

    if "sceltaazienda" in request.POST:
      sceltaazienda = request.POST.get('sceltaazienda')
      try:
        sceltaazienda = int(sceltaazienda)
      except ValueError as ve:
        print("Non e' stata fatta la scelta corretta")
        print(ve)
        return HttpResponseRedirect(reverse('azienda:welcome'))

      print("sceltaazienda = ",request.POST.get('sceltaazienda'))
      if sceltaazienda == 0: #richiesta una nuova azienda
        data['AziendaId']=None
        return HttpResponseRedirect(reverse('azienda:edit'))
      else:
        azienda = Azienda.objects.get(pk=sceltaazienda)
        data['azienda'] = azienda
        request.session['AziendaId'] = azienda.id

    if  "utenti" in request.POST:
      print('premuto tasto utenti')
      return HttpResponseRedirect(reverse('utente:welcome'))

    if 'documenti' in request.POST:
      # stato premuto il tasto documenti
      print('premuto tasto documenti')
      return HttpResponseRedirect(reverse('documento:welcome'))

    if "attivita" in request.POST:
      print('premuto tasto attivita')
      data['listaAttivitaxAzienda']=getLogxAzienda(azienda)

    if 'comunicazioni' in request.POST:
      print('premuto tasto comunicazioni')
      return HttpResponseRedirect(reverse('comunicazione:welcome'))

    if 'parazienda' in request.POST:
      print('premuto tasto Par.Azienda')
      azid = request.POST.get('parazienda')
      print('azienda passata',request.POST.get('parazienda'))
      azienda = Azienda.objects.get(pk=azid)
      request.session['AziendaId'] = azienda.id
      return HttpResponseRedirect(reverse('azienda:edit'))

  tmplist = list()
  for tmp in assegnazione:
    tmplist.append(tmp.azienda)

  data['aziendaLista'] = tmplist
  print('data',data)
  print('numero aziende',len(data['aziendaLista']))

  return render(request,'azienda.welcome.html',data)

# creazione azienda
def edit(request):
  AdminId = request.session['AdminId']

  data={}
  data['HeaderTitle'] = getConfig('HeaderTitle')
  user = data['admin'] = User.objects.get(pk=AdminId)

  if 'AziendaId' in request.session:
    print('trovato riferimento AziendaId',request.session.get('AziendaId'))
    azid = request.session.get('AziendaId')
    try:
      azienda = Azienda.objects.get(pk=azid)
      print('azienda trovata',azienda.nome)
    except Azienda.DoesNotFound as dnf:
        print(dnf)

  if request.method == "POST":
    print("Richiesta creazione nuova azienda")
    nuovaazienda = formAzienda(request.POST)
    if nuovaazienda.is_valid():
      print("il form e' valido",request.POST)
      if not azienda:
        azienda = Azienda()
      azienda.nome = nuovaazienda.cleaned_data.get('nome')
      azienda.mail = nuovaazienda.cleaned_data.get('mail')
      azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva')
      azienda.save()
      request.session['AziendaId'] = azienda.id
      print('azienda:',azienda.id)

      assegnazione = Assegnazione()
      if azienda:
        assegnazione = Assegnazione.objects.get(azienda=azienda,user=user)
      assegnazione.azienda=azienda
      assegnazione.user=User.objects.get(pk=AdminId)

      assegnazione.save()
      return HttpResponseRedirect(reverse('azienda:welcome'))
    else:
      print("form non valido")
      data['azienda'] = formAzienda(request.POST)
  else: #non è un post
    print("Non è un post")
    formAziendaField = None
    if azienda:
        print('Abbiamo azienda',azienda.nome)
        tmp = dict()
        tmp['id'] = azienda.id
        tmp['nome'] = azienda.nome
        tmp['partitaiva'] = azienda.partitaiva
        tmp['mail'] = azienda.mail
        tmp['forzanuovapassword'] = True
        formAziendaField = formAzienda(tmp)
    else:
        tmp = dict()
        tmp['nome'] = ''
        tmp['partitaiva'] = ''
        tmp['mail'] = user.email
        tmp['forzanuovapassword'] = True
        formAziendaField = formAzienda(tmp)

    data['azienda'] = formAziendaField

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




