# -*- coding: utf-8 -*-
from django.db import models
from django.core.exceptions import ValidationError

from datetime import datetime
import uuid

from management.models import Good


class Project(models.Model):
    id = models.CharField(max_length=40 ,primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255, verbose_name='Назва')
    customer = models.CharField(blank=True, null=True,max_length=255, verbose_name='Замовник')
    description = models.TextField(blank=True, null=True, verbose_name='Опис')
    date_start = models.DateField(default=datetime.now, verbose_name='Дата початку')
    date_end = models.DateField(default=datetime.now, verbose_name='Дата закінчення')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Дата створення')
    updated_at = models.DateTimeField(auto_now_add=True, verbose_name='Дата оновлення')
    created_by = models.CharField(max_length=200, verbose_name='Користувач', default='System')
    is_delete  = models.BooleanField(default=False, verbose_name='Видалено')
    
    class Meta:
        verbose_name = 'Проект'
        verbose_name_plural = 'Проекти'

    def __str__(self):
        """
        String for representing the Model object (in Admin site etc.)
        """
        return self.name


class ProjectItem(models.Model):
    id = models.CharField(max_length=40 ,primary_key=True, default=uuid.uuid4, editable=False)
    project = models.ForeignKey('Project', on_delete=models.SET_NULL, null=True, verbose_name='Проект')
    good = models.ForeignKey(Good, on_delete=models.SET_NULL, null=True, verbose_name='Товар')
    quantity = models.FloatField(verbose_name='Кількість')
    is_write_off = models.BooleanField(default=False, verbose_name='Списано')

    def __str__(self):
        return f"{self.good}"

    class Meta:
        verbose_name_plural = 'ТМЦ в проекті'


# date_start = models.DateTimeField(blank=True, null=True, verbose_name='Дата старту')
# date_end =  models.DateTimeField(blank=True, null=True, verbose_name='Дата закінчення')