package com.cool.store.response;

import com.cool.store.annotation.DictField;
import com.cool.store.dto.PartnerBankInfoDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class AddSignFranchiseResponse {

    @ApiModelProperty("主键，更新时才存在")
    private Long id;

    private Long shopId;

    private Long regionId;

    private String regionName;

    private String detailAddress;

    /**
     * SignTypeEnum
     */
    @ApiModelProperty("【门店类型】：0-无展示门店、1-餐厅店、2-普通门店'")
    private Integer storeType;

    @ApiModelProperty("签约类型,0.转让　1.新签　2.续签　3.迁址　5.新签同异业转化")
    private Integer signType;

    @ApiModelProperty("品牌使用费比例")
    private String brandFee;

    @ApiModelProperty("是否有营业执照 0-是 1-否")
    private Integer isBusinessLicense;

    @ApiModelProperty("是否有食营 0-是 1-否")
    private Integer isFoodLicense;

    @ApiModelProperty("合同开始日期")
    private Date contractStartTime;

    @ApiModelProperty("合同结束日期")
    private Date contractEndTime;

    @ApiModelProperty("用印次数")
    private String impressionNum;

    @ApiModelProperty("营业开始时间（日期不重要传分秒即可）")
    private Date businessStartHours;
    @ApiModelProperty("营业结束时间（日期不重要传分秒即可）")
    private Date businessEndHours;

    @ApiModelProperty("非常规营业时间原因")
    private String irregularReason;

    @ApiModelProperty("备注")
    private String remark;

    @ApiModelProperty("是否补签")
    private Integer resign;

    @ApiModelProperty("加盟商联系方式")
    private String mobile;


    @ApiModelProperty("门店名称")
    private String storeName;

    @ApiModelProperty("门店地址")
    private String storeAddress;

    @ApiModelProperty("门店省市区")
    private String storeProvinceCity;

    @ApiModelProperty("所属大区")
    private String bigRegion;

    @ApiModelProperty("大区分总")
    private String bigRegionManager;

    @ApiModelProperty("加盟商类型")
    private String franchiseeType;

    @ApiModelProperty("交款人")
    private List<String> payName;

    @ApiModelProperty("营业执照名称")
    private String licenseName;

    @ApiModelProperty("经营者")
    private String operator;
    @ApiModelProperty("类型")
    private String type;

    @ApiModelProperty("社会信用代码")
    private String licenseCode;

    @ApiModelProperty("经营场所")
    private String opeAddress;
    @ApiModelProperty("加盟商姓名")
    private String partnerName;

    @ApiModelProperty("加盟商身份证号")
    private String idCardNo;

    @ApiModelProperty("加盟商付款资料")
    private List<PartnerBankInfoDTO> partnerPayData;

    @ApiModelProperty("身份证地址")
    private String idCardAddress;
    @ApiModelProperty("交款日期")
    private Date payDate;

    @ApiModelProperty("每年加盟费")
    private String yearFranchiseFee;
    @ApiModelProperty("每年加盟费大写")
    private String bigYearFranchiseFee;

    @ApiModelProperty("贷款保证金")
    private String loanMargin;

    @ApiModelProperty("贷款保证金大写")
    private String bigLoanMargin;

    @ApiModelProperty("1开")
    private Date firstYearStartTime;
    @ApiModelProperty("1结")
    private Date firstYearEndTime;
    @ApiModelProperty("1品牌使用费")
    private String firstYearFee;
    @ApiModelProperty("1管理费")
    private String firstYearManageFee;
    @ApiModelProperty("2开")
    private Date secondYearStartTime;
    @ApiModelProperty("2结")
    private Date secondYearEndTime;
    @ApiModelProperty("2费")
    private String secondYearFee;
    @ApiModelProperty("3开")
    private Date thirdYearStartTime;
    @ApiModelProperty("3结")
    private Date thirdYearEndTime;
    @ApiModelProperty("3费")
    private String thirdYearFee;

    @ApiModelProperty("履约保证金")
    private String performanceBond;

    @ApiModelProperty("履约保证金大写")
    private String bigPerformanceBond;
    @ApiModelProperty("享受加盟费和保证金优惠原因")
    private String reasons;

    @ApiModelProperty("状态 0通过,1拒绝")
    private Integer status;

    @ApiModelProperty("原因")
    private String result;

    @ApiModelProperty("失败时间")
    private Date resultTime;
    @ApiModelProperty("合同编码")
    private String contractCode;
    @ApiModelProperty("合同金额")
    private String contractAmount;

    @ApiModelProperty("合伙签约人1")
    private String partnershipSignatoryFirst;
    @ApiModelProperty("合伙签约人2")
    private String partnershipSignatorySecond;

    @ApiModelProperty("店铺编码")
    private String shopCode;

    @ApiModelProperty("店铺品牌")
    private String franchiseBrand;

    @ApiModelProperty("经营模式（0 无 1直营 2加盟）")
    private Integer businessModel;

    @ApiModelProperty("加盟模式（1-加盟部加盟店、2-加盟公司、3-自有加盟、4-强加盟）")
    private Integer joinMode;


    //签约人2身份证号
    @ApiModelProperty("签约人2身份证号")
    private String partnershipSignatorySecondIdNumber;
    //签约人2手机号
    @ApiModelProperty("签约人2手机号")
    private String partnershipSignatorySecondMobile;
    //'保护距离 / m'
    @ApiModelProperty("保护距离 / m")
    private Integer protectiveDistance;
    //介绍人
    @ApiModelProperty("介绍人")
    private String introducer;
    //介绍门店
    @ApiModelProperty("介绍门店")
    private String introduceStore;
    //介绍奖
    @ApiModelProperty("介绍奖")
    private String introductionAward;
    //签约人1第几家分店
    @ApiModelProperty("签约人1第几家分店")
    private Integer partnershipSignatoryFirstWhichStore;

    //省
    @ApiModelProperty("省")
    private String province;
    //省code
    @ApiModelProperty("省code")
    private Integer provinceCode;
    //市
    @ApiModelProperty("市")
    private String city;
    //市code
    @ApiModelProperty("市code")
    private Integer cityCode;
    //区
    @ApiModelProperty("区")
    private String district;
    //区code
    @ApiModelProperty("区code")
    private Integer districtCode;

    @ApiModelProperty("所属管理区域id")
    private Long managerRegionId;

    @ApiModelProperty("所属管理区域name")
    private String managerRegionName;

    @ApiModelProperty("门店装修属性 0-新开店 1-老店新开 2-老店翻新 3-迁址")
    private Integer shopDecorationAttributes;

    @ApiModelProperty("是否统管 ： 1-统管，0-不统管")
    private Integer unifiedManagement;
    @ApiModelProperty("信息是否一致")
    private Integer infoConsistencyFlag;
    @ApiModelProperty("不一致原因")
    private String reason;
    @ApiModelProperty("老店编码 签约类型选择老店转加盟时有")
    private String oldShopCode;

    @ApiModelProperty("合同加盟费")
    @NotBlank(message = "合同加盟费不能为空")
    private String contractFranchiseFee;

    /**
     * 合同管理费
     */
    @ApiModelProperty("合同管理费")
    @NotBlank(message = "合同管理费不能为空")
    private String contractManageFee;

    /**
     * 合同品牌使用费
     */
    @ApiModelProperty("合同品牌使用费")
    @NotBlank(message = "合同品牌使用费不能为空")
    private String contractBrandUseFee;

    /**
     * 合同设计费
     */
    @ApiModelProperty("合同设计费")
    @NotBlank(message = "合同设计费不能为空")
    private String contractPerformanceBond;

    /**
     * 合同保证金
     */
    @ApiModelProperty("合同保证金")
    @NotBlank(message = "合同保证金不能为空")
    private String contractLoanMargin;

    /**
     * 合同系统使用费
     */
    @ApiModelProperty("合同系统使用费")
    @NotBlank(message = "合同系统使用费不能为空")
    private String contractSysUserFee;

    /**
     * 加盟来源
     */
    @ApiModelProperty("加盟来源")
    private String joinSource;
    @ApiModelProperty("收银费(系统费)")
    private String cashierFee;

    /**
     * 签约形式
     */
    @ApiModelProperty("签约形式")
    private String signModality;

    /**
     * 加盟费频率
     */
    @ApiModelProperty("加盟费频率")
    private Integer franchiseFeeFrequency;

    /**
     * 品牌使用费频率
     */
    @ApiModelProperty("品牌使用费频率")
    private Integer brandUseFeeFrequency;

    /**
     * 管理费频率
     */
    @ApiModelProperty("管理费频率")
    private Integer manageFeeFrequency;

    /**
     * 加盟费折扣金额
     */
    @ApiModelProperty("加盟费折扣金额")
    private String discountAmount;
    @ApiModelProperty("收银费(系统费)大写")
    private String bigCashierFee;

    @Column(name = "currency")
    private String currency;

    @Column(name = "contract_service_life")
    private Integer contractServiceLife;

    @ApiModelProperty("鸡排价格")
    private BigDecimal chickenAmount;

    @ApiModelProperty("其他价格原因说明")
    private String chickenInstruction;

    @ApiModelProperty("装修等级")
    private String decorationLevel;

    @ApiModelProperty("装修等级名称")
    @DictField
    private String decorationLevelName;

    @ApiModelProperty("装修设计要求")
    private String decorationRequirement;

    @ApiModelProperty("装修设计要求名称")
    @DictField
    private String decorationRequirementName;

    @ApiModelProperty("特殊情况说明")
    private String specialInstruction;
}
