package response

import (
	"github.com/rdlucklib/rdluck_tools/paging"
	"hongze/hz_crm_api/models"
)

// 首页控制台数据
type WorktopResp struct {
	FormalCompanyCount          int                         `description:"正式客户数"`
	TrialCompanyTotal           int                         `description:"试用客户数"`
	NewCompanyTotal             int                         `description:"新签客户数"`
	RenewalCompanyTotal         int                         `description:"续约客户数"`
	NotRenewalCompanyTotal      int                         `description:"未续约客户数"`
	IncrementalCompanyChartList IncrementalCompanyChartResp `description:"增量客户图表数据"`
	WillExpireChartList         WillExpireChartResp         `description:"增量客户图表数据"`
	IncomeChartList             IncomeChartResp             `description:"收入统计图表数据"`
	ContractData                ContractChartResp           `description:"当前有效合同存量"`
}

// 增量客户图表数据
type IncrementalCompanyChartResp struct {
	Title               string   `description:"图表名称"`
	Date                []string `description:"月份"`
	NewCompanyTotal     []int    `description:"新签客户数"`
	RenewalCompanyTotal []int    `description:"续约客户数"`
	//NotRenewalCompanyTotal []int    `description:"未续约客户数"`
}

// 即将到期客户数
type WillExpireChartResp struct {
	Title        string   `description:"图表名称"`
	Date         []string `description:"月份"`
	CompanyTotal []int    `description:"客户数"`
}

// 收入统计图表数据
type IncomeChartResp struct {
	Title         string    `description:"图表名称"`
	Date          []string  `description:"月份"`
	ContractTotal []int     `description:"合同数"`
	MoneyTotal    []float64 `description:"合同总金额"`
}

// 当前有效合同存量
type ContractChartResp struct {
	Title              string  `description:"图表名称"`
	FormalCompanyCount int     `description:"正式客户数"`
	ContractTotal      int     `description:"合同数"`
	MoneyTotal         float64 `description:"合同总金额"`
}

// 即将到期客户
type WillExpireCompanyListResp struct {
	List         []*models.WillExpireCompanyList
	Paging       *paging.PagingItem `description:"分页数据"`
	TotalCompany int                `description:"总客户数"`
}

// 合同统计数据接口返回结构体
type ContractStatListResp struct {
	List                []*models.ContractStatList
	TotalContract       int                `description:"合同数量"`
	TotalMoney          float64            `description:"合同总金额"`
	TotalCompany        int                `description:"总客户数"`
	TotalFileContract   int                `description:"总上传附件合同数"`
	TotalSystemContract int                `description:"总系统生成合同数"`
	Paging              *paging.PagingItem `description:"分页数据"`
}

// CompanyContractStatListResp 企业客户的合同统计数据接口返回结构体
type CompanyContractStatListResp struct {
	List          []*models.CompanyContractStatList
	TotalContract int                `description:"合同数量"`
	TotalMoney    float64            `description:"合同总金额"`
	TotalCompany  int                `description:"总客户数"`
	Paging        *paging.PagingItem `description:"分页数据"`
}

// 收入统计报表返回类
type IncomeListResp struct {
	List   []*models.IncomeList
	Paging *paging.PagingItem `description:"分页数据"`
	Total  int                `description:"新签合同总数"`
	Money  float64            `description:"新签合同总金额"`
}

// 存量客户统计报表返回类
type StackCompanyListResp struct {
	List                   []*models.StackCompanyStatisticList
	Paging                 *paging.PagingItem `description:"分页数据"`
	NewCompanyTotal        int                `description:"新签客户数"`
	RenewalCompanyTotal    int                `description:"续约客户数"`
	NotRenewalCompanyTotal int                `description:"未续约客户数"`
	NotRenewalTryOut       int                `description:"未续约客户(试用)数"`
	NotRenewalNotTryOut    int                `description:"未续约客户(非试用)数"`
}

// 增量客户统计报表返回类
type IncrementalCompanyListResp struct {
	Paging                            *paging.PagingItem `description:"分页数据"`
	List                              []*models.IncrementalList
	ListPermissionName                []*models.CompanyContractPermissionNameGroupCountResp
	TrialTotal                        int `description:"新增试用客户数"`
	NewCompanyTotal                   int `description:"新签客户数"`
	RenewalCompanyTotal               int `description:"续约客户数"`
	NotRenewalCompanyTotal            int `description:"未续约客户数(已确认)"`
	NotRenewalCompanyToBeConfirmTotal int `description:"未续约客户数(待确认)"`
	NotRenewalTryOut                  int `description:"未续约客户(试用)数"`
	NotRenewalNotTryOut               int `description:"未续约客户(非试用)数"`
}

// MoreRenewReasonResp 未续约说明列表返回类
type MoreRenewReasonResp struct {
	RenewalReason          string `description:"未续约说明"`
	RenewalTodo            string `description:"待办事项说明"`
	CreateTime             string `description:"添加时间"`
	ExpirationTimeExceeded string `description:"超出到期时间"`
}

// RenewReasonItemResp 客户未续约说明列表返回类
type RenewReasonItemResp struct {
	RenewalReason string `description:"未续约说明"`
	RenewalTodo   string `description:"待办事项说明"`
	CreateTime    string `description:"添加时间"`
}

// 合并之后的合同详情
type CompanyPreviousDetailResp struct {
	Detail *models.IncrementalList
}

// 权益客户统计,续约率,返回类
type IncrementalCompanyPercentageListResp struct {
	Paging                     *paging.PagingItem `description:"分页数据"`
	List                       []*models.IncrementalList
	RenewalRateMoney           string `description:"合同金额续约率"`
	RenewalRateMoneyContent    string `description:"合同金额续约率详情"`
	RenewalRateTotal           string `description:"合同数量续约率"`
	RenewalRateTotalContent    string `description:"合同数量续约率详情"`
	RenewalContractTotal       int    `description:"续约合同数量"`
	RenewalContractMoney       int    `description:"续约合同总金额"`
	ExpireRenewalContractTotal int    `description:"到期合同数量"`
	ExpireRenewalContractMoney int    `description:"到期合同总金额"`
}

// 权益客户统计,续约率,返回类
type IncrementalCompanyPercentageExportResp struct {
	NoRenewalContractTotal      int    `description:"确认不续约合同数"`
	NoRenewalContractMoney      int    `description:"确认不续约合同金额"`
	ExpireRenewalContractTotal  int    `description:"到期合同数量"`
	ExpireRenewalContractMoney  int    `description:"到期合同总金额"`
	NoRenewalContractPercentage string `description:"确认不续约率"`
}