from django.db import models
from auth_apis.models import *
from store_apis.models import *
from django.db.models.deletion import CASCADE,SET_NULL,DO_NOTHING
from django.db.models.fields.related import ForeignKey
from django.utils.timezone import now
from django.db.models.fields import DateTimeField

# Create your models here.
class Favourites(models.Model):
	product =  models.ForeignKey(Products,on_delete = models.CASCADE)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	is_favourite = models.BooleanField(default=False,null=True)
	favourite_date = models.DateTimeField(auto_now_add=True,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'favourites'


class Cart(models.Model):
	customer = models.ForeignKey(User,on_delete=DO_NOTHING)
	product = models.ForeignKey(Products,on_delete=DO_NOTHING)
	productCount = models.CharField(max_length=50,default='')
	totalAmount = models.CharField(max_length=50,default='0')
	totalItems =  models.CharField(max_length=50,default='0')
	orderId = models.CharField(max_length=100,null=True,blank=True,default='')
	isPaid = models.BooleanField(default=False)
	isdisabled=models.BooleanField(default=False)
	created_at=models.DateTimeField(auto_now_add=True)

	class Meta:
		db_table = 'cart'


class CustomerCard(models.Model):
	customer = models.ForeignKey(Buyer,on_delete=DO_NOTHING)
	card_id = models.CharField(max_length=100,default="")
	exp_month = models.CharField(max_length=10,default="")
	exp_year = models.CharField(max_length=10,default="")
	theCustomerStripe=models.CharField(max_length = 50, default = '')
	last_digit = models.CharField(max_length=4,default="")
	isdefault = models.BooleanField(default = False)
	created_at=models.DateTimeField(auto_now_add=True)
	
	class Meta:
		db_table = 'customer_card'


class orderPack(models.Model):
	customer = models.ForeignKey(User,on_delete=DO_NOTHING)
	orderId = models.CharField(max_length=50,default='')
	orderDate = models.CharField(max_length=50,default='')
	shippingCharge = models.CharField(max_length=50,default='0')
	vatPercentage = models.CharField(max_length=50,default='0')
	subTotalAmount = models.CharField(max_length=50,default='')
	totalAmount = models.CharField(max_length=50,default='')
	deliveryAddress = models.ForeignKey(Addresses,on_delete=DO_NOTHING,null=True)
	productDetail = models.ForeignKey(Cart,on_delete=DO_NOTHING,null=True)
	couponId = models.ForeignKey(StoreCoupons,on_delete=models.CASCADE,null=True)
	isCouponSelected = models.BooleanField(default=False)
	couponDiscount = models.CharField(max_length=50,default='')
	isPaid = models.BooleanField(default=False)
	isdisabled = models.BooleanField(default=False)
	is_rated = models.BooleanField(default=False)
	qr_code_image = models.CharField(max_length=200,null=True)
	delivery_status = models.IntegerField(default=0,null=True)
	created_at = models.DateTimeField(auto_now_add=True)

	class Meta:
		db_table = 'order_pack'



class CustomerTransaction(models.Model):
	customer = models.ForeignKey(User,on_delete=models.CASCADE)
	orderPack = models.ForeignKey(orderPack,on_delete=models.CASCADE)
	amount = models.CharField(max_length=50,default='')
	mayosarID = models.CharField(max_length = 200, null = True, blank = True,default = '')
	txnID = models.CharField(max_length = 200, null = True, blank = True,default = '')
	recieptUrl = models.CharField(max_length = 200, null = True, blank = True,default = '')
	created_at = models.DateTimeField(auto_now_add = True)
	

	class Meta:
		db_table = 'customer_transcation'


class CustomerTransactionService(models.Model):
	customer = models.ForeignKey(User,on_delete=models.CASCADE)
	servicePack = models.ForeignKey(ServiceInvoice,on_delete=models.CASCADE)
	amount = models.CharField(max_length=50,default='')
	mayosarID = models.CharField(max_length = 200, null = True, blank = True,default = '')
	txnID = models.CharField(max_length = 200, null = True, blank = True,default = '')
	recieptUrl = models.CharField(max_length = 200, null = True, blank = True,default = '')
	created_at = models.DateTimeField(auto_now_add = True)
	

	class Meta:
		db_table = 'customer_transcation_service'



class MarketingRequest(models.Model):
	product_name = models.CharField(max_length=100,null=True)
	prduct_description = models.TextField(null=True)
	product_amount = models.CharField(max_length=100,null=True)
	product_price = models.CharField(max_length=100,null=True)
	owner_name = models.CharField(max_length=100,null=True)
	mobile_number = models.CharField(max_length=15,null=True)
	address = models.CharField(max_length=100,null=True)
	email = models.CharField(max_length=100,null=True)
	image = models.CharField(max_length=100,null=True)
	status = models.IntegerField(default=0,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)
	
	class Meta:
		db_table = 'marketing_request'


class CustomerNotifications(models.Model):
	message = models.CharField(max_length=100,null=True)
	message_arabic = models.CharField(max_length=100,null=True)
	notification_type = models.CharField(max_length=100,null=True)
	customer = models.ForeignKey(Buyer,on_delete=DO_NOTHING)
	is_read = models.BooleanField(default=False,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'customer_notifications'
	

class Message(models.Model):
	sender_user = models.ForeignKey(User,on_delete=CASCADE, related_name="message_sender_user",null=True,blank=True)
	# sender_store = models.ForeignKey(Stores,on_delete=CASCADE, related_name="message_sender_store",null=True,blank=True)
	receiver_user = models.ForeignKey(User,on_delete=CASCADE, related_name="message_receiver_user",null=True,blank=True)
	# receiver_store = models.ForeignKey(Stores,on_delete=CASCADE, related_name="message_receiver_store",null=True,blank=True)
	message = models.TextField(null=True)
	type = models.CharField(choices=[("image","image"), ("text","text")], max_length=20)
	image = models.CharField(max_length=250,null=True,default='')
	created_at = models.DateTimeField(default=now)

	class Meta:
		db_table = 'messages'

class chat_room(models.Model):
	store = ForeignKey(User, on_delete=CASCADE, related_name="chatroom_owner", null=True)
	user = ForeignKey(User, on_delete=CASCADE, related_name="chatroom_user", null=True) 
	last_message_time = DateTimeField(default=now)
	last_message_text = models.CharField(max_length=255, null=True)
	is_read = models.BooleanField(default=0) 

	class Meta:
		db_table = 'chat_room'


class RatingReviews(models.Model):
	rating = models.IntegerField(null=True)
	review = models.TextField(null=True)
	product = models.ForeignKey(Products,on_delete=CASCADE)
	buyer = models.ForeignKey(Buyer,on_delete=CASCADE)
	store = models.ForeignKey(Stores,on_delete=CASCADE)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'rating_review'