from django.db import models

import rental.services.calendar as calendar
from rental.models.picture import Picture


class Place(models.Model):
    """Place encapsulates a loaction information."""

    class Meta:
        verbose_name = "Appartement"

    def __str__(self):
        return self.name

    name = models.CharField(max_length=10, unique=True)
    description = models.TextField(blank=True)
    info = models.TextField(blank=True)
    subname = models.CharField(max_length=100, blank=True)
    tagline = models.CharField(max_length=100, blank=True)
    price = models.DecimalField(max_digits=6, decimal_places=2, null=True)
    surface = models.IntegerField(null=True, blank=True)
    beds = models.IntegerField(null=True, blank=True)
    max_occupation = models.IntegerField(null=True, blank=True)
    thumbnail = models.ForeignKey(
        Picture, on_delete=models.CASCADE, blank=True, null=True
    )
    images = models.ManyToManyField(Picture, related_name="places", blank=True)
    calendar = models.CharField(max_length=350, blank=True, null=True)

    def is_available(self, start, end):
        """Check weither a location is available at a given time period."""

        return calendar.check_availability(self, start, end)
