@Transactional
 public MonthlyEntitePorteuseGoalDTO getMonthlyEntitePorteuseGoalForEntitePorteuse(
     long entitesPorteuseId, Month month) {
   MonthlyEntitePorteuseGoal entitePorteuseGoal =
       entitePorteuseGoalService.getMonthlyEntitePorteuseGoal(month, entitesPorteuseId);
   return new MonthlyEntitePorteuseGoalDTO(
       entitePorteuseGoal.getObjectif(),
       entitePorteuseGoal.getEntitePorteuse().getId(),
       entitePorteuseGoal.getMonth().getName(),
       entitePorteuseGoal.getEntitePorteuse().getLibelle());
 }
  @Transactional
  public List<MonthlyEntitePorteuseGoalDTO> saveOrUpdateMonthlyEntitePorteuseGoalsForActualMonth(
      Date monthDate, List<MonthlyEntitePorteuseGoalDTO> monthlyEntitePorteuseGoals) {
    List<MonthlyEntitePorteuseGoalDTO> result =
        saveOrUpdateMonthlyEntitePorteuseGoalsForMonth(monthDate, monthlyEntitePorteuseGoals);

    Calendar nextMonthcalendar = new GregorianCalendar();
    nextMonthcalendar.setTime(monthDate);
    nextMonthcalendar.add(Calendar.MONTH, 1);

    List<MonthlyEntitePorteuseGoal> goalListForNextMonth =
        entitePorteuseGoalService.getGoalListForMonth(nextMonthcalendar.getTime());
    if (goalListForNextMonth == null || goalListForNextMonth.size() == 0) {
      saveOrUpdateMonthlyEntitePorteuseGoalsForMonth(
          nextMonthcalendar.getTime(), monthlyEntitePorteuseGoals);
    }
    return result;
  }
 private List<MonthlyEntitePorteuseGoalDTO> saveOrUpdateMonthlyEntitePorteuseGoalsForMonth(
     Date monthDate, List<MonthlyEntitePorteuseGoalDTO> monthlyEntitePorteuseGoals) {
   Month month = periodService.getMonth(monthDate);
   List<MonthlyEntitePorteuseGoalDTO> result = new LinkedList<>();
   for (Iterator<MonthlyEntitePorteuseGoalDTO> iterator = monthlyEntitePorteuseGoals.iterator();
       iterator.hasNext(); ) {
     MonthlyEntitePorteuseGoalDTO goal = iterator.next();
     EntitePorteuse entitePorteuse = entitePorteuseService.findById(goal.getIdEntitePorteuse());
     MonthlyEntitePorteuseGoal entitePorteuseGoal =
         entitePorteuseGoalService.setGoalForMonth(month, entitePorteuse, goal.getObjectif());
     result.add(
         new MonthlyEntitePorteuseGoalDTO(
             entitePorteuseGoal.getObjectif(),
             entitePorteuseGoal.getEntitePorteuse().getId(),
             entitePorteuseGoal.getMonth().getName(),
             entitePorteuseGoal.getEntitePorteuse().getLibelle()));
   }
   return result;
 }
  @Transactional
  public List<MonthlyEntitePorteuseGoalDTO> getMonthlyEntitePorteuseGoals(
      Date monthDate, long[] entitesPorteuses) {
    Month month = periodService.getMonth(monthDate);

    List<MonthlyEntitePorteuseGoalDTO> result = new LinkedList<>();

    for (int i = 0; i < entitesPorteuses.length; i++) {
      long entitesPorteuseId = entitesPorteuses[i];
      MonthlyEntitePorteuseGoal entitePorteuseGoal =
          entitePorteuseGoalService.getMonthlyEntitePorteuseGoal(month, entitesPorteuseId);
      result.add(
          new MonthlyEntitePorteuseGoalDTO(
              entitePorteuseGoal.getObjectif(),
              entitePorteuseGoal.getEntitePorteuse().getId(),
              entitePorteuseGoal.getMonth().getName(),
              entitePorteuseGoal.getEntitePorteuse().getLibelle()));
    }
    return result;
  }