public static Date getRangeDate(Date midDate, int unitRange, TsUnit aTsUnit, int addOrSub) {
   Date result = null;
   if (aTsUnit == TsUnit.YEARLY) {
     result = DateUtils.addYears(midDate, unitRange * addOrSub);
   } else if (aTsUnit == TsUnit.DAILY) {
     result = DateUtils.addDays(midDate, unitRange * addOrSub);
   } else if (aTsUnit == TsUnit.MONTHLY) {
     result = DateUtils.addMonths(midDate, unitRange * addOrSub);
   } else {
     EUtils.throwNotSupportedException(Version.V1_0_0);
   }
   return result;
 }
  public void doQuery() throws Exception {
    disneyProducts.clear();
    Date startDate = (Date) queryOption.get("startDate");
    Date endDate = (Date) queryOption.get("endDate");
    if (startDate == null) {
      startDate = new Date();
    }
    if (endDate == null) {
      endDate = DateUtils.addYears(startDate, 7);
    }

    String fromDate = DateUtil.formatDate(startDate, "yyyy-MM-dd");
    String toDate = DateUtil.formatDate(endDate, "yyyy-MM-dd");
    ;

    EventResponse res = DisneyUtil.init().getEvents();
    for (Event event : res.getEvents()) {
      String response = DisneyUtil.init().getShows(event.getEventId(), fromDate, toDate);
      ShowResponse showRes = DisneyUtil.init().paseShowResponse(response);
      if (showRes.getShows() != null && showRes.getShows().size() > 0) {
        for (Show show : showRes.getShows()) {
          ProductBean bean = new ProductBean();
          bean.setEventId(event.getEventId());
          bean.setName(event.getName());
          bean.setRemark(event.getRemark());
          bean.setShowId(show.getShowId());
          bean.setShowDateTime(show.getShowDateTime());
          bean.setCutoffDateTime(show.getCutoffDateTime());
          disneyProducts.add(bean);
        }
      } else {
        ProductBean bean = new ProductBean();
        bean.setEventId(event.getEventId());
        bean.setName(event.getName());
        bean.setRemark(event.getRemark());
        bean.setShowId("");
        bean.setShowDateTime("");
        bean.setCutoffDateTime("");
        disneyProducts.add(bean);
      }
    }
  }
예제 #3
0
  /**
   * permet de recupérer les dernières infos d'absences lié à un utilisateur et de calculer les nb
   * de jours de congés/rtt restant
   *
   * @param utilisateur
   * @return
   * @throws AbsenceException
   */
  public SessionUtilisateur loadSessionUtilisateur(Long utilisateurId, Date dateAbsence)
      throws Exception {

    // date du jour
    Date now = new Date();
    now = DateUtils.truncate(now, Calendar.DATE);

    Utilisateur utilisateur = utilisateurRepository.findOne(utilisateurId);

    SessionUtilisateur session = new SessionUtilisateur();
    session.setUtilisateur(utilisateur);

    // recuperation des rtt de l'utilisateur sur la période liée à la date d'absence souhaitée
    List<DemandeAbsence> rtts =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(),
            getDateDebutPeriodeRTT(dateAbsence),
            getDateFinPeriodeRTT(dateAbsence),
            TypeAbsence.RTT);

    // recuperation des conges de l'utilisateur sur la période liée à la date d'absence souhaitée
    List<DemandeAbsence> conges =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(),
            getDateDebutPeriodeConges(dateAbsence),
            getDateFinPeriodeConges(dateAbsence),
            TypeAbsence.CONGE);

    // recuperation des conges de l'utilisateur sur la période liée à la date d'absence souhaitée
    List<DemandeAbsence> autresConges =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(), now, DateUtils.addYears(now, 1), TypeAbsence.AUTRE);

    // init des compteurs par rapport aux infos utilisateurs (congés/RTT de l'année + deltas
    // éventuels)
    CompteurConges compteurs = new CompteurConges();
    session.setCompteurs(compteurs);
    compteurs.setCongesAposer(utilisateur.getNbConges());
    compteurs.setRttAposer(utilisateur.getNbRTT());

    // prise en compte des deltas si la date de l'absence se trouve dans la période courante
    if (isPeriodeCouranteConges(dateAbsence)) {
      compteurs.setCongesAposer(compteurs.getCongesAposer() + utilisateur.getDeltaJoursConges());
    }
    if (isPeriodeCouranteRTT(dateAbsence)) {
      compteurs.setRttAposer(compteurs.getRttAposer() + utilisateur.getDeltaJoursRTT());
    }

    // maj des compteurs par rapport à la liste des absences
    // TODO gérer les cas de 80%
    for (DemandeAbsence rtt : rtts) {
      if (!rtt.getStatut().equals(StatutAbsence.REFUSE)) {
        float nbJours = getNbJoursForAbsence(rtt);
        compteurs.setRttAposer(compteurs.getRttAposer() - nbJours);
        if (rtt.getStatut().equals(StatutAbsence.POSE)) {
          compteurs.setRttEnAttente(compteurs.getRttEnAttente() + nbJours);
        }
      }
      if (rtt.getDateDebut().after(now)) {
        session.getAbsences().add(rtt);
      }
    }

    for (DemandeAbsence conge : conges) {
      if (!conge.getStatut().equals(StatutAbsence.REFUSE)) {
        float nbJours = getNbJoursForAbsence(conge);
        compteurs.setCongesAposer(compteurs.getCongesAposer() - nbJours);
        if (conge.getStatut().equals(StatutAbsence.POSE)) {
          compteurs.setCongesEnAttente(compteurs.getCongesEnAttente() + nbJours);
        }
      }
      if (conge.getDateDebut().after(now)) {
        session.getAbsences().add(conge);
      }
    }

    for (DemandeAbsence conge : autresConges) {
      if (conge.getDateDebut().after(now)) {
        session.getAbsences().add(conge);
      }
    }

    Collections.sort(session.getAbsences());

    // ajout des absences sur la période suivante
    List<DemandeAbsence> rttFuturs =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(),
            DateUtils.addDays(getDateFinPeriodeRTT(dateAbsence), 1),
            TypeAbsence.RTT);
    List<DemandeAbsence> congesFuturs =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(),
            DateUtils.addDays(getDateFinPeriodeConges(dateAbsence), 1),
            TypeAbsence.CONGE);
    List<DemandeAbsence> autresCongesFuturs =
        absenceRepository.findByUtilisateur(
            utilisateur.getId(),
            DateUtils.addDays(getDateFinPeriodeConges(dateAbsence), 1),
            TypeAbsence.AUTRE);
    session.getAbsencesFutures().addAll(rttFuturs);
    session.getAbsencesFutures().addAll(congesFuturs);
    session.getAbsencesFutures().addAll(autresCongesFuturs);
    Collections.sort(session.getAbsencesFutures());

    return session;
  }