from django.db import models


class Order(models.Model):
    NEW = 'NEW'
    DECLINED = 'DECLINED'
    LOAN_CREATED = 'LOAN_CREATED'
    EXPIRED = 'EXPIRED'
    STATUS_CHOICES = {
        NEW: 'Новая',
        LOAN_CREATED: 'Займ создан',
        DECLINED: 'Отклонена',
        EXPIRED: 'Истекла',
    }
    created = models.DateTimeField('Создана', auto_now_add=True)
    updated = models.DateTimeField('Изменена', auto_now=True)
    user_id = models.PositiveIntegerField()
    amount_requested = models.DecimalField('Запрошенная сумма', max_digits=7, decimal_places=0)
    amount_approved = models.DecimalField('Одобренная сумма', max_digits=7, decimal_places=0, null=True)
    amount_approved_max = models.DecimalField('Макс. одобренная сумма', max_digits=7, decimal_places=0, null=True)
    period_requested = models.PositiveSmallIntegerField('Запрошенный период')
    period_approved = models.PositiveSmallIntegerField('Одобренный период', blank=True, null=True)
    period_free = models.PositiveSmallIntegerField('Беспроцентный период')
    interests = models.DecimalField('Процентная ставка', max_digits=3, decimal_places=2)
    sign = models.PositiveSmallIntegerField('Подпись')
    attempts = models.PositiveSmallIntegerField('Попытки', default=0, help_text='Попытки ввода подписи')
    status = models.CharField('Статус', max_length=30, choices=sorted(STATUS_CHOICES.items()), default=NEW)
    promocode_code = models.CharField('Промокод', max_length=16, blank=True)
    contract_demo = models.FileField('Демо договора', upload_to="files/", blank=True)
    is_first_loan = models.BooleanField('Первый займ', null=True, blank=True,
                                        help_text='True - ранее у юзера не было займов')
    is_first_order = models.BooleanField('Первая заявка', null=True, blank=True,
                                         help_text='True - ранее у юзера не было заявок')
    comment = models.CharField('Комментарий', max_length=1024, blank=True)

    def save(self, *args, **kwargs):
        pass

    def __str__(self):
        return f'{self.id}'

    class Meta:
        managed = False
        verbose_name = 'Заявка'
        verbose_name_plural = 'Заявки'
