from django.db import models
from django.contrib.auth.models import User
from customer_api.models import Customer
from subscription_api.models import *
from django.db.models.deletion import CASCADE, SET_NULL, DO_NOTHING


# Create your models here.
class AgencyPropertyRequests(models.Model):
    customer = models.ForeignKey(Customer,on_delete=DO_NOTHING,null=True,related_name='customer_requests')
    agency = models.ForeignKey("customer_api.customer",on_delete=DO_NOTHING,null=True,related_name='agency_request')
    location_agency = models.ForeignKey("customer_api.customer",on_delete=DO_NOTHING,null=True,related_name='location_agency')
    mobile_number =  models.CharField(max_length=30,default='')
    name =  models.CharField(max_length=50,default='')
    email =  models.CharField(max_length=50,default='')
    property_type = models.CharField(max_length=250,default='')
    price = models.CharField(max_length=250,default='')
    is_viewed = models.BooleanField(default=False)
    is_published = models.BooleanField(default=False)
    is_contacted = models.BooleanField(default=False)
    property_status = models.CharField(max_length=244,null=True,default="Pending")
    start_date = models.DateTimeField(auto_now_add=True)
    end_date = models.DateTimeField(null=True)

    class Meta:
        db_table = 'agency_property_request'


class AgencyApprovedProperty(models.Model):
    agency = models.ForeignKey(Customer,on_delete=DO_NOTHING,null=True,related_name='agency')
    customer = models.ForeignKey(Customer,on_delete=DO_NOTHING,null=True,related_name='customer')
    property_request = models.ForeignKey(AgencyPropertyRequests,on_delete=DO_NOTHING,null=True)
    is_requested = models.BooleanField(default=True)
    start_date = models.DateTimeField(auto_now_add=True)
    end_date = models.DateTimeField(null=True)

    class Meta:
        db_table = 'agency_approved_request'



class AgencyNotifications(models.Model):
    agency = models.ForeignKey(Customer,on_delete=DO_NOTHING,null=True)
    message = models.TextField(null=True)
    notification_type = models.CharField(max_length=100,null=True)
    is_read = models.BooleanField(default=False,null=True)
    start_date = models.DateTimeField(auto_now_add=True,null=False)
    end_date = models.DateTimeField(null=True)

    class Meta:
        db_table = "agency_notifications"

    
class AgencySubscriptions(models.Model):
    customer = models.ForeignKey(Customer,on_delete=DO_NOTHING,null=True)
    plan = models.ForeignKey(AgencySubscriptionPlan,on_delete=DO_NOTHING,null=True)
    sub_start_date = models.DateField(auto_now_add=True,null=False)
    sub_expiry_date = models.DateField(null=True)
    is_active = models.BooleanField(default=False)
    start_date = models.DateTimeField(auto_now_add=True,null=False)
    end_date = models.DateTimeField(null=True)

    class Meta:
        db_table = "agency_subscriptions"


class AgencyRatingAndReview(models.Model):
    user_send_customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='user_send_customer')
    agency_receive_customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='agency_receive_customer')
    rating = models.IntegerField(default=0)
    review = models.TextField(null=True)
    start_date = models.DateTimeField(auto_now_add=True,null=False)
    end_date = models.DateTimeField(null=True)

    class Meta:
	    db_table = "agency_rating_and_review" 
     
     
class ConversationAgency(models.Model):
    customer = models.ForeignKey(
        Customer,
        on_delete=models.CASCADE,
        related_name='conversation_agency_customer'  # Unique related_name
    )
    agency = models.ForeignKey(
        Customer,
        on_delete=models.CASCADE,
        related_name='conversation_agency_agency'  # Unique related_name
    )
    twilio_channel_sid = models.CharField(max_length=255, blank=True, null=True)
    customer_twilio_id = models.CharField(max_length=200, null=True)
    agency_twilio_id = models.CharField(max_length=200, null=True)
    last_message = models.DateTimeField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    end_date = models.DateTimeField(null=True)

    class Meta:
        db_table = 'conversation_agency'
