from django.db import models
from admin_panel.models import *
from worker_panel.models import *

# Create your models here.



class UserCards(models.Model):
	user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	card_id = models.CharField(max_length=100,null=True)
	exp_month = models.CharField(max_length=100,null=True)
	exp_year = models.CharField(max_length=100,null=True)
	the_user_stripe = models.CharField(max_length=100,null=True)
	last_digits = models.CharField(max_length=100,null=True)
	is_default = models.BooleanField(default=False)
	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 = 'user_cards'


class UserBookings(models.Model):
	booking_id = models.CharField(max_length=100,null=True)
	user = models.ForeignKey(User,on_delete=models.CASCADE,null=True,related_name='user')
	worker = models.ForeignKey(User,on_delete=models.CASCADE,null=True,related_name='worker')
	sub_services = models.ForeignKey(SubCategory,on_delete = models.CASCADE,null=True) 
	booking_date = models.CharField(max_length=244,null=True)
	booking_time = models.CharField(max_length=244,null=True)
	booking_status = models.CharField(default='Pending',max_length=100,null=True)
	cancelled_by = models.CharField(max_length=244,null=True)
	cancellation_reason = models.TextField(null=True)
	booking_completed = models.BooleanField(default=False)
	complete_image = models.CharField(max_length=244,null=True)
	price = models.IntegerField(max_length=100,null=True)
	platform_fees = models.IntegerField(default=0,null=True)
	admin_commission_fees = models.IntegerField(default=0,null=True)
	total_amount = models.IntegerField(default=0,null=True)
	is_paid = models.BooleanField(default=False)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = 'user_bookings'


class UserTranscation(models.Model):
	booking = models.ForeignKey(UserBookings,on_delete=models.CASCADE,null=True)
	transcation_id = models.CharField(max_length=100,default='',null=True)
	user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	amount =  models.DecimalField(max_digits=10, decimal_places=2, default=0)
	txn_id = models.CharField(max_length=250,default='',null=True)
	recipet_url = models.CharField(max_length=250,default='',null=True) 
	payment_mode = models.CharField(max_length=100,default='',null=True)
	transcation_type = models.CharField(max_length=100,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 = 'user_transcation'




class CustomerNotifications(models.Model):
	customer = models.ForeignKey(User,on_delete = models.CASCADE) 
	message = models.TextField(null=True)
	is_read = models.BooleanField(default=False,null=True)
	type = models.CharField(max_length=100,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = "customer_notifications"



class UserWallet(models.Model):
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	amount = models.IntegerField(null=True)
	start_date = models.DateTimeField(auto_now_add=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'user_wallet'


class ServiceProviderRatingReviews(models.Model):
	rating = models.IntegerField(null=True)
	review = models.TextField(null=True)
	booking = models.ForeignKey(UserBookings,on_delete = models.CASCADE,null=True) 
	service_provider = models.ForeignKey(User,on_delete = models.CASCADE,null=True,related_name='service_provider') 
	user = models.ForeignKey(User,on_delete = models.CASCADE,null=True,related_name='customer')
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'serviceprovider_rating_reviews'

	
class Conversation(models.Model):
	user = models.ForeignKey(User, on_delete=models.CASCADE,related_name='chat_user')
	service_provider = models.ForeignKey(User, on_delete=models.CASCADE,related_name='chat_service_provider')
	booking = models.ForeignKey(UserBookings,on_delete=models.CASCADE,null=True)
	twilio_channel_sid = models.CharField(max_length=255, blank=True, null=True)
	user_twilio_id = models.CharField(max_length=200, null=True)
	service_provider_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'