from django.db import models

# Create your models here.




class EndUser(models.Model):
	name = models.CharField(max_length=244,default='')
	email = models.EmailField(max_length=100,default='',null=True)
	email_verification_otp = models.IntegerField(null=True)
	email_verified = models.BooleanField(default=False)
	phone_number = models.CharField(max_length=20, default='',null=True)
	phone_number_otp = models.CharField(max_length=20, default='',null=True)
	phone_number_verified = models.BooleanField(default=False)
	password = models.CharField(max_length=250,default='',null=True)
	forgot_password_otp = models.IntegerField(null=True)
	image = models.TextField(null=True)
	is_profile_completed = models.BooleanField(default=False)
	is_producer = models.BooleanField(default=False)
	status =  models.BooleanField(default=True)
	account_deleted = models.BooleanField(default=False)
	is_client = models.BooleanField(default=False)
	is_retoucher = models.BooleanField(default=False)
	is_admin = models.BooleanField(default=False)
	is_linked_logined = models.BooleanField(default=False)
	is_password_reset = models.BooleanField(default=False)
	deleted_reason = models.TextField(null=True)
	created_at = models.DateTimeField(auto_now_add=True)
	last_login = models.DateTimeField(null=True)
	updated_at = models.DateTimeField(auto_now=True)
	end_date = models.DateTimeField(null=True) 

	class Meta:
		db_table = 'end_user'


class ProductSample(models.Model):
	job_number = models.CharField(max_length = 100,null = True)
	product_line = models.CharField(max_length=100,null=True)
	subfamily = models.CharField(max_length=100,null=True)
	tm_article_number = models.CharField(max_length=50,null=True)
	style_name = models.CharField(max_length=200,null=True)
	style_number = models.CharField(max_length=200,null=True)
	sku_new_co = models.CharField(max_length=200,null=True)
	style_new_co = models.CharField(max_length=200,null=True)
	og_style_name = models.CharField(max_length=200,null=True)
	color_name = models.CharField(max_length=100,null=True)
	season = models.CharField(max_length=20,null=True)
	par_date = models.TextField(null=True)
	number_of_samples_received = models.CharField(max_length=100,null=True, blank=True)
	marketing_sample_estimated_date = models.TextField(null=True)
	rep_sms_photoshop_comments = models.TextField(null=True, blank=True)
	location = models.CharField(max_length=200, null=True, blank=True)
	sample_pass_off_date = models.TextField(null=True)
	lionshead_received_date = models.TextField(null=True)
	flatlay_shoot_date = models.TextField(null=True)
	flatlay_shoot = models.CharField(max_length=5, null=True, blank=True)  # Y or N
	on_model_shoot_date = models.TextField(null=True)
	on_models_shot = models.CharField(max_length=5, null=True, blank=True)  # Y or N
	sample_return_date = models.TextField(null=True)
	is_product_shot = models.BooleanField(default= False,null =True)
	is_client_review = models.BooleanField(default= False,null =True)
	is_archive = models.BooleanField(default= False,null =True)
	is_dropped = models.BooleanField(default= False,null =True)
	ready_for_client_review = models.BooleanField(default= False,null =True)
	source = models.TextField(null=True)
	status = models.CharField(default="unschedule",max_length = 100,null= True)
	sample_status = models.CharField(default="not_recieved",max_length = 100,null= True)
	order_index = models.IntegerField(default=0,null= True)
	notification_count = models.IntegerField(default=0,null= True)
	dropbox_url = models.TextField(null =True)
	nas_folder_name = models.CharField(max_length=200,null=True)
	shoot_date_time = models.TextField(null=True)
	last_updated_datetime = models.CharField(max_length=100, null=True, blank=True)
	updated_by = models.CharField(max_length=100, null=True, blank=True)
	start_date = models.DateTimeField(auto_now_add=True, null=False)


	class Meta:
		db_table = 'product_sample'
		
class Shoots(models.Model):
	product = models.ForeignKey(ProductSample, on_delete=models.CASCADE, null=True)
	user = models.ForeignKey(EndUser, on_delete=models.CASCADE, null=True)
	is_watcher = models.BooleanField(default=False)
	start_date = models.DateTimeField(auto_now_add=True, null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = 'shoots'



class UserActivity(models.Model):
	message = models.TextField(null=True)
	is_read = models.BooleanField(default=False,null=True)
	type = models.CharField(max_length=100,null=True)
	job_number =  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 = "user_activity"
  
  
class Notifications(models.Model):
	user = models.ForeignKey(EndUser, on_delete=models.CASCADE, null=True)
	message = models.TextField(null=True)
	is_read = models.BooleanField(default=False,null=True)
	type = models.CharField(max_length=100,null=True)
	job_number =  models.CharField(max_length=100,null=True)
	unread_count = models.IntegerField(default=0,null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = "notifications"
	
	
class InReviewProductData(models.Model):
	client =  models.ForeignKey(EndUser, on_delete=models.CASCADE, null=True)
	product = models.ForeignKey(ProductSample, on_delete=models.CASCADE, null=True)
	assign_date = models.DateTimeField(auto_now_add=True,null=False)
	is_viewed = models.BooleanField(default=False)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = "inreview_product_data"
	

class ReviewDataComments(models.Model):
	user = models.ForeignKey(EndUser, on_delete=models.CASCADE)
	product = models.ForeignKey(ProductSample, on_delete=models.CASCADE, null=True)
	comment_text = models.TextField(null=True)
	comment_image = models.TextField(null=True)
	is_comment_image = models.BooleanField(default=False)
	mark_image_data = models.TextField(null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)
	
	
	class Meta:
		db_table = "review_data_comments"
		
  
class CredSettings(models.Model):
	dropbox_app_key = models.CharField(max_length=244,null=True)
	dropbox_app_secret = models.CharField(max_length=244,null=True)
	dropbox_refresh_token = models.CharField(max_length=244,null=True)
	dropbox_refresh_token = models.CharField(max_length=244,null=True)
	nas_hostname = models.CharField(max_length=244,null=True)
	nas_port_no = models.CharField(max_length=244,null=True)
	nas_username = models.CharField(max_length=244,null=True)
	nas_password = models.CharField(max_length=244,null=True)
	nas_remote_base_path = models.CharField(max_length=244,null=True)

	
	class Meta:
		db_table = "cred_Settings"
	
	
class CollectionsProduct(models.Model):
	collection_name = 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 = "collections_product"
  
  
class AddCollectionProduct(models.Model):
	collection = models.ForeignKey(CollectionsProduct,on_delete=models.CASCADE, null=True)
	product = models.ForeignKey(ProductSample,on_delete=models.CASCADE, null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)

	class Meta:
		db_table = "add_collection_product"
  
  
class Watchers(models.Model):
	email  = models.CharField(max_length=100,null=True)
	product = models.ForeignKey(ProductSample, on_delete=models.CASCADE, null=True)
	start_date = models.DateTimeField(auto_now_add=True,null=False)
	end_date = models.DateTimeField(null=True)


	class Meta:
		db_table = "watchers"