package com.bonus.canteen.core.nutrition.common.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDate;
import java.util.List;

@ApiModel("编辑营养配餐入参")
public class HealthCateringEditDTO {
   @ApiModelProperty("人员营养配餐id")
   private Long healthCateringId;
   @ApiModelProperty("人员id")
   private Long custId;
   @ApiModelProperty("指导营养师id")
   private Long adviserId;
   @ApiModelProperty("执行模式: 1- 以星期为单位重复 2-指定星期")
   private Integer exeMode;
   @ApiModelProperty("是否可见: 1-是,2否")
   private Integer ifVisible;
   @ApiModelProperty("执行开始日期 yyyy-MM-dd")
   private LocalDate exeStartDate;
   @ApiModelProperty("执行结束日期 yyyy-MM-dd")
   private LocalDate exeEndDate;
   @ApiModelProperty("配餐天数")
   private List<HealthRecipeDayAddDTO> healthCateringDayDTOList;

   public HealthCateringEditDTO() {
   }

   public static HealthCateringEditDTOBuilder builder() {
      return new HealthCateringEditDTOBuilder();
   }

   public Long getHealthCateringId() {
      return this.healthCateringId;
   }

   public Long getCustId() {
      return this.custId;
   }

   public Long getAdviserId() {
      return this.adviserId;
   }

   public Integer getExeMode() {
      return this.exeMode;
   }

   public Integer getIfVisible() {
      return this.ifVisible;
   }

   public LocalDate getExeStartDate() {
      return this.exeStartDate;
   }

   public LocalDate getExeEndDate() {
      return this.exeEndDate;
   }

   public List<HealthRecipeDayAddDTO> getHealthCateringDayDTOList() {
      return this.healthCateringDayDTOList;
   }

   public void setHealthCateringId(final Long healthCateringId) {
      this.healthCateringId = healthCateringId;
   }

   public void setCustId(final Long custId) {
      this.custId = custId;
   }

   public void setAdviserId(final Long adviserId) {
      this.adviserId = adviserId;
   }

   public void setExeMode(final Integer exeMode) {
      this.exeMode = exeMode;
   }

   public void setIfVisible(final Integer ifVisible) {
      this.ifVisible = ifVisible;
   }

   public void setExeStartDate(final LocalDate exeStartDate) {
      this.exeStartDate = exeStartDate;
   }

   public void setExeEndDate(final LocalDate exeEndDate) {
      this.exeEndDate = exeEndDate;
   }

   public void setHealthCateringDayDTOList(final List<HealthRecipeDayAddDTO> healthCateringDayDTOList) {
      this.healthCateringDayDTOList = healthCateringDayDTOList;
   }

   public HealthCateringEditDTO(final Long healthCateringId, final Long custId, final Long adviserId, final Integer exeMode, final Integer ifVisible, final LocalDate exeStartDate, final LocalDate exeEndDate, final List<HealthRecipeDayAddDTO> healthCateringDayDTOList) {
      this.healthCateringId = healthCateringId;
      this.custId = custId;
      this.adviserId = adviserId;
      this.exeMode = exeMode;
      this.ifVisible = ifVisible;
      this.exeStartDate = exeStartDate;
      this.exeEndDate = exeEndDate;
      this.healthCateringDayDTOList = healthCateringDayDTOList;
   }

   public static class HealthCateringEditDTOBuilder {
      private Long healthCateringId;
      private Long custId;
      private Long adviserId;
      private Integer exeMode;
      private Integer ifVisible;
      private LocalDate exeStartDate;
      private LocalDate exeEndDate;
      private List<HealthRecipeDayAddDTO> healthCateringDayDTOList;

      HealthCateringEditDTOBuilder() {
      }

      public HealthCateringEditDTOBuilder healthCateringId(final Long healthCateringId) {
         this.healthCateringId = healthCateringId;
         return this;
      }

      public HealthCateringEditDTOBuilder custId(final Long custId) {
         this.custId = custId;
         return this;
      }

      public HealthCateringEditDTOBuilder adviserId(final Long adviserId) {
         this.adviserId = adviserId;
         return this;
      }

      public HealthCateringEditDTOBuilder exeMode(final Integer exeMode) {
         this.exeMode = exeMode;
         return this;
      }

      public HealthCateringEditDTOBuilder ifVisible(final Integer ifVisible) {
         this.ifVisible = ifVisible;
         return this;
      }

      public HealthCateringEditDTOBuilder exeStartDate(final LocalDate exeStartDate) {
         this.exeStartDate = exeStartDate;
         return this;
      }

      public HealthCateringEditDTOBuilder exeEndDate(final LocalDate exeEndDate) {
         this.exeEndDate = exeEndDate;
         return this;
      }

      public HealthCateringEditDTOBuilder healthCateringDayDTOList(final List<HealthRecipeDayAddDTO> healthCateringDayDTOList) {
         this.healthCateringDayDTOList = healthCateringDayDTOList;
         return this;
      }

      public HealthCateringEditDTO build() {
         return new HealthCateringEditDTO(this.healthCateringId, this.custId, this.adviserId, this.exeMode, this.ifVisible, this.exeStartDate, this.exeEndDate, this.healthCateringDayDTOList);
      }

   }
}
