예제 #1
0
  @Override
  public Boolean affecter(Dossier dossier, SessionExamen session)
      throws AffectationClosedException {
    DossierSession sameexist =
        dossierSessionRepos.findByDossierIdAndSessionExamenId(dossier.getId(), session.getId());
    if (sameexist != null) {
      return true;
    }

    DossierSession exist = dossierSessionRepos.findByDossierId(dossier.getId());
    if (exist != null && exist.getSessionExamen().getStatus() == SessionStatus.CLOSED) {
      GregorianCalendar calendar = new GregorianCalendar();
      calendar.add(Calendar.DAY_OF_MONTH, -1);

      Date dateSession = exist.getSessionExamen().getDateSession();
      Date yesterday = calendar.getTime();

      if (yesterday.before(dateSession)) {
        throw new AffectationClosedException();
      }
    }
    if (exist != null) {
      dossierSessionRepos.delete(exist);
    }

    Dossier affectedDossier = dossierRepos.findOne(dossier.getId());

    DossierHistoric dossierHistoric = new DossierHistoric();
    dossierHistoric.setStatus(affectedDossier.getStatus());
    dossierHistoric.setCreateDate(new Date());
    dossierHistoric.setDossier(affectedDossier);
    dossierHistoricRepo.save(dossierHistoric);

    affectedDossier.setStatus(DossierStatus.AFFECTED);

    SessionExamen examen = sessionExamenRepos.findOne(session.getId());
    examen.setCandidates(examen.getCandidates() + 1);

    DossierSession dossierSession = new DossierSession();
    dossierSession.setDateAffectation(new Date());
    dossierSession.setAssignedBy(securityContextProvider.getCurrentAdmin());
    dossierSession.setDossier(affectedDossier);
    dossierSession.setSessionExamen(examen);

    try {
      dossierRepos.save(affectedDossier);
      sessionExamenRepos.save(examen);
      dossierSessionRepos.save(dossierSession);
      return true;
    } catch (Exception e) {
      log.error(e.getMessage());
      return false;
    }
  }
예제 #2
0
  @Override
  public Boolean desaffecter(Dossier dossier) throws AffectationClosedException {
    DossierSession exist = dossierSessionRepos.findByDossierId(dossier.getId());
    if (exist == null || exist.getSessionExamen() == null || exist.getDossier() == null) {
      return false;
    }
    if (exist.getSessionExamen().getStatus() == SessionStatus.CLOSED) {
      GregorianCalendar calendar = new GregorianCalendar();
      calendar.add(Calendar.DAY_OF_MONTH, -1);

      Date dateSession = exist.getSessionExamen().getDateSession();
      Date yesterday = calendar.getTime();

      if (yesterday.before(dateSession)) {
        throw new AffectationClosedException();
      }
    }

    Dossier affectedDossier = dossierRepos.findOne(dossier.getId());

    DossierHistoric dossierHistoric = new DossierHistoric();
    dossierHistoric.setStatus(affectedDossier.getStatus());
    dossierHistoric.setCreateDate(new Date());
    dossierHistoric.setDossier(affectedDossier);
    dossierHistoricRepo.save(dossierHistoric);

    affectedDossier.setStatus(DossierStatus.ACCEPTED_FOR_TEST);

    SessionExamen examen = sessionExamenRepos.findOne(exist.getSessionExamen().getId());
    examen.setCandidates(examen.getCandidates() - 1);

    try {
      dossierRepos.save(affectedDossier);
      sessionExamenRepos.save(examen);
      dossierSessionRepos.delete(exist);
      return true;
    } catch (Exception e) {
      log.error(e.getMessage());
      return false;
    }
  }
예제 #3
0
  @Override
  public void cancelOrDeleteSession(Long sessionId) {
    SessionExamen session = sessionExamenRepos.findOne(sessionId);
    if (session.getStatus() == SessionStatus.CREATED
        || session.getStatus() == SessionStatus.CANCELED) {
      List<SessionNiveauEtude> matieres = sessionExamenNERepos.findBySessionExamenId(sessionId);
      sessionExamenNERepos.delete(matieres);
      sessionExamenRepos.delete(session);
    } else if (session.getStatus() == SessionStatus.OPEN) {
      List<DossierSession> dossierSessions =
          dossierSessionRepos.findBySessionExamenId(session.getId());
      for (DossierSession ds : dossierSessions) {
        Dossier dossier = dossierRepos.findOne(ds.getDossier().getId());

        DossierHistoric dossierHistoric = new DossierHistoric();
        dossierHistoric.setStatus(dossier.getStatus());
        dossierHistoric.setCreateDate(new Date());
        dossierHistoric.setDossier(dossier);
        dossierHistoricRepo.save(dossierHistoric);

        dossier.setStatus(DossierStatus.ACCEPTED_FOR_TEST);
        dossierRepos.save(dossier);
      }

      dossierSessionRepos.delete(dossierSessions);

      session.setStatus(SessionStatus.CANCELED);
      sessionExamenRepos.save(session);
    } else if (session.getStatus() == SessionStatus.CLOSED) {
      SimpleDateFormat format = new SimpleDateFormat(GlobalParameters.DATE_FORMAT);
      List<DossierSession> dossierSessions =
          dossierSessionRepos.findBySessionExamenId(session.getId());
      for (DossierSession dossiersession : dossierSessions) {
        Dossier dossier = dossiersession.getDossier();

        DossierHistoric dossierHistoric = new DossierHistoric();
        dossierHistoric.setStatus(dossier.getStatus());
        dossierHistoric.setCreateDate(new Date());
        dossierHistoric.setDossier(dossier);
        dossierHistoricRepo.save(dossierHistoric);

        dossier.setStatus(DossierStatus.ACCEPTED_FOR_TEST);
        dossierRepos.save(dossier);

        Map<String, Object> params = new HashMap<String, Object>();
        if (dossiersession.getSessionExamen().getDateSession() != null) {
          params.put(
              "dateSession", format.format(dossiersession.getSessionExamen().getDateSession()));
        } else {
          params.put("dateSession", "");
        }

        params.put("sessionNom", dossiersession.getSessionExamen().getNom());
        params.put("gender", dossier.getOwner().getGender().toString());
        params.put("lastname", dossier.getOwner().getLastName());
        params.put("firstname", dossier.getOwner().getFirstName());
        params.put("nomEnfant", dossier.getCandidat().getLastname());
        params.put("prenomEnfant", dossier.getCandidat().getFirstname());
        params.put("refdossier", dossier.getGeneratedNumDossier());

        try {
          EmailDTO email =
              emailService.populateEmail(
                  EmailType.SESSION_CANCELED,
                  dossier.getOwner().getEmail(),
                  sender,
                  params,
                  "",
                  "");
          emailService.prepare(email);

          InboxMessage message = new InboxMessage();
          message.setParentUser(dossier.getOwner());
          message.setSubject(email.getSubject());
          message.setContent(email.getMessage());
          message.setMsgDate(new Date());
          message.setMsgStatus(InboxMessageStatus.UNREAD);
          inboxMessageRepos.save(message);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

      dossierSessionRepos.delete(dossierSessions);

      session.setStatus(SessionStatus.CANCELED);
      sessionExamenRepos.save(session);
    }
  }