from shutil import make_archive
from django.db import models
from django.contrib.auth.models import User
from django.db.models.deletion import CASCADE, SET_NULL, DO_NOTHING

# Create your models here.

class SeerUser(models.Model):
	first_name = models.CharField(max_length=30,default='')
	last_name = models.CharField(max_length=30,default='')
	email = models.EmailField(max_length=100,default='',null=True)
	gender = models.EmailField(max_length=30,default='',null=True)
	email_verification_link = models.CharField(max_length=250,default='',null=True)
	email_verified = models.BooleanField(default=False)
	date_of_birth = models.DateField(null=True)
	phone_number = models.CharField(max_length=20, default='',null=True)
	password = models.CharField(max_length=250,default='',null=True)
	otp = models.IntegerField(null=True)
	forgot_password_link = models.CharField(max_length=250,default='',null=True)
	user_stripe_id = models.CharField(max_length=100,default='',null=True)
	fcm_token = models.CharField(max_length=250,default='',null=True)
	device_type = models.CharField(max_length=50,default='',null=True)
	provider_id = models.CharField(max_length=250,null=True)
	social_id = models.CharField(max_length=250,null=True)
	referal_code =  models.CharField(max_length=100,null=True)
	religion = models.CharField(max_length=100,null=True,default='')
	profession = models.CharField(max_length=100,null=True,default='')
	height = models.CharField(max_length=100,null=True,default='')
	country_origin = models.CharField(max_length=100,null=True,default='')
	state = models.CharField(max_length=100,null=True,default='')
	city = models.CharField(max_length=100,null=True,default='')
	languages = models.TextField(null=True)
	hobbies = models.TextField(null=True)
	bio = models.TextField(null=True)
	education = models.CharField(max_length=100,null=True)
	income = models.CharField(max_length=100,null=True)
	primary_image = models.CharField(max_length=244,null=True)
	images = models.TextField(null=True)
	timezone = models.CharField(max_length=63, default='UTC',null=True)
	is_profile_completed = models.BooleanField(default=False)
	notification_status = models.BooleanField(default=True)
	status =  models.BooleanField(default=True)
	account_deleted = 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 = 'seer_user'



class SeerUserSignDetail(models.Model):
	seer_user = models.ForeignKey(SeerUser, on_delete=models.CASCADE,related_name='seer_signs')
	horoscope = models.ForeignKey("admin_panel.Horoscope", on_delete=DO_NOTHING)
	chinese_zodiac = models.ForeignKey("admin_panel.ChineseZodiac", on_delete=DO_NOTHING)
	five_element = models.ForeignKey("admin_panel.FiveElements", on_delete=DO_NOTHING)
	mbti = models.ForeignKey("admin_panel.MBTI", on_delete=DO_NOTHING, 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 = 'seer_user_signs'


class SeerUserNotifications(models.Model):
	message = models.CharField(max_length=100,null=True)
	notification_type = models.CharField(max_length=100,null=True)
	seer_user = models.ForeignKey(SeerUser,on_delete = models.CASCADE)
	is_read = models.BooleanField(default=False,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 = 'seer_user_notifications'


class FavouriteUnfavouriteFortune(models.Model):
	fortune = models.ForeignKey("fortune_teller.FortuneTeller",on_delete=models.CASCADE,null=True)
	seer_user = models.ForeignKey(SeerUser,on_delete=models.CASCADE,null=True)
	is_favourite = models.BooleanField(default=False,null=True)
	favourite_date = models.DateTimeField(auto_now_add=True,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 = 'favourite_unfavourite_fortune'



class FortuneAppointmentBook(models.Model):
	appointment_id = models.CharField(max_length=100,null=True)
	fortune_teller = models.ForeignKey("fortune_teller.FortuneTeller",on_delete=models.CASCADE,null=True)
	seer_user = models.ForeignKey(SeerUser,on_delete=models.CASCADE,null=True)
	appointment_date = models.CharField(max_length=244,null=True)
	appointment_time = models.CharField(max_length=244,null=True)
	timezone = models.CharField(max_length=63,null=True)
	service = models.ForeignKey("admin_panel.Service",on_delete=models.CASCADE,null=True)
	service_type = models.CharField(max_length=100,null=True)
	appointment_status = models.CharField(default='Pending',max_length=100,null=True)
	cancellation_reason = models.TextField(null=True)
	appointment_completed = models.BooleanField(default=False)
	price = models.IntegerField(max_length=100,null=True)
	twilio_channel_sid = models.CharField(max_length=250,null=True)
	twilio_room_name = models.CharField(max_length=250,null=True)
	is_paid = models.BooleanField(default=False)
	cancelled_by = models.CharField(max_length=244,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 = 'fortune_appointement_book'


class SeerUserWallet(models.Model):
	seer_user = models.ForeignKey(SeerUser,on_delete = models.CASCADE,related_name='wallet')
	amount = models.DecimalField(max_digits=10, decimal_places=2, default=0)
	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 = 'seer_user_wallet'


class SeerUserCards(models.Model):
	seer_user = models.ForeignKey(SeerUser,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 = 'seer_user_cards'



class SeerUserTranscation(models.Model):
	booking = models.ForeignKey(FortuneAppointmentBook,on_delete=models.CASCADE,null=True)
	transcation_id = models.CharField(max_length=100,default='',null=True)
	charge_id = models.CharField(max_length=250,null=True)
	seer_user = models.ForeignKey(SeerUser,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 = 'seer_user_transcation'


class FriendRequest(models.Model):
	from_user = models.ForeignKey(SeerUser, on_delete=models.CASCADE, related_name='from_user')
	to_user = models.ForeignKey(SeerUser, on_delete=models.CASCADE, related_name='to_user')
	accepted = 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 = 'seer_user_friends'


# class Friendship(models.Model):
#     friend_one = models.ForeignKey(SeerUser, on_delete=models.CASCADE, related_name='friend_one')
#     friend_two = models.ForeignKey(SeerUser, on_delete=models.CASCADE, related_name='friend_two')
#     created_at = models.DateTimeField(auto_now_add=True)