from django.db import models
from django.db.models import CASCADE
from django.utils.translation import gettext_lazy as _

from judge.models.profile import Profile

__all__ = ["PrivateMessage", "PrivateMessageThread"]


class PrivateMessage(models.Model):
    title = models.CharField(verbose_name=_("message title"), max_length=50)
    content = models.TextField(verbose_name=_("message body"))
    sender = models.ForeignKey(
        Profile,
        verbose_name=_("sender"),
        related_name="sent_messages",
        on_delete=CASCADE,
    )
    target = models.ForeignKey(
        Profile,
        verbose_name=_("target"),
        related_name="received_messages",
        on_delete=CASCADE,
    )
    timestamp = models.DateTimeField(
        verbose_name=_("message timestamp"), auto_now_add=True
    )
    read = models.BooleanField(verbose_name=_("read"), default=False)


class PrivateMessageThread(models.Model):
    messages = models.ManyToManyField(
        PrivateMessage, verbose_name=_("messages in the thread")
    )