@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; } }
@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; } }
@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); } }