package structs

import (
	"time"
)

// swagger:model CrmCustomer
type CrmCustomer struct {
	Id                        string
	Pipeline                  uint8
	DealPhase                 uint8
	FirstName                 string
	LastName                  string
	CreatedAt                 time.Time
	Telephone                 string
	Email                     string
	LastContact               time.Time
	CreatedBy                 string
	Notes                     string
	Company                   string `gorm:"unique"`
	ZipCode                   string
	Address                   string
	City                      string
	Country                   string
	FederalState              string
	Website                   string
	LeadOrigin                string
	NumberOfEmployees         string
	NumberOfJobsSearchedFor   string
	JobTitle                  string
	NumberOfEmployeesRequired string
	HowLongHadHeBeenSearching string
	Turnover                  string
	DateOfCompletion          string
	OrderVolume               string
	NumberOfInstallments      string
	AmountsOfTheInstallments  string
	BookedPackages            string
	AssignedEmployee          string
	UpdatedAt                 time.Time
}

// swagger:model CrmTableCustomerResponse
type CrmTableCustomerResponse struct {
	Customers  []CrmTableCustomer
	TotalPages int
}

type CrmTableCustomer struct {
	Id               string
	Pipeline         uint8
	DealPhase        uint8
	FirstName        string
	LastName         string
	Company          string
	CreatedAt        time.Time
	Telephone        string
	Email            string
	LastContact      time.Time
	AssignedEmployee string
	CreatedBy        string
	UpdatedAt        time.Time
}

func (CrmTableCustomer) TableName() string {
	return "crm_customers"
}

type CrmTypeCustomerRequest struct {
	Type      string // pipeline name
	DealPhase uint8
}

type CrmGetCustomerRequest struct {
	Id string
}

// swagger:model CrmCallProtocol
type CrmCallProtocol struct {
	Id                      string
	CustomerId              string
	CallType                uint8
	Telephone               string
	Notes                   string
	ResultReached           uint8
	ResultWhoPickedUp       uint8
	ResultExpressedInterest uint8
	ResultScheduled         uint8
	CalledAt                time.Time
	CreatedBy               string
	CreatedAt               time.Time
}

// swagger:model CrmCallProtocolRequest
type CrmCallProtocolRequest struct {
	CustomerId              string
	CallType                uint8
	Telephone               string
	Notes                   string
	ResultReached           uint8
	ResultWhoPickedUp       uint8
	ResultExpressedInterest uint8
	ResultScheduled         uint8
	CalledAt                time.Time
}

// swagger:model CrmGetCustomerResponse
type CrmGetCustomerResponse struct {
	Customer      CrmCustomer
	CallProtocols []CrmCallProtocol
	Links         []CrmLink
	LinkHistory   []CrmLinkHistory
}

// swagger:model CrmLink
type CrmLink struct {
	Id         string
	CustomerId string
	Name       string
	Url        string
	CreatedBy  string
	CreatedAt  time.Time
}

// swagger:model CrmLinkHistory
type CrmLinkHistory struct {
	LinkId    string
	UserAgent string
	UsedAt    time.Time
}
