from django.db import models
from django.contrib.auth.models import User
from admin_panel.models import *
from django.db.models.deletion import CASCADE, SET_NULL, DO_NOTHING
# Create your models here.

class FortuneTeller(models.Model):
	first_name = models.CharField(max_length=30,default='')
	last_name = models.CharField(max_length=30,default='')
	image = models.CharField(max_length=250,null= True,default='')
	email = models.EmailField(max_length=100,default='',null=True)
	gender = models.EmailField(max_length=30,default='',null=True)
	total_experience = models.CharField(max_length=30,default='')
	services = models.TextField(null=True)
	skills = models.TextField(null=True)
	bio = models.TextField(null=True)
	languages = models.TextField(null=True)
	stripe_connect_account_id = models.CharField(max_length=100,null=True)
	is_stripe_account_connect = models.BooleanField(default=False)
	is_stripe_verified = models.BooleanField(default=False)
	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)
	provider_id = models.CharField(max_length=250,null=True)
	referal_code =  models.CharField(max_length=100,null=True)
	social_id = models.CharField(max_length=250,null=True)
	fcm_token = models.CharField(max_length=250,default='',null=True)
	device_type = models.CharField(max_length=50,default='',null=True)
	bank_details = 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)
	is_online = models.BooleanField(default=False)
	rating = models.FloatField(default=0.0)
	account_deleted = models.BooleanField(default=False)
	status =  models.BooleanField(default=True)
	last_activity = models.DateTimeField(auto_now_add=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_teller'


# class FortuneTellerService(models.Model):
#     fortune_teller = models.ForeignKey(FortuneTeller, on_delete=models.CASCADE)
#     service = models.ForeignKey(Service, on_delete=models.CASCADE)
#     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_teller_service'


class FortuneTellerSignDetail(models.Model):
	fortune_teller = models.ForeignKey(FortuneTeller, on_delete=models.CASCADE,related_name='fortune_signs')
	horoscope = models.ForeignKey(Horoscope, on_delete=DO_NOTHING)
	chinese_zodiac = models.ForeignKey(ChineseZodiac, on_delete=DO_NOTHING)
	five_element = models.ForeignKey(FiveElements, on_delete=DO_NOTHING)
	mbti = models.ForeignKey(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 = 'fortune_teller_signs'


class FortuneTellerNotifications(models.Model):
	fortune_teller = models.ForeignKey(FortuneTeller,on_delete = models.CASCADE)
	message = models.CharField(max_length=100,null=True)
	notification_type = models.CharField(max_length=100,null=True)
	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 = 'fortune_teller_notifications'


class  FortuneTellerTiming(models.Model):
	fortune_teller = models.ForeignKey(FortuneTeller,on_delete = models.CASCADE)
	slots = models.TextField(blank = 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_teller_timing"


class FortunetellerRatingReviews(models.Model):
	seer_user =  models.ForeignKey(SeerUser,on_delete=models.CASCADE,null=True)
	fortune_teller =  models.ForeignKey(FortuneTeller,on_delete = models.CASCADE)
	rating = models.IntegerField(null=True)
	review = models.TextField(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 = "fortuneteller_rating_review"


class FotuneTellerWallet(models.Model):
   fortune_teller = models.ForeignKey(FortuneTeller,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 = 'fortune_teller_wallet'
       

class FortuneTellerTranscations(models.Model):
    transcation_id = models.CharField(max_length=100,default='',null=True)
    seer_user = models.ForeignKey(SeerUser,on_delete=models.CASCADE,null=True)
    fortune_teller = models.ForeignKey(FortuneTeller,on_delete=models.CASCADE,null=True)
    amount =  models.DecimalField(max_digits=10, decimal_places=2, default=0)
    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 = 'fortune_teller_transcations'
	

class FortunePayoutTranscation(models.Model):
	transcation_id = models.CharField(max_length=100,default='',null=True)
	fortune_teller = models.ForeignKey(FortuneTeller,on_delete=models.CASCADE,null=True)
	amount =  models.DecimalField(max_digits=10, decimal_places=2, default=0)
	transcation_status = models.CharField(max_length=100,default='pending',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_payout_transcation'
	


