from contextlib import nullcontext
from django.db import models
from admin_panel.models import *


# Create your models here.

class CustomerNotifications(models.Model):
	message = models.CharField(max_length=100,null=True)
	notification_type = models.CharField(max_length=100,null=True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	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 BlogsBookmarks(models.Model):
	blog =  models.ForeignKey(Blogs,on_delete = models.CASCADE,null=True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	is_bookmarked = models.BooleanField(default=False,null=True)
	saved_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 = 'blog_bookmarks'


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 Community(models.Model):
	user =  models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	content = models.TextField(null=True)
	status = models.BooleanField(default=True)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'community'



class Comments(models.Model):
    Community =  models.ForeignKey(Community,on_delete = models.CASCADE)
    user = models.ForeignKey(User,on_delete = models.CASCADE)
    content = models.TextField(null=True)
    created_at = 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 = 'comments'


class Likes(models.Model):
    Community =  models.ForeignKey(Community,on_delete = models.CASCADE)
    user = models.ForeignKey(User,on_delete = models.CASCADE)
    is_liked = models.BooleanField(default=False,null=True)
    liked_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 = 'likes'


class Dislikes(models.Model):
    Community =  models.ForeignKey(Community,on_delete = models.CASCADE)
    user = models.ForeignKey(User,on_delete = models.CASCADE)
    is_disliked = models.BooleanField(default=False,null=True)
    disliked_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 = 'dislikes'



class CustomerBilling(models.Model):
	user =  models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	full_name = models.CharField(max_length=244,null = True)
	email =  models.CharField(max_length=244,null=True)
	address_one =  models.CharField(max_length=244,null=True)
	address_two = models.CharField(max_length=244,null=True)
	pin_code = models.CharField(max_length=20,null=True)
	state = models.CharField(max_length=20,null=True)
	country = models.CharField(max_length=20,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)


	class Meta:
		db_table = 'customer_billing'




class CustomerSubscription(models.Model):
	subscription = models.ForeignKey("admin_panel.SubscriptionPlans",on_delete=models.CASCADE,null=True,blank=True)
	user =  models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	buyDate = models.DateField(max_length=25,null=True,blank=True)
	expiryDate = models.DateField(max_length=25,null=True,blank=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 = 'customer_subscriptions'



class Events(models.Model):
	event_image = models.CharField(max_length=244,null=True)
	event_name = models.CharField(max_length=244,null=True)
	user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	description = models.TextField(null = True)
	date = models.DateField(null=True)
	start_time =  models.CharField(max_length=100,null=True)
	end_time = models.CharField(max_length=100,null=True)
	location = models.CharField(max_length=244,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)


	class Meta:
		db_table = 'events'




class Webinars(models.Model):
	image = models.CharField(max_length=244,null=True)
	title = models.CharField(max_length=244,null=True)
	description = models.TextField(null = True)
	hosted_by = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
	date = models.DateField(null=True)
	start_time =  models.CharField(max_length=100,null=True)
	end_time = models.CharField(max_length=100,null=True)
	location = models.CharField(max_length=244,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)


	class Meta:
		db_table = 'webinars'


class SavedEvents(models.Model):
	event =  models.ForeignKey(Events,on_delete = models.CASCADE,null=True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	is_saved = models.BooleanField(default=False,null=True)
	saved_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 = 'saved_events'


class SavedNews(models.Model):
	title =  models.TextField(null = True)
	description = models.TextField(null = True)
	url = models.CharField(max_length=200,null = True)
	urltoimage = models.CharField(max_length=200,null = True)
	published_at = models.CharField(max_length=200,null = True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'saved_news'



class SavedMarkets(models.Model):
	symbol = models.CharField(max_length = 244, null=True)
	name = models.CharField(max_length = 244, null=True)
	market_type = models.CharField(max_length=244, null=True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)


	class Meta:
		db_table = 'saved_markets'



class RatingAndFeedback(models.Model):
	ratings = models.IntegerField(null = True)
	feedback = models.TextField(null = True)
	section_name = models.CharField(max_length=244,null =True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	start_date = models.DateTimeField(auto_now_add=True,null=True)
	end_date =  models.DateTimeField(null=True)

	class Meta:
		db_table = 'ratings_and_feedback'


	
class ResearchBookmarks(models.Model):
	research =  models.ForeignKey(InvestmentResearch,on_delete = models.CASCADE,null=True)
	user = models.ForeignKey(User,on_delete = models.CASCADE)
	is_bookmarked = models.BooleanField(default=False,null=True)
	saved_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 = 'research_bookmarks'
