package com.prime.sony.ecommerce.model;

import java.util.Date;

import com.prime.sony.ecommerce.util.DateHelper;
import com.prime.sony.ecommerce.util.StringUtil;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Customer extends BaseModel {
	private Long customer_primary_key;
	private String store_customer_id;
	private Long customer_id;
	private Long order_id;
	private Long abandoned_checkout_id;
	private String store_id;
	private String snowflake_schema;
	private String user_role;
	private boolean registered;
	private String email;
	private String first_name;
	private String last_name;
	private String address_1;
	private String address_2;
	private String phone;
	private String city;
	private String state_province;
	private String country;
	private String postal_code;
	private String date_of_birth;
	private boolean marketing_consent;
	private boolean profiling_consent;
	private Long total_orders;
	private Long total_completed_orders;
	private Float customer_total_spent;
	private Float customer_total_spent_all_stores;
	private Date date_registered;
	private Date customer_date_created;
	private Date customer_date_modified;
	private Date consolidated_date_created;
	private Date consolidated_date_modified;
	private Date marketing_consent_updated_date;
	
	private String errorMessage;
	

	public String getHeader() {
		return "Name,Abandoned_Checkout_ID__c,Address_1__c,Address_2__c,City__c,Consolidated_Date_Created__c,Consolidated_Date_Modified__c,Country__c,Customer_Date_Created__c,Customer_Date_Modified__c,Customer_ID__c,Customer_Total_Spent__c,Customer_Total_Spent_All_Stores__c,Date_Of_Birth__c,Date_Registered__c,Email__c,First_Name__c,Last_Name__c,Marketing_Consent__c,Order_ID__c,Phone__c,Postal_Code__c,Profiling_Consent__c,Registered__c,SnowFlake_Schema__c,State_Province__c,Store_Customer_ID__c,Store_ID__c,Total_Completed_Orders__c,Total_Orders__c,Marketing_Consent_Updated_Date__c,User_Role__c";
	}

	public String getCSVvalue() {
		StringBuilder sb = new StringBuilder();
		//Name
		sb.append(this.getCustomer_primary_key() + ",");
		
		//Abandoned_Checkout_ID__c
		sb.append(this.getAbandoned_checkout_id() + ",");
		
		// Address_1__c
		if(null != this.getAddress_1()) {
			sb.append(StringUtil.strValidate(this.getAddress_1())+  ",");
		}else {
			sb.append(",");
		}
		
		//Address_2__c
		if(null != this.getAddress_2()) {
		sb.append(StringUtil.strValidate(this.getAddress_2())+  ",");
		}else {
				sb.append(",");
			}
		//City__c
		if(null != this.getCity()) {
		sb.append(StringUtil.strValidate(this.getCity()) +  ",");
		}else {
			sb.append(",");
		}
		//Consolidated_Date_Created__c
		if(null != this.getConsolidated_date_created()) {
			sb.append(DateHelper.getFormattedDateValue(this.getConsolidated_date_created())+",");
		}else {
			sb.append(",");
		}
		
		// Consolidated_Date_Modified__c
		if(null != this.getConsolidated_date_modified()) {
			sb.append(DateHelper.getFormattedDateValue(this.getConsolidated_date_modified())+",");
		}else {
			sb.append(",");
		}
		
		//Country__c
		sb.append(StringUtil.strValidate(this.getCountry()) +  ",");
		
		//Customer_Date_Created__c
		if(null != this.getCustomer_date_created()) {
			sb.append(DateHelper.getFormattedDateValue(this.getCustomer_date_created())+",");
		}else {
			sb.append(",");
		}	
		
		//Customer_Date_Modified__c
		if(null != this.getCustomer_date_modified()) {
			sb.append(DateHelper.getFormattedDateValue(this.getCustomer_date_modified())+",");
		}else {
			sb.append(",");
		}	
		
		//Customer_ID__c
		sb.append(this.getCustomer_id() + ",");
		
		//Customer_Total_Spent__c
		sb.append(this.getCustomer_total_spent() + ",");
		
		//Customer_Total_Spent_All_Stores__c
		sb.append(this.getCustomer_total_spent_all_stores() + ",");
		
		//Date_Of_Birth__c
		sb.append(this.getDate_of_birth() + ",");
		
		//Date_Registered__c
		if(null != this.getDate_registered()) {
			sb.append(DateHelper.getFormattedDateValue(this.getDate_registered())+",");
		}else {
			sb.append(",");
		}
		
		//Email__c
		if(null != this.getEmail()) {
			sb.append(StringUtil.strValidate(this.getEmail()) + ",");
		}else {
			sb.append(",");
		}
		
		
		//First_Name__c
		if(null != this.getFirst_name()) {
		sb.append(StringUtil.strValidate(this.getFirst_name())+",");
		}else {
			sb.append(",");
		}
		//Last_Name__c
		if(null != this.getLast_name()) {
		sb.append(StringUtil.strValidate(this.getLast_name())+  ",");
		}else {
			sb.append(",");
		}
		
		//Marketing_Consent__c
		sb.append(this.isMarketing_consent() + ",");
		
		//Order_ID__c
		sb.append(this.getOrder_id() + ",");
		
		//Phone__c
		sb.append(StringUtil.strValidate(this.getPhone()) + ",");
		
		//Postal_Code__c
		sb.append(StringUtil.strValidate(this.getPostal_code()) + ",");
		
		//Profiling_Consent__c
		sb.append(this.isProfiling_consent() + ",");
		
		//Registered__c
		sb.append(this.isRegistered() + ",");
		
		//SnowFlake_Schema__c
		sb.append(StringUtil.strValidate(this.getSnowflake_schema()) +  ",");
		
		//State_Province__c
		sb.append(StringUtil.strValidate(this.getState_province())+ ",");
		
		//Store_Customer_ID__c
		sb.append(StringUtil.strValidate(this.getStore_customer_id()) + ",");
		
		//Store_ID__c
		sb.append(StringUtil.strValidate(this.getStore_id()) + ",");
		
		//Total_Completed_Orders__c
		sb.append(this.getTotal_completed_orders() + ",");
		
		//Total_Orders__c
		sb.append(this.getTotal_orders() + ",");
		
		//Marketing_Consent_Updated_Date__c
		if(null != this.getMarketing_consent_updated_date()) {
			sb.append(DateHelper.getFormattedDateValue(this.getMarketing_consent_updated_date())+",");
		}else {
			sb.append(",");
		}
		
		//User_Role__c
		sb.append(StringUtil.strValidate(this.getUser_role()));

		return sb.toString();
	}

}
