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


class Room(models.Model):
    """
    Room definition.

    """

    name = models.CharField(max_length=32, blank=False, unique=True, verbose_name=_("name"))
    description = models.TextField(blank=True, verbose_name=_("description"))
    width = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("width"))
    length = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("length"))
    height = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("height"))

    class Meta:
        verbose_name = _("room")
        verbose_name_plural = _("rooms")

    def get_area(self) -> int:
        """
        Get the area of the room.

        Returns:
            Area of the room in square centimeters.

        """
        return self.width * self.length

    def get_volume(self) -> int:
        """
        Get the volume of the room.

        Returns:
            Volume of the room in cube centimeters.

        """
        return self.width * self.length * self.height

    def is_empty(self) -> bool:
        """
        Tell if the room is empty (has no volume).

        Returns:
            Whether the room has no volume (zero).

        """
        return self.width * self.length * self.height == 0
