from django.db import models

# Create your models here.
from template.models import *

class Servizi(models.Model):
  id   = models.IntegerField(db_column='id',primary_key=True)
  nome = models.CharField(db_column='nome',max_length=30)
  enabled = models.BooleanField(db_column='enabled')
  class Meta:
    ordering = ['nome']
    db_table = 'domini_servizi'
    managed = False

class Causale(models.Model):
  id      = models.IntegerField(db_column='id',primary_key=True)
  nome    = models.CharField(db_column='nome',max_length=128,null=False)
  valore  = models.CharField(db_column='valore',max_length=32,default=0)
  enabled = models.BooleanField(db_column='enabled',default=True)

  from_email = models.CharField(db_column='from_email',max_length=128,null=False)
  # from email puo' essere preso direttamente dalla configurazione

  # invia una mail all'utente che preleva dalla configurazione del dominio
  send_email_user = models.BooleanField(db_column='send_email_user',default=True)

  # invia una mail alla contabilità
  send_email_account = models.BooleanField(db_column='send_email_account',default=True)
  to_account = models.CharField(db_column='to_account',max_length=128)

  # invia una mail agli amministratori
  send_email_admin = models.BooleanField(db_column='send_email_admin',default=True)
  to_admin   = models.CharField(db_column='to_admin',max_length=128)

  # invia una mail a terzi non meglio specificati
  send_email_other = models.BooleanField(db_column='send_email_other',default=True)
  to_other = models.CharField(db_column='to_other',max_length=128)

  # spedizione sms oltre la mail. mai utilizzato.
  sms     = models.BooleanField(db_column='sms',null=True)

  # date di scadenza (contratto e registrar)
  date_expire_contract = models.BooleanField(db_column='date_expire_contract',default=False)
  date_expire_registrar = models.BooleanField(db_column='date_expire_registrar',default=False)

  # controllo stato registrar
  check_registrar = models.BooleanField(db_column='check_registrar',default=False)

  # e' stato richiesto se rinnovare o meno
  renew_request = models.BooleanField(db_column='renew_request',default=False)

  # e' stato autorizzato il rinnovo
  renew_authorized = models.BooleanField(db_column='renew_authorized',default=False)

  # richiesta la chiusura
  close_request = models.BooleanField(db_column='close_request',default=False)

  # dominio aperto
  domain_opened = models.BooleanField(db_column='domain_opened',default=False)

  # dominio chiuso
  domain_closed = models.BooleanField(db_column='domain_closed',default=False)

  # dominio sospeso - semplicemente disattivato
  domain_suspended = models.BooleanField(db_column='domain_suspended',default=False)

  # dominio abilitato e operativo
  domain_enabled = models.BooleanField(db_column='domain_enabled',default=False)

  # dominio impostato per la cancellazione
  domain_tobedeleted = models.BooleanField(db_column='domain_tobedeleted',default=False)

  # avviato trasferimento in entrata/uscita
  transferring_in = models.BooleanField(db_column='transferring_in',default=False)
  transferring_out = models.BooleanField(db_column='transferring_out',default=False)

  # trasferimento in entrata/uscita completato
  transferred_in_complete = models.BooleanField(db_column='transferred_in_complete',default=False)
  transferred_out_complete = models.BooleanField(db_column='transferred_out_complete',default=False)

  # servizi associati (da capire come usarlo al meglio)
  domain_service = models.ForeignKey('Servizi',db_column='domain_service',on_delete=models.PROTECT,default=0)
  domain_service_active = models.BooleanField(db_column='domain_service_active',default=False)
  
  # dominio scaduto
  domain_expired = models.BooleanField(db_column='domain_expired',default=False)

  # queste voci potrebbero essere usate per la posta elettronica, ma sarebbero da estendere anche
  # per gli altri servizi.
  mail_opened = models.BooleanField(db_column='mail_opened',default=False)
  mail_closed = models.BooleanField(db_column='mail_closed',default=False)
  mail_tobedeleted = models.BooleanField(db_column='mail_tobedeleted',default=False)
  mail_password= models.BooleanField(db_column='mail_password',default=False)
  mail_resend = models.BooleanField(db_column='mail_resend',default=False)
  mail_test = models.BooleanField(db_column='mail_test',default=False)

  # situazione pagamenti
  payment_ok = models.BooleanField(db_column='payment_ok',default=False)
  payment_ko = models.BooleanField(db_column='payment_ko',default=False)

  # ordine di applicazione (utilizzato per capire l'ordine di avviso scadenza)
  ordine = models.IntegerField(db_column='ordine',default=None)

  # template da utilizzare per le comunicazioni via mail

  ##template_subject = models.CharField(db_column='template_subject',max_length=128)
  #template_txt = models.CharField(db_column='template_txt',max_length=128)
  #template_html = models.CharField(db_column='template_html',max_length=128)
  #template_sms = models.CharField(db_column='template_sms',max_length=128)

  template = models.ForeignKey("template.Template",db_column="template",on_delete=models.PROTECT,default=None)

  template_admin = models.ForeignKey("template.TemplateAdmin",db_column='template_admin',on_delete=models.PROTECT,default=None,null=True)
  template_account = models.ForeignKey("template.TemplateAccount",db_column='template_account',on_delete=models.PROTECT,default=None,null=True)
  template_other = models.ForeignKey("template.TemplateOther",db_column='template_other',on_delete=models.PROTECT,default=None,null=True)

  # genera codice di rinnovo
  renew_code = models.BooleanField(db_column='renew_code')

  # cancellare nel tempo previsto
  erase = models.BooleanField(db_column='erase',default=False)

  # rinnovo automatico
  automatico = models.BooleanField(db_column='automatico',default=False)

  class Meta:
    ordering = ['id']
    db_table = 'causali'
    managed = False

class CausaleOptions(models.Model):
  nome    = models.CharField(db_column='nome',max_length=128)
  enabled = models.BooleanField(db_column='enabled')
  valore  = models.CharField(db_column='valore',max_length=256)
  ordine  = models.IntegerField(db_column='ordine')
  tag     = models.CharField(db_column='tag',max_length=5)
  nota    = models.TextField(db_column='nota')

  class Meta:
    ordering = ['id']
    db_table = 'causali_options'
    managed = False


class CausaleRow(models.Model):
  causale = models.ForeignKey('Causale',db_column='causali',on_delete=models.PROTECT)
  causaleOptions = models.ForeignKey('CausaleOptions',db_column='causali_options',on_delete=models.PROTECT)
  enabled = models.BooleanField(db_column='enabled')
  ordine = models.IntegerField(db_column='ordine')

  class Meta:
    ordering = ['id']
    db_table = 'causali_row'
    managed = False
