from django.db import models


class Maintenance(models.Model):

    REPAIR_TYPE_CHOICES = [
        ('INTERNAL', 'تعمیر داخلی'),
        ('EXTERNAL', 'تعمیر بیرونی'),
    ]

    STATUS_CHOICES = [
        ('PENDING', 'در انتظار تعمیر'),
        ('IN_PROGRESS', 'در حال تعمیر'),
        ('SENT_OUT', 'ارسال شده به بیرون'),
        ('COMPLETED', 'تکمیل شده'),
        ('NOT_REPAIRABLE', 'غیرقابل تعمیر'),
    ]

    asset = models.ForeignKey(
        'inventory.Asset',
        on_delete=models.PROTECT,
        related_name='maintenance_records',
        verbose_name='تجهیز'
    )

    report_date = models.DateField(
        verbose_name='تاریخ گزارش خرابی'
    )

    problem_description = models.TextField(
        verbose_name='شرح مشکل'
    )

    repair_type = models.CharField(
        max_length=20,
        choices=REPAIR_TYPE_CHOICES,
        default='INTERNAL',
        verbose_name='نوع تعمیر'
    )

    repair_company = models.CharField(
        max_length=200,
        blank=True,
        verbose_name='نام شرکت/تعمیرگاه'
    )

    technician = models.CharField(
        max_length=150,
        blank=True,
        verbose_name='شخص/تعمیرکار'
    )

    send_date = models.DateField(
        null=True,
        blank=True,
        verbose_name='تاریخ ارسال'
    )

    return_date = models.DateField(
        null=True,
        blank=True,
        verbose_name='تاریخ برگشت'
    )

    replaced_part = models.CharField(
        max_length=200,
        blank=True,
        verbose_name='قطعه تعویض‌شده'
    )

    cost = models.DecimalField(
        max_digits=12,
        decimal_places=2,
        null=True,
        blank=True,
        verbose_name='هزینه تعمیر'
    )

    status = models.CharField(
        max_length=20,
        choices=STATUS_CHOICES,
        default='PENDING',
        verbose_name='وضعیت تعمیر'
    )

    result = models.TextField(
        blank=True,
        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 = ('-report_date', '-created_at')

    def __str__(self):
        return f'{self.asset.asset_code} - {self.report_date}'