from datetime import datetime

from django.contrib.auth.models import AbstractUser
from django.db import models


class Function(models.Model):
    name = models.CharField(max_length=128)

    def __str__(self):
        return "{}".format(self.name)


class RaffleDraw(models.Model):
    state = models.IntegerField()                                   # etape de la tombola
    creation_date = models.DateField()                              # date de creation
    name = models.TextField(max_length=1024)                        # nom de la tombola
    participants = models.IntegerField(default=0)                   # nombre de participant pour creer les passeports
    winners_t1 = models.IntegerField(default=0)                     # nombre de gagnants pour le tirage 1
    winners_t2 = models.IntegerField(default=0)                     # nombre de gagnants pour le tirage 2
    winners_p= models.IntegerField(default=0)                       # nombre de gagnants pour le tirage partenaire
    winners_24h = models.IntegerField(default=0)                    # nombre de gagnants pour le tirage 24h
    start_datetime = models.DateTimeField(null=True)                # date et heure de debut tombola
    end_datetime = models.DateTimeField(null=True)                  # date et heure de fin tombola
    partners_number = models.IntegerField(default=0)                # nombre de partenaires
    timestamp_raffle = models.IntegerField(default = 15)            # temps max autorise pour une tranche horaire
    is_active = models.BooleanField(default=True)                  # tombola active
    step_raffle = models.IntegerField(default = 0)                  # 1 = tirage_1 actif, 2 = tirage_2 actif, 3 = tirage_24h actif


class User(AbstractUser):
    is_partner = models.BooleanField(default=False)                 # acces page partenaire uniquement
    is_badge = models.BooleanField(default=False)                   # acces page badge uniquement
    is_coord = models.BooleanField(default = False )                # acces page badge rattrapage uniquement
    comment  = models.CharField(max_length = 20 , default = "")




class Partenaire(models.Model):
    raffle = models.ForeignKey(RaffleDraw, on_delete=models.CASCADE)            # id tombola rattaché
    user = models.ForeignKey(User, on_delete = models.CASCADE, null=True)         # id user


class HourRange(models.Model):
    raffle = models.ForeignKey('RaffleDraw', on_delete=models.CASCADE)          # id tombola rattachée
    start = models.DateTimeField(null=False)                                    # heure debut
    end = models.DateTimeField(null=False)                                      # heure fin


class Passeport(models.Model):
    raffle = models.ForeignKey(RaffleDraw, on_delete=models.CASCADE)            # id tombola rattaché
    number = models.IntegerField()                                              # numero de passeport
    firstname = models.TextField(max_length=256, null=True)                     # nom ( non utilise )
    lastname = models.TextField(max_length=256, null=True)                      # prenom ( non utilise )
    unique_id = models.CharField(max_length=256)                                # id pour generer le qr code
    win_t1 = models.IntegerField( default = 0)                                  # ordre victoire t1, 0 si non gagnant
    win_t2 = models.IntegerField(default=0)                                     # ordre victoire t2, 0 si non gagnant
    win_p = models.IntegerField(default=0)                                      # ordre victoire partenaire, 0 si non gagnant
    win_24h = models.IntegerField(default=0)                                    # ordre victoire 24h, 0 si non gagnant




class Ticket(models.Model):
    passeport = models.ForeignKey(Passeport, on_delete=models.CASCADE)
    hour_range = models.ForeignKey(HourRange, on_delete=models.CASCADE, null=True)
    partner = models.ForeignKey(Partenaire, on_delete=models.CASCADE, null=True)
    badge_time = models.DateTimeField(null=False, default=datetime.now)

    