@Override public Boolean launchSession(SessionExamen session, String link) { List<DossierSession> dossierSessions = dossierSessionRepos.findBySessionExamenId(session.getId()); for (DossierSession dossiersession : dossierSessions) { Dossier dossier = dossierRepos.findOne(dossiersession.getDossier().getId()); String token = Base64.encode( dossiersession.getDossier().getGeneratedNumDossier() + "" + (new Date()).toString()); token = token.replace("=", "E"); dossiersession.setGeneratedConvocationPDFPath(token); DossierHistoric dossierHistoric = new DossierHistoric(); dossierHistoric.setStatus(dossier.getStatus()); dossierHistoric.setCreateDate(new Date()); dossierHistoric.setDossier(dossier); dossierHistoricRepo.save(dossierHistoric); dossier.setStatus(DossierStatus.INVITED_TO_TEST); dossierRepos.save(dossier); dossierSessionRepos.save(dossiersession); if (dossier.getNiveauEtude().getEmailConvocation() == null || !dossier.getNiveauEtude().getEmailConvocation()) continue; // preparing the email data Map<String, Object> params = new HashMap<String, Object>(); 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()); params.put("link", link + "resource/convocation?number=" + token); try { EmailDTO email = emailService.populateEmail( EmailType.CONVOCATED_FOR_TEST, 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(); return false; } } session = sessionExamenRepos.findOne(session.getId()); session.setStatus(SessionStatus.CLOSED); sessionExamenRepos.save(session); return true; }
@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); } }