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=25000,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)
	property_name = models.CharField(max_length=250,default='')
	property_id=models.CharField(max_length=250,default='')
	property_image = models.TextField( null=True, blank=True)
	property_video = models.TextField(null=True, blank=True)
	property_doc = models.TextField(null=True, blank=True)
	do_it_by_type=models.CharField(max_length=250,default='')
	finalized_status=models.CharField(max_length=200,null=True)

	buyer_signature = models.TextField(default='')
	buyer_status = models.CharField(max_length=150,default='')
	status = models.CharField(max_length=50,default='')
	rejection_reason=models.CharField(max_length=1000,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'
