#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

from django.db import models
from django.contrib.auth.models import User
from django.db.models import signals
from app.models import Asignatura

class Imagen(models.Model):
    pregunta = models.ForeignKey('Pregunta', help_text = u"Pregunta a responder por el usuario",related_name="tarea_imagen_pregunta",on_delete=models.CASCADE)
    foto = models.ImageField(upload_to="/media/",verbose_name="Captura")
   
    class Meta:
        verbose_name = u'Imagen'
        verbose_name_plural = u'Imagenes'

    def __unicode__(self):
        return u'%s %s' % (str(self.pregunta), str(self.foto))


class Respuesta(models.Model):
    pregunta = models.ForeignKey('Pregunta', help_text = u"Pregunta a responder por el usuario",related_name="tarea_respuesta_pregunta",on_delete=models.CASCADE)
    respuesta = models.TextField()

    class Meta:
        verbose_name = u'Respuesta'
        verbose_name_plural = u'Respuestas'

    def choice_str(self):
        choice_string = ""
        elecciones = self.pregunta.get_choices()
        split_answers = self.respuesta.split()

        for eleccion in elecciones:
            for split_answer in split_answers:
                if str(split_answer) == str(eleccion.nr):
                    choice_string += str(eleccion.name) + " " 
        return choice_string

    def __unicode__(self):
        return u'%s %s' % (str(self.pregunta), unicode(self.respuesta))

class Pregunta(models.Model):
    realizador = models.ForeignKey(User,verbose_name="Realizador",related_name="tarea_pregunta_realizador",null=True,blank=True,default=None)
    nr = models.IntegerField(u"Numero", help_text = "Orden de la pregunta")
    text = models.CharField(u"texto", max_length=500)
    type = models.IntegerField(u"tipo", default=1,choices = ( (1, u'Abierta'), (2, u'Eleccion'), (3, u'Multieleccion'), (4, u'Verdadero/falso') , (5, u'Puntuacion') ,(6, u'Imagen')), help_text = u"Elige el tipo de respuesta")
    actividad = models.ForeignKey('Actividad', help_text = u"Actividad al que pertenece la pregunta",related_name="tarea_pregunta_actividad",on_delete=models.CASCADE)
    val = models.PositiveIntegerField(verbose_name="Valor",help_text="Escribe el valor sin %")
    pregunta_evaluada = models.ForeignKey("self", null = True, blank = True, related_name="tarea_pregunta_evaluada_actividad", verbose_name="Pregunta evaluada")
    comentario = models.CharField(u"Comentario para el profesor", null = True, blank = True, default="",max_length=400)
    comentario_alumno = models.CharField(u"Comentario para el alumno", null = True, blank = True, default="",max_length=400)

    class Meta:
        verbose_name = u'Pregunta'
        verbose_name_plural = u'Preguntas'

    def __unicode__(self):
        return u'[%s]:: Num %s - %s' % (self.id,self.nr, self.text)

    def get_choices(self):
        elecciones = Eleccion.objects.filter(pregunta = self).order_by('nr')
        if len(elecciones) == 0:
            return []
        return elecciones

    def get_choices_admin(self):
        elecciones = Eleccion.objects.filter(pregunta = self).order_by('nr')
        if len(elecciones) == 0:
            return []
        valores = ''
        for i in  range(elecciones.count()):
            valores += str(elecciones[i])+","
        return valores

    def get(self,args):
        return self.nr,self.text,self.type,self.val

class Eleccion(models.Model):
    pregunta = models.ForeignKey('Pregunta',related_name="tarea_eleccion_pregunta",on_delete=models.CASCADE)
    nr = models.IntegerField(u"Numero", help_text = u"Orden de la eleccion")
    name = models.CharField(u"Nombre", max_length=200)
    correct = models.BooleanField("Correcta",default=False,help_text="Marque si es la respuesta correcta")
    val = models.PositiveIntegerField(u"Valor",default=0,null=True,blank=True)

    class Meta:
        verbose_name = u'Eleccion'
        verbose_name_plural = u'Elecciones'

    def __unicode__(self):
        return u'%s %s' % (self.nr, self.name)

    def __str__(self):
        return u'%s' % (self.name)

class Actividad(models.Model):
    asignatura = models.ForeignKey(Asignatura,verbose_name='Asignatura a la que pertenece',related_name='actividad_asignatura',null=False,blank=True)
    nr = models.IntegerField(u"Numero", help_text = u"Orden de la actividad")
    name = models.CharField(u"Nombre", max_length=200)
    text = models.TextField(u"Descripcion", help_text = u"Descripcion del actividad")
    autor = models.ForeignKey(User,verbose_name="Autor",related_name="tarea_actividad_autor")
    date = models.DateField(u'Fecha de creacion',auto_now_add=True)
    enddate = models.DateField(u'Fecha de finalizacion',null=False,blank=False)
    time = models.TimeField('Hora de finalizacion',null=True)
    hide = models.BooleanField(default=False,verbose_name='Publicada')

    class Meta:
        verbose_name = u'Actividad'
        verbose_name_plural = u'Actividades'
        
    def __unicode__(self):
        return u'%s::%s' % (self.nr,self.name)

    def questions(self):
        return Pregunta.objects.filter(actividad = self).order_by('nr')

class Tarea(models.Model):
    user = models.ForeignKey(User,verbose_name="realizador",related_name="tarea_tarea_realiza")
    actividades = models.ForeignKey(Actividad,verbose_name="Actividad",related_name="tarea_tarea_actividades",on_delete=models.CASCADE)
    realizado = models.BooleanField(default=False,verbose_name='Realizado')
    nota = models.DecimalField(verbose_name="Nota",help_text="Escribe el valor sin %",null=True,blank=True,default=0,max_digits=5,decimal_places=2)
    date = models.DateField(u'Fecha de entrega',auto_now_add=True)

    def __unicode__(self):
        return u'%s::%s' % (self.user.username,self.actividades.name)

    class Meta:
        verbose_name = u'Tarea'
        verbose_name_plural = u'Tareas'

        