from django.db import models


class TeamMember(models.Model):
    vendor = models.ForeignKey(
        'accounts.VendorProfile',
        on_delete=models.CASCADE,
        related_name='team_members'
    )
    name = models.CharField(max_length=150)
    email = models.EmailField(blank=True, null=True)
    phone = models.CharField(max_length=15, blank=True, null=True)
    bio = models.TextField(blank=True)
    photo = models.ImageField(upload_to='team_photos/', blank=True, null=True)
    display_on_public = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'team_members'
        ordering = ['-created_at']

    def __str__(self):
        return f"{self.name} - {self.vendor.shop_name}"


class TeamMemberPortfolio(models.Model):
    team_member = models.ForeignKey(
        TeamMember,
        on_delete=models.CASCADE,
        related_name='portfolio_images'
    )
    image = models.ImageField(upload_to='team_portfolio/')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = 'team_member_portfolio'
        ordering = ['-created_at']

    def __str__(self):
        return f"Portfolio image for {self.team_member.name}"


class TeamMemberServiceRate(models.Model):
    COMMISSION_TYPE_CHOICES = (
        ('percentage', 'Percentage'),
        ('flat', 'Flat Fee'),
    )

    team_member = models.ForeignKey(
        TeamMember,
        on_delete=models.CASCADE,
        related_name='service_rates'
    )
    service = models.ForeignKey(
        'services.Service',
        on_delete=models.CASCADE,
        related_name='team_rates'
    )
    rate = models.DecimalField(max_digits=10, decimal_places=2)
    commission_type = models.CharField(
        max_length=10,
        choices=COMMISSION_TYPE_CHOICES,
        default='percentage'
    )
    commission_value = models.DecimalField(
        max_digits=10,
        decimal_places=2,
        default=0
    )

    class Meta:
        db_table = 'team_member_service_rates'
        unique_together = ('team_member', 'service')

    def __str__(self):
        return f"{self.team_member.name} - {self.service.name} @ {self.rate}"
