from django.db import models


class ActivityType(models.Model):
    name = models.CharField(
        max_length=100,
        unique=True,
        verbose_name='نوع فعالیت'
    )

    description = models.TextField(
        blank=True,
        verbose_name='توضیحات'
    )

    is_active = models.BooleanField(
        default=True,
        verbose_name='فعال'
    )

    created_at = models.DateTimeField(
        auto_now_add=True,
        verbose_name='تاریخ ایجاد'
    )

    updated_at = models.DateTimeField(
        auto_now=True,
        verbose_name='آخرین تغییر'
    )

    class Meta:
        verbose_name = 'نوع فعالیت'
        verbose_name_plural = 'انواع فعالیت'
        ordering = ('name',)

    def __str__(self):
        return self.name


class Activity(models.Model):

    STATUS_CHOICES = [
        ('PENDING', 'در انتظار'),
        ('IN_PROGRESS', 'در حال اجرا'),
        ('COMPLETED', 'تکمیل شده'),
        ('CANCELLED', 'لغو شده'),
    ]

    PRIORITY_CHOICES = [
        ('LOW', 'عادی'),
        ('MEDIUM', 'مهم'),
        ('HIGH', 'عاجل'),
    ]

    activity_type = models.ForeignKey(
        ActivityType,
        on_delete=models.PROTECT,
        related_name='activities',
        verbose_name='نوع فعالیت'
    )

    date = models.DateField(
        verbose_name='تاریخ فعالیت'
    )

    location = models.ForeignKey(
        'facilities.Facility',
        on_delete=models.PROTECT,
        related_name='activities',
        verbose_name='مکان'
    )

    asset = models.ForeignKey(
        'inventory.Asset',
        on_delete=models.PROTECT,
        related_name='activities',
        blank=True,
        null=True,
        verbose_name='تجهیز مرتبط'
    )

    problem_description = models.TextField(
        blank=True,
        verbose_name='شرح مشکل'
    )

    action_taken = models.TextField(
        blank=True,
        verbose_name='اقدام انجام شده'
    )

    result = models.TextField(
        blank=True,
        verbose_name='نتیجه'
    )

    status = models.CharField(
        max_length=20,
        choices=STATUS_CHOICES,
        default='COMPLETED',
        verbose_name='وضعیت'
    )

    priority = models.CharField(
        max_length=20,
        choices=PRIORITY_CHOICES,
        default='LOW',
        verbose_name='اولویت'
    )

    notes = models.TextField(
        blank=True,
        verbose_name='یادداشت'
    )

    created_at = models.DateTimeField(
        auto_now_add=True,
        verbose_name='تاریخ ثبت'
    )

    updated_at = models.DateTimeField(
        auto_now=True,
        verbose_name='آخرین تغییر'
    )

    class Meta:
        verbose_name = 'فعالیت'
        verbose_name_plural = 'فعالیت‌ها'
        ordering = ('-date', '-created_at')

    def __str__(self):
        return f'{self.activity_type} - {self.location} - {self.date}'