from django.db import models
from django.utils import timezone
from django.utils.text import slugify
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
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)
    confi = models.CharField(max_length=100,blank=True,null=True)
    CHOICES=(('F','Female'),('M','Male'),('P','Personal'))
    gender=models.CharField(max_length=2,choices=CHOICES,default='P',null=True,blank=True)
    Profile_picture=models.ImageField(upload_to='media/pictures',blank=True,null=True)
    first_name=models.CharField(max_length=50,blank=True,null=True)
    enterprise=models.CharField(max_length=50,blank=True,null=True)
    last_name=models.CharField(max_length=50,blank=True,null=True)
    email=models.CharField(max_length=50,blank=True,null=True)
    phone_number = models.CharField(max_length=50, blank=True, null=True)
    Account_type=models.CharField(max_length=50,default='Customer',blank=True,null=True)
    




class Profile_Mail_List(models.Model):
    customer_email=models.CharField(max_length=50,blank=True,null=True)

    def __str__(self):
        return self.customer_email




class Profile_Agent(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    confi = models.CharField(max_length=100,blank=True,null=True)
    CHOICES=(('F','Female'),('M','Male'),('P','Personal'))
    gender=models.CharField(max_length=2,choices=CHOICES,default='P',null=True,blank=True)
    Profile_picture=models.ImageField(upload_to='media/pictures',blank=True,null=True)
    first_name=models.CharField(max_length=50,blank=True,null=True)
    last_name=models.CharField(max_length=50,blank=True,null=True)
    email=models.CharField(max_length=50,blank=True,null=True)
    phone_number = models.CharField(max_length=50, blank=True, null=True)
    Account_type=models.CharField(max_length=50,default='Agent',blank=True,null=True)
    
        


class Profile_Admin(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    confi = models.CharField(max_length=100,blank=True,null=True)
    CHOICES=(('F','Female'),('M','Male'),('P','Personal'))
    gender=models.CharField(max_length=2,choices=CHOICES,default='P',null=True,blank=True)
    Profile_picture=models.ImageField(upload_to='media/pictures',blank=True,null=True)
    first_name=models.CharField(max_length=50,blank=True,null=True)
    last_name=models.CharField(max_length=50,blank=True,null=True)
    email=models.CharField(max_length=50,blank=True,null=True)
    phone_number = models.CharField(max_length=50, blank=True, null=True)
    Account_type=models.CharField(max_length=50,default='Admin',blank=True,null=True)



class Profile_Broker(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    confi = models.CharField(max_length=100,blank=True,null=True)
    CHOICES=(('F','Female'),('M','Male'),('P','Personal'))
    gender=models.CharField(max_length=2,choices=CHOICES,default='P',null=True,blank=True)
    Profile_picture=models.ImageField(upload_to='media/pictures',blank=True,null=True)
    first_name=models.CharField(max_length=50,blank=True,null=True)
    last_name=models.CharField(max_length=50,blank=True,null=True)
    email=models.CharField(max_length=50,blank=True,null=True)
    phone_number = models.CharField(max_length=50, blank=True, null=True)
    Account_type=models.CharField(max_length=50,default='Broker',blank=True,null=True)    
    


class Prospect(models.Model):
    CHOICES2=(('Pending','pending'),('Converted','Converted'),('Not Interested','Not Interested'))
    CHOICES=(('F','Female'),('M','Male'),('P','Personal'))
    gender=models.CharField(max_length=2,choices=CHOICES,default='P',null=True,blank=True)
    timestamp=models.DateField(default=timezone.now)
    first_name_agent=models.CharField(max_length=50,blank=True,null=True)
    last_name_agent=models.CharField(max_length=50,blank=True,null=True)
    first_name_prospect=models.CharField(max_length=50,blank=True,null=True)
    last_name_prospect=models.CharField(max_length=50,blank=True,null=True)
    email_prospect=models.CharField(max_length=50,blank=True,null=True)
    phone_number_prospect = models.CharField(max_length=50, blank=True, null=True)
    location= models.CharField(max_length=100, blank=True, null=True)
    status_prospect=models.CharField(max_length=50,choices=CHOICES2,default='pending')
    reviews_agent=models.TextField(max_length=1000, blank=True, null=True)
    trendcatch_notes=models.TextField(max_length=1000, blank=True, null=True)
    customer_notes=models.TextField(max_length=1000, blank=True, null=True)
    email=models.ForeignKey(User,on_delete=models.CASCADE,related_name='prospect_yo')
    customer_email = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='prospects_agents',blank=True, null=True)
    automated_targeting=models.BooleanField(default=False)
    language=models.CharField(max_length=50,blank=True, null=True)

    def save(self, *args, **kwargs):
        # Récupérer l'email du profil de l'utilisateur associé
        if self.customer_email:
            self.email = self.customer_email.email
        super().save(*args, **kwargs)





