from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='profile_images/', default='default_avatar.png')
    role = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return f"{self.user.username}'s Profile"
    class Meta:
        permissions = [
            ("sale_menu", "Can view Sale Menu"),
            ("inventory_menu", "Can view Inventory Menu"),
            ("finance_menu", "Can view Finance Menu"),
            ("users_menu", "Can view Users Menu"),
            ("reports_menu", "Can view Reports Menu"),
            ("settings_menu", "Can view Settings Menu"),
            ("clients_account_report", "Can view Clients Account Report"),
            ("expense_report", "Can view Expense Report"),
        ]


# Auto-create or update profile on user save
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)
    instance.profile.save()


class CompanyProfile(models.Model):
    title = models.CharField(
        max_length=191, verbose_name='Name')
    abbreviation = models.CharField(
        max_length=10, verbose_name="Abberiviation")
    slug = models.CharField(max_length=191, verbose_name="Slogan")
    phone_number = models.CharField(
        max_length=191, verbose_name="Contacts #")
    email = models.EmailField()
    address = models.CharField(
        max_length=191, verbose_name="English Address")
    farisi_title = models.CharField(
        max_length=191, verbose_name="اسم شرکت به فارسی")
    farisi_abbreviation = models.CharField(
        max_length=10, verbose_name="مخفف فارسی")
    farisi_slug = models.CharField(max_length=191, verbose_name="شعار فارسی")
    farisi_address = models.CharField(
        max_length=191, verbose_name="آدرس فارسی")
    logo = models.ImageField(upload_to='home/images',
                             blank=True, null=True, verbose_name="Logo")
    qrcode = models.ImageField(
        upload_to='home/images/qr', blank=True, null=True, verbose_name='QR Code')

    def __str__(self):
        return self.title
