from django.db import models
from django.utils import timezone
from ckeditor.fields import RichTextField
from embed_video.fields import EmbedVideoField
import filter

CORES_CHOICES = (
    ('blue accent-2', 'Azul Realçado 2'),
    ('blue accent-3', 'Azul Realçado 3'),
    ('blue lighten-2', 'Azul Claro'),
    ('cyan', 'Ciano'),
    ('cyan darken-1', 'Ciano Escuro 1'),
    ('deep-orange lighten-2', 'Laranja Profundo Claro'),
    ('green', 'Verde'),
    ('grey darken-2', 'Cinza Escuro'),
    ('indigo', 'Azul Anil'),
    ('indigo darken-1', 'Azul Escuro'),
    ('orange', 'Laranja'),
    ('orange accent-2', 'Laranja Claro'),
    ('pink lighten-2', 'Rosa Clareado'),
    ('purple accent-1', 'Roxo Realçado'),
    ('purple lighten-1', 'Roxo Clareado'),
    ('red', 'Vermelho'),
    ('red accent-2', 'Vermelho Realçado'),
    ('red lighten-1', 'Vermelho Clareado'),
    ('teal lighten-1', 'Verde-Azulado Clareado'),
    ('teal accent-3', 'Verde-Azulado Realçado'),
    ('yellow darken-3', 'Amarelo Escuro')
)

CONTEUDO_CHOICES = (
    (1, 'Início'),
    (2, 'Rodapé')
)

class Conteudo(models.Model):
    texto = RichTextField()
    local = models.IntegerField(choices = CONTEUDO_CHOICES, default = 1)

    def __str__(self):
        return self.get_local_display()

    def textoFormatado(self):
        return filter.substituirTags(self.texto)

class Video(models.Model):
    descricao = models.TextField(null = False)
    video = EmbedVideoField()

    def __str__(self):
        return self.descricao

class Categoria(models.Model):
    nome = models.CharField(max_length=100, null = False)
    slug = models.SlugField(max_length=100, null=True)
    cor = models.CharField(max_length=100, null = False, choices=CORES_CHOICES)
    icone = models.CharField(max_length=100, null = False)
    categoria_tipo = models.NullBooleanField(default = False, verbose_name="ESTA CATEGORIA É PAI?")
    categoria_pai = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True)

    def __str__(self):
        return self.nome

class Atividade(models.Model):
    nome = models.CharField(max_length=100, null = False)
    slug = models.SlugField(max_length=100, null=True)
    cor = models.CharField(max_length=100, null = False, choices=CORES_CHOICES)
    imagem = models.ImageField(upload_to = "media/images", null = False)
    cod_bncc = RichTextField(verbose_name= "Cod BNCC",null = False)
    como_brincar = RichTextField(null = False)
    curiosidades = RichTextField(null = False)
    intencionalidade_pedagogica = RichTextField(null = False, blank=True) 
    videos = models.ManyToManyField(Video, blank=True)
    categorias = models.ManyToManyField(Categoria)

    def __str__(self):
        return self.nome
    
    def codBncc(self):
        return filter.substituirTags(self.cod_bncc)
    
    def comoBrincar(self):
        return filter.substituirTags(self.como_brincar)
    
    def Curiosidades(self):
        return filter.substituirTags(self.curiosidades)
    
    def intecionalidadePedagogica(self):
        return filter.substituirTags(self.intencionalidade_pedagogica)

class Saiba_Mais(models.Model):
    titulo = models.CharField(max_length=100, null = False)
    data_hora = models.DateTimeField(blank=True, null=True)
    arquivo = models.FileField(upload_to = "media/saiba_mais", null = True,blank=True)
    video = models.ForeignKey(Video, on_delete=models.CASCADE, null=True, blank=True)
    palavra_chave = models.CharField(max_length=100,null=False)

    def __str__(self):
        return self.titulo

    def publish(self):
        self.data_hora = timezone.now()
        self.save()
        
class Diretrizes(models.Model):
    titulo = models.CharField(max_length=100, null = False)
    ano_diretriz = models.CharField(max_length=4)
    arquivo = models.FileField(upload_to = "media/diretrizes", null = True,blank=True)
    url_arquivo = models.URLField(blank=True)
    palavra_chave = models.CharField(max_length=100,null=False)

    def __str__(self):
        return self.titulo
    
    def getUrl(self):
        if(not self.arquivo):
            return self.url_arquivo
        
        return self.arquivo.url
    
    class Meta:
        ordering = ['ano_diretriz']
