from django.db import models


class Testimonial(models.Model):
    class Type(models.TextChoices):
        SEEKER = 'seeker', 'Job Seeker'
        COMPANY = 'company', 'Employer'

    full_name = models.CharField(max_length=120)
    role = models.CharField(max_length=150)
    company = models.CharField(max_length=150, blank=True)
    story = models.TextField()
    rating = models.PositiveSmallIntegerField(default=5)
    avatar_initials = models.CharField(max_length=4, blank=True)
    avatar_url = models.URLField(blank=True)
    testimonial_type = models.CharField(max_length=20, choices=Type.choices, default=Type.SEEKER)
    is_featured = models.BooleanField(default=False)
    is_approved = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-is_featured', '-created_at']

    def __str__(self):
        return f'{self.full_name} – {self.role}'

    def save(self, *args, **kwargs):
        if not self.avatar_initials and self.full_name:
            parts = self.full_name.split()
            self.avatar_initials = ''.join(p[0].upper() for p in parts[:2])
        super().save(*args, **kwargs)
