from django.db import models
import uuid
from accounts.models import Accounts

class Genre(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        verbose_name = 'Genre'
        verbose_name_plural = 'Genres'

    def __str__(self):
        return self.name
    

def image_card_upload_to(instance, filename):
    return f'{instance.uuid}/image_card/{filename}'

def image_cover_upload_to(instance, filename):
    return f'{instance.uuid}/image_cover/{filename}'
    
class Movie(models.Model):
    uuid = models.UUIDField(default=uuid.uuid4)
    image_card = models.ImageField(upload_to=image_card_upload_to)
    image_cover = models.ImageField(upload_to=image_cover_upload_to)
    title = models.CharField('Título', max_length=255)
    description = models.TextField('Descrição')
    release_date = models.DateField('Data de Lançamento')
    genre = models.ForeignKey(Genre, on_delete=models.DO_NOTHING, verbose_name='Gênero')
    country =  models.CharField('País', max_length=50, null=True, blank=True)
    languages =  models.CharField('Linguagem', max_length=50, null=True, blank=True)
    budget =  models.CharField('Orçamento', max_length=50, null=True, blank=True)
    box_office =  models.CharField('Bilheteria', max_length=50, null=True, blank=True)
    length = models.PositiveIntegerField('Duração em minutos')
    views = models.IntegerField(default=0)
    url = models.URLField('URL')
    source = models.CharField(max_length=20, choices=[
        ('mp4', 'MP4'),('ytb','YOUTUBE')
    ], default='mp4')
    is_featured = models.BooleanField(default=False)


    class Meta:
        verbose_name = 'Movie'
        verbose_name_plural = 'Movies'

    def __str__(self):
        return self.title
    
class MovieList(models.Model):
    owner = models.ForeignKey(Accounts, on_delete=models.CASCADE)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Movie List'
        verbose_name_plural = 'Movie Lists'

    def __str__(self):
        return f'{self.owner.first_name} {self.owner.last_name}'
