package jnpf.model.franchisee.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import jnpf.model.franchisee.po.FranchiseeEntity;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 加盟商详情返回参数
 */
@Data
public class FranchiseeVO {

    /**
     * 主键ID
     */
    private String id;

    /**
     * 加盟商性质
     */
    private String franchiseeNature;

    /**
     * 加盟商名称
     */
    private String franchiseeName;

    /**
     * 营业执照图片
     */
    private String businessLicenseUrl;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 性别
     */
    private String gender;

    /**
     * 负责人身份证正面照片
     */
    private String idCardFrontUrl;

    /**
     * 负责人身份证号
     */
    private String idCardNumber;

    /**
     * 现住址/公司地址
     */
    private String currentAddress;

    /**
     * 银行卡号
     */
    private String bankCardNumber;

    /**
     * 加盟商编号
     */
    private String franchiseeCode;

    /**
     * 手机号
     */
    private String mobilePhone;

    /**
     * 负责人/法定代表人/经营者
     */
    private String principal;

    /**
     * 负责人身份证反面照片
     */
    private String idCardBackUrl;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 开户行
     */
    private String bankName;

    /**
     * 加盟商状态
     */
    private String franchiseeStatus;

    /**
     * 加盟方式
     */
    private String joinType;

    /**
     * 加盟日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date joinDate;

    /**
     * 成立时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date establishDate;

    /**
     * 加盟地区
     */
    private String joinRegion;

    /**
     * 经营性质
     */
    private String businessNature;

    /**
     * 门店商圈
     */
    private String storeBusinessDistrict;

    /**
     * 投资门店数
     */
    private Integer investStoreCount;

    /**
     * 投资金额
     */
    private BigDecimal investAmount;

    /**
     * 盈利预期
     */
    private String profitExpectation;

    /**
     * 预计员工数
     */
    private Integer expectedStaffCount;

    /**
     * 年收入
     */
    private String annualIncome;

    /**
     * 收入来源
     */
    private String incomeSource;

    /**
     * 债务情况
     */
    private String debtSituation;

    /**
     * 门店数量
     */
    private Integer storeNum;

    /**
     * 自定义字段列表
     */
    private List<FranchiseeCustomFieldVO> customFieldList = new ArrayList<>();

    /**
     * 从业经历列表
     */
    private List<FranchiseeExperienceVO> experienceList = new ArrayList<>();

    /**
     * 转换为返回对象
     *
     * @param entity 加盟商实体
     * @return 返回对象
     */
    public static FranchiseeVO convert(FranchiseeEntity entity) {
        if (entity == null) {
            return null;
        }
        FranchiseeVO vo = new FranchiseeVO();
        vo.setId(entity.getId());
        vo.setFranchiseeNature(entity.getFranchiseeNature());
        vo.setFranchiseeName(entity.getFranchiseeName());
        vo.setBusinessLicenseUrl(entity.getBusinessLicenseUrl());
        vo.setCompanyName(entity.getCompanyName());
        vo.setGender(entity.getGender());
        vo.setIdCardFrontUrl(entity.getIdCardFrontUrl());
        vo.setIdCardNumber(entity.getIdCardNumber());
        vo.setCurrentAddress(entity.getCurrentAddress());
        vo.setBankCardNumber(entity.getBankCardNumber());
        vo.setFranchiseeCode(entity.getFranchiseeCode());
        vo.setMobilePhone(entity.getMobilePhone());
        vo.setPrincipal(entity.getPrincipal());
        vo.setIdCardBackUrl(entity.getIdCardBackUrl());
        vo.setAge(entity.getAge());
        vo.setBankName(entity.getBankName());
        vo.setFranchiseeStatus(entity.getFranchiseeStatus());
        vo.setJoinType(entity.getJoinType());
        vo.setJoinDate(entity.getJoinDate());
        vo.setEstablishDate(entity.getEstablishDate());
        vo.setBusinessNature(entity.getBusinessNature());
        vo.setStoreBusinessDistrict(entity.getStoreBusinessDistrict());
        vo.setInvestStoreCount(entity.getInvestStoreCount());
        vo.setInvestAmount(entity.getInvestAmount());
        vo.setProfitExpectation(entity.getProfitExpectation());
        vo.setExpectedStaffCount(entity.getExpectedStaffCount());
        vo.setAnnualIncome(entity.getAnnualIncome());
        vo.setIncomeSource(entity.getIncomeSource());
        vo.setDebtSituation(entity.getDebtSituation());
        vo.setStoreNum(entity.getStoreNum());
        return vo;
    }
}
