package pwc.taxtech.atms.dpo;

import com.fasterxml.jackson.annotation.JsonProperty;
import pwc.taxtech.atms.entity.Project;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class ProjectDisplayDto {
    private String clientCode;
    private String code;
    private Date createTime;
    private String dbName;
    private Date effectiveDate;
    private Integer endPeriod;
    @JsonProperty("enterpriseAccountSetID")
    private String enterpriseAccountSetId;
    private Date expiredDate;
    private Boolean haveCreateProject;
    private String id;
    @JsonProperty("industryID")
    private String industryId;
    private String industryName;
    private Boolean isActive;
    private String name;
    @JsonProperty("organizationID")
    private String organizationId;
    private String organizationName;
    private Map<Integer, Integer> projectStatusList;
    @JsonProperty("regionID")
    private String regionId;
    private String regionName;
    private Integer ruleType;
    @JsonProperty("serviceTypeID")
    private String serviceTypeId;
    private List<String> serviceTypeIds;
    private String serviceTypeName;
    private List<ServiceTypeTemplateGroup> serviceTypeTemplateGroupList;
    private Integer startPeriod;
    @JsonProperty("templateGroupID")
    private String templateGroupId;
    private String templateGroupName;
    private Date upDate;
    private Integer year;

    public String getClientCode() {
        return clientCode;
    }

    public void setClientCode(String clientCode) {
        this.clientCode = clientCode;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getDbName() {
        return dbName;
    }

    public void setDbName(String dbName) {
        this.dbName = dbName;
    }

    public Date getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public Integer getEndPeriod() {
        return endPeriod;
    }

    public void setEndPeriod(Integer endPeriod) {
        this.endPeriod = endPeriod;
    }

    public String getEnterpriseAccountSetId() {
        return enterpriseAccountSetId;
    }

    public void setEnterpriseAccountSetId(String enterpriseAccountSetId) {
        this.enterpriseAccountSetId = enterpriseAccountSetId;
    }

    public Date getExpiredDate() {
        return expiredDate;
    }

    public void setExpiredDate(Date expiredDate) {
        this.expiredDate = expiredDate;
    }

    public Boolean getHaveCreateProject() {
        return haveCreateProject;
    }

    public void setHaveCreateProject(Boolean haveCreateProject) {
        this.haveCreateProject = haveCreateProject;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getIndustryId() {
        return industryId;
    }

    public void setIndustryId(String industryId) {
        this.industryId = industryId;
    }

    public String getIndustryName() {
        return industryName;
    }

    public void setIndustryName(String industryName) {
        this.industryName = industryName;
    }

    public Boolean getActive() {
        return isActive;
    }

    public void setActive(Boolean active) {
        isActive = active;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getOrganizationName() {
        return organizationName;
    }

    public void setOrganizationName(String organizationName) {
        this.organizationName = organizationName;
    }

    public String getRegionId() {
        return regionId;
    }

    public void setRegionId(String regionId) {
        this.regionId = regionId;
    }

    public String getRegionName() {
        return regionName;
    }

    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }

    public Integer getRuleType() {
        return ruleType;
    }

    public void setRuleType(Integer ruleType) {
        this.ruleType = ruleType;
    }

    public String getServiceTypeId() {
        return serviceTypeId;
    }

    public void setServiceTypeId(String serviceTypeId) {
        this.serviceTypeId = serviceTypeId;
    }

    public List<String> getServiceTypeIds() {
        return serviceTypeIds;
    }

    public void setServiceTypeIds(List<String> serviceTypeIds) {
        this.serviceTypeIds = serviceTypeIds;
    }

    public String getServiceTypeName() {
        return serviceTypeName;
    }

    public void setServiceTypeName(String serviceTypeName) {
        this.serviceTypeName = serviceTypeName;
    }

    public List<ServiceTypeTemplateGroup> getServiceTypeTemplateGroupList() {
        return serviceTypeTemplateGroupList;
    }

    public void setServiceTypeTemplateGroupList(List<ServiceTypeTemplateGroup> serviceTypeTemplateGroupList) {
        this.serviceTypeTemplateGroupList = serviceTypeTemplateGroupList;
    }

    public Integer getStartPeriod() {
        return startPeriod;
    }

    public void setStartPeriod(Integer startPeriod) {
        this.startPeriod = startPeriod;
    }

    public String getTemplateGroupId() {
        return templateGroupId;
    }

    public void setTemplateGroupId(String templateGroupId) {
        this.templateGroupId = templateGroupId;
    }

    public String getTemplateGroupName() {
        return templateGroupName;
    }

    public void setTemplateGroupName(String templateGroupName) {
        this.templateGroupName = templateGroupName;
    }

    public Date getUpDate() {
        return upDate;
    }

    public void setUpDate(Date upDate) {
        this.upDate = upDate;
    }

    public Integer getYear() {
        return year;
    }

    public void setYear(Integer year) {
        this.year = year;
    }


    public Map<Integer, Integer> getProjectStatusList() {
        return projectStatusList;
    }

    public void setProjectStatusList(Map<Integer, Integer> projectStatusList) {
        this.projectStatusList = projectStatusList;
    }

    public void  extractFromProject(Project project){
        this.clientCode = project.getClientCode();
        this.code = project.getCode();
        this.createTime = project.getCreateTime();
        this.effectiveDate = new Date();
        this.endPeriod = project.getEndPeriod();
        this.enterpriseAccountSetId = project.getEnterpriseAccountSetId();
        this.id = project.getId();
        this.industryId = project.getIndustryId();
        this.isActive = project.getIsActive();
        this.name = project.getName();
        this.organizationId = project.getOrganizationId();
        this.regionId = project.getRegionId();
        this.ruleType = project.getRuleType();
        this.startPeriod = project.getStartPeriod();
        this.upDate = project.getUpdateTime();
        this.year = project.getYear();
    }
}