import datetime
from xxlimited import Str

import django
from django.core.exceptions import ValidationError
from django.db import models

class Common():
    UNITE = (
        ('PCE', 'PIECE'),
        ('g','g'),
        ('kg','kg'),
        ('l','l')
    )

# Create your models here.
class Magasin(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50, verbose_name='Nom')

    def __str__(self):
        return self.name

class Rayon(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50, verbose_name='Nom')
    ordreAffichage = models.PositiveIntegerField(default=0, verbose_name='Ordre d''affichage')
    magasin = models.ForeignKey(Magasin, on_delete=models.CASCADE, verbose_name='Magasin', null=True, blank=True)

    def __str__(self):
        return self.name + " (" + str(self.magasin) + ")"

class Article(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200, verbose_name='Nom')
    quantity = models.PositiveIntegerField(default=0, verbose_name='Qté')
    unit = models.CharField(max_length=10, choices=Common.UNITE, verbose_name='Unité', null=True, blank=True)

    def __str__(self):
        return self.name


class ArticleRecurrent(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200, verbose_name='Nom')
    quantity = models.PositiveIntegerField(default=0, verbose_name='Qté')
    unit = models.CharField(max_length=10, choices=Common.UNITE, verbose_name='Unité', null=True, blank=True)
    rayon = models.ForeignKey(Rayon, on_delete=models.CASCADE, verbose_name='Rayon', null=True, blank=True)

    def __str__(self):
        return self.name


class Course(models.Model):
    id = models.AutoField(primary_key=True)
    date = models.DateField(verbose_name='Date',default=django.utils.timezone.now)
    dateFin = models.DateField(verbose_name='Fin', null=True, blank=True)
    magasin = models.ForeignKey(Magasin, on_delete=models.CASCADE, verbose_name='Magasin', null=True, blank=True)

    def __str__(self):
        return self.magasin.name + " du " + self.date.strftime('%d-%m-%Y') + " - (" + Str(self.id) + ")"

class ArticleCourse(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200, verbose_name='Nom', null=True, blank=True)
    quantity = models.PositiveIntegerField(default=0, verbose_name='Qté')
    unit = models.CharField(max_length=10, choices=Common.UNITE, verbose_name='Unité', null=True, blank=True)
    rayon = models.ForeignKey(Rayon, on_delete=models.CASCADE, verbose_name='Rayon', null=True, blank=True)
    termine = models.BooleanField(default=False, verbose_name='Terminé')
    course = models.ForeignKey(Course, on_delete=models.CASCADE, verbose_name='Course', null=True, blank=True)

    def __str__(self):
        return self.name
