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

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

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@ApiModel("手机端 查询饮食报告出参")
public class HealthDietReportVO {
   @ApiModelProperty("营养摄入统计分析")
   private List<HealthNutritionVO> healthNutritionVOS;
   @ApiModelProperty("三大营养素日均供能占比: 营养素名称 - 摄入占比")
   private Map<String, BigDecimal> nutritionPercent;
   @ApiModelProperty("三大营养素日均早餐供能占比: 营养素名称 - 摄入占比")
   private Map<String, BigDecimal> nutritionBreakfastPercent;
   @ApiModelProperty("三大营养素日均中餐供能占比: 营养素名称 - 摄入占比")
   private Map<String, BigDecimal> nutritionLunchPercent;
   @ApiModelProperty("三大营养素日均晚餐供能占比: 营养素名称 - 摄入占比")
   private Map<String, BigDecimal> nutritionDinnerPercent;
   @ApiModelProperty("三餐日均能量摄入占比: 餐次 - 摄入能量")
   private Map<String, BigDecimal> caloriesPercent;

   public HealthDietReportVO() {
   }

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

   public List<HealthNutritionVO> getHealthNutritionVOS() {
      return this.healthNutritionVOS;
   }

   public Map<String, BigDecimal> getNutritionPercent() {
      return this.nutritionPercent;
   }

   public Map<String, BigDecimal> getNutritionBreakfastPercent() {
      return this.nutritionBreakfastPercent;
   }

   public Map<String, BigDecimal> getNutritionLunchPercent() {
      return this.nutritionLunchPercent;
   }

   public Map<String, BigDecimal> getNutritionDinnerPercent() {
      return this.nutritionDinnerPercent;
   }

   public Map<String, BigDecimal> getCaloriesPercent() {
      return this.caloriesPercent;
   }

   public void setHealthNutritionVOS(final List<HealthNutritionVO> healthNutritionVOS) {
      this.healthNutritionVOS = healthNutritionVOS;
   }

   public void setNutritionPercent(final Map<String, BigDecimal> nutritionPercent) {
      this.nutritionPercent = nutritionPercent;
   }

   public void setNutritionBreakfastPercent(final Map<String, BigDecimal> nutritionBreakfastPercent) {
      this.nutritionBreakfastPercent = nutritionBreakfastPercent;
   }

   public void setNutritionLunchPercent(final Map<String, BigDecimal> nutritionLunchPercent) {
      this.nutritionLunchPercent = nutritionLunchPercent;
   }

   public void setNutritionDinnerPercent(final Map<String, BigDecimal> nutritionDinnerPercent) {
      this.nutritionDinnerPercent = nutritionDinnerPercent;
   }

   public void setCaloriesPercent(final Map<String, BigDecimal> caloriesPercent) {
      this.caloriesPercent = caloriesPercent;
   }

   public HealthDietReportVO(final List<HealthNutritionVO> healthNutritionVOS, final Map<String, BigDecimal> nutritionPercent, final Map<String, BigDecimal> nutritionBreakfastPercent, final Map<String, BigDecimal> nutritionLunchPercent, final Map<String, BigDecimal> nutritionDinnerPercent, final Map<String, BigDecimal> caloriesPercent) {
      this.healthNutritionVOS = healthNutritionVOS;
      this.nutritionPercent = nutritionPercent;
      this.nutritionBreakfastPercent = nutritionBreakfastPercent;
      this.nutritionLunchPercent = nutritionLunchPercent;
      this.nutritionDinnerPercent = nutritionDinnerPercent;
      this.caloriesPercent = caloriesPercent;
   }

   public static class HealthDietReportVOBuilder {
      private List<HealthNutritionVO> healthNutritionVOS;
      private Map<String, BigDecimal> nutritionPercent;
      private Map<String, BigDecimal> nutritionBreakfastPercent;
      private Map<String, BigDecimal> nutritionLunchPercent;
      private Map<String, BigDecimal> nutritionDinnerPercent;
      private Map<String, BigDecimal> caloriesPercent;

      HealthDietReportVOBuilder() {
      }

      public HealthDietReportVOBuilder healthNutritionVOS(final List<HealthNutritionVO> healthNutritionVOS) {
         this.healthNutritionVOS = healthNutritionVOS;
         return this;
      }

      public HealthDietReportVOBuilder nutritionPercent(final Map<String, BigDecimal> nutritionPercent) {
         this.nutritionPercent = nutritionPercent;
         return this;
      }

      public HealthDietReportVOBuilder nutritionBreakfastPercent(final Map<String, BigDecimal> nutritionBreakfastPercent) {
         this.nutritionBreakfastPercent = nutritionBreakfastPercent;
         return this;
      }

      public HealthDietReportVOBuilder nutritionLunchPercent(final Map<String, BigDecimal> nutritionLunchPercent) {
         this.nutritionLunchPercent = nutritionLunchPercent;
         return this;
      }

      public HealthDietReportVOBuilder nutritionDinnerPercent(final Map<String, BigDecimal> nutritionDinnerPercent) {
         this.nutritionDinnerPercent = nutritionDinnerPercent;
         return this;
      }

      public HealthDietReportVOBuilder caloriesPercent(final Map<String, BigDecimal> caloriesPercent) {
         this.caloriesPercent = caloriesPercent;
         return this;
      }

      public HealthDietReportVO build() {
         return new HealthDietReportVO(this.healthNutritionVOS, this.nutritionPercent, this.nutritionBreakfastPercent, this.nutritionLunchPercent, this.nutritionDinnerPercent, this.caloriesPercent);
      }
   }
}
