from django.db import models
from django.db.models.deletion import CASCADE
from django.db.models.fields import AutoField, CharField, DateField
from django_resized import ResizedImageField
from accounts.models import Users
from sub_categories.models import Sub_Categories
# Create your models here.

class Works(models.Model):
    user = models.ForeignKey(Users, max_length=255, blank=False, null=False, on_delete=models.CASCADE, related_name="user_works")
    name = models.CharField(max_length=255, blank=False, null=False)
    size = models.CharField(max_length=255, blank=False, null=False)
    material = models.CharField(max_length=255, blank=False, null=False)
    budget = models.CharField(max_length=255, blank=False, null=False)
    description = models.TextField(blank=True, null=True, default="")
    created_at = models.DateTimeField(auto_now_add= True)
    updated_at = models.DateTimeField(auto_now_add= True)


class Work_Sub_Categories(models.Model):
    work = models.ForeignKey(Works, blank=False, null=False, on_delete=models.CASCADE, related_name="work_sub_categories")
    sub_category = models.ForeignKey(Sub_Categories, blank=False, null=False, on_delete=models.CASCADE, related_name="work_sub_category")
    status_type = ((0, 'Pending'), (1, 'Assigned'), (2, 'Started'), (3, 'Completed'), (4, 'Canceled'))
    status = models.IntegerField(default = 0, choices=status_type)
    contractor = models.ForeignKey(Users, blank=True, null=True, on_delete=models.CASCADE, default="", related_name="work_sub_category_contractor") 
    progress = models.IntegerField(default = 0, choices=status_type)
    rating = models.PositiveSmallIntegerField(default=0)
    review = models.TextField(default="", blank=True, null=True)


class Work_Images(models.Model):
    work = models.ForeignKey(Works, blank=False, null=False, on_delete=models.CASCADE, related_name="work_images")
    image = ResizedImageField(upload_to="works", default="", blank=False, null=False, quality=100, force_format='WEBP')


class Work_Videos(models.Model):
    work = models.ForeignKey(Works, blank=False, null=False, on_delete=models.CASCADE, related_name="work_videos")
    video = models.FileField(upload_to="works", default="", blank=False, null=False)


class Work_Progress_Images(models.Model):
    work_sub_category = models.ForeignKey(Work_Sub_Categories, default="", blank=False, null=False, on_delete=models.CASCADE, related_name="work_progress_images")
    image = ResizedImageField(upload_to="works", default="", blank=False, null=False, quality=100, force_format='WEBP')


class Work_Progress_Videos(models.Model):
    work_sub_category = models.ForeignKey(Work_Sub_Categories, default="", blank=False, null=False, on_delete=models.CASCADE, related_name="work_progress_videos")
    video = models.FileField(upload_to="works", default="", blank=False, null=False)

