Skip to content

Commit

Permalink
New feature: Added the ability to send Communications/Exclusions/Conv…
Browse files Browse the repository at this point in the history
…ocations via regular email
  • Loading branch information
mspasiano committed Jul 9, 2022
1 parent 55a0b43 commit 2d01b6b
Show file tree
Hide file tree
Showing 10 changed files with 224 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -323,14 +323,23 @@ public Response firmaConvocazioni(@Context HttpServletRequest req, @FormParam("q
@Path("invia-convocazioni")
@Produces(MediaType.APPLICATION_JSON)
public Response inviaConvocazioni(@Context HttpServletRequest req, @FormParam("query") String query, @FormParam("callId") String callId,
@FormParam("userNamePEC") String userName, @FormParam("passwordPEC") String password, @FormParam("addressFromApplication") AddressType addressFromApplication) throws IOException {
@FormParam("PEC") Boolean pec, @FormParam("userNamePEC") String userName, @FormParam("passwordPEC") String password, @FormParam("addressFromApplication") AddressType addressFromApplication) throws IOException {
LOGGER.debug("Invia convocazioni from query:" + query);
ResponseBuilder rb;
Session session = cmisService.getCurrentCMISSession(req);
try {
Long numConvocazioni = callService.inviaConvocazioni(session, cmisService.getCurrentBindingSession(req), query, Utility.getContextURL(req),
Long numConvocazioni = callService.inviaConvocazioni(
session,
cmisService.getCurrentBindingSession(req),
query,
Utility.getContextURL(req),
cmisService.getCMISUserFromSession(req).getId(),
callId, userName, password, addressFromApplication);
callId,
userName,
password,
addressFromApplication,
pec
);
rb = Response.ok(Collections.singletonMap("numConvocazioni", numConvocazioni));
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
Expand Down Expand Up @@ -362,14 +371,14 @@ public Response firmaEsclusioni(@Context HttpServletRequest req, @FormParam("que
@Path("invia-esclusioni")
@Produces(MediaType.APPLICATION_JSON)
public Response inviaEsclusioni(@Context HttpServletRequest req, @FormParam("query") String query, @FormParam("callId") String callId,
@FormParam("userNamePEC") String userName, @FormParam("passwordPEC") String password, @FormParam("addressFromApplication") AddressType addressFromApplication) throws IOException {
@FormParam("PEC") Boolean pec, @FormParam("userNamePEC") String userName, @FormParam("passwordPEC") String password, @FormParam("addressFromApplication") AddressType addressFromApplication) throws IOException {
LOGGER.debug("Invia convocazioni from query:" + query);
ResponseBuilder rb;
Session session = cmisService.getCurrentCMISSession(req);
try {
Long numEsclusioni = callService.inviaEsclusioni(session, cmisService.getCurrentBindingSession(req), query,
Utility.getContextURL(req), cmisService.getCMISUserFromSession(req).getId(),
callId, userName, password, addressFromApplication);
callId, userName, password, addressFromApplication, pec);
rb = Response.ok(Collections.singletonMap("numEsclusioni", numEsclusioni));
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
Expand Down Expand Up @@ -420,6 +429,7 @@ public Response inviaAllegato(@Context HttpServletRequest req, @FormParam("objec
@Path("invia-comunicazioni")
@Produces(MediaType.APPLICATION_JSON)
public Response inviaComunicazioni(@Context HttpServletRequest req, @FormParam("query") String query, @FormParam("callId") String callId,
@FormParam("PEC") Boolean pec,
@FormParam("userNamePEC") String userName,
@FormParam("passwordPEC") String password,
@FormParam("addressFromApplication") AddressType addressFromApplication) throws IOException {
Expand All @@ -429,7 +439,7 @@ public Response inviaComunicazioni(@Context HttpServletRequest req, @FormParam("
try {
Long numComunicazioni = callService.inviaComunicazioni(session, cmisService.getCurrentBindingSession(req), query,
Utility.getContextURL(req), cmisService.getCMISUserFromSession(req).getId(),
callId, userName, password, addressFromApplication);
callId, userName, password, addressFromApplication, pec);
rb = Response.ok(Collections.singletonMap("numComunicazioni", numComunicazioni));
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.text.StrSubstitutor;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
Expand Down Expand Up @@ -1553,7 +1554,7 @@ public void verifyPEC(VerificaPECTask verificaPECTask) {
}

public Long inviaConvocazioni(Session session, BindingSession bindingSession, String query, String contexURL, String userId,
String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
String callId, String userName, String password, AddressType addressFromApplication, Boolean pec) throws IOException {
Folder call = (Folder) session.getObject(callId);
ItemIterable<QueryResult> convocazioni = session.query(query, false);
long index = 0;
Expand All @@ -1566,6 +1567,9 @@ public Long inviaConvocazioni(Session session, BindingSession bindingSession, St
convocazioneObject.getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(),
true);
String contentURL = contexURL + "/rest/application/convocazione?nodeRef=" + convocazioneObject.getId();
if (!pec) {
addressFromApplication = AddressType.EMAIL;
}
String address = obtainAddress(convocazioneObject,
"jconon_convocazione:email_pec",
"jconon_convocazione:email",
Expand All @@ -1581,16 +1585,29 @@ public Long inviaConvocazioni(Session session, BindingSession bindingSession, St
.filter(Document.class::isInstance)
.map(Document.class::cast)
.collect(Collectors.toList());

SimplePECMail simplePECMail = new SimplePECMail(userName, password);
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setSubject(subject + " $$ " + convocazioneObject.getId());
String content = "Con riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, si invia in allegato la relativa convocazione.<br>" +
"Per i candidati che non hanno indicato in domanda un indirizzo PEC o che non lo hanno comunicato in seguito, e' richiesta conferma di ricezione della presente cliccando sul seguente <a href=\"" + contentURL + "\">link</a> , <br/>qualora non dovesse funzionare copi questo [" + contentURL + "] nella barra degli indirizzi del browser.<br/>";
String content = "Con riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, si invia in allegato la relativa convocazione.<br>";
if (pec) {
content += "Per i candidati che non hanno indicato in domanda un indirizzo PEC o che non lo hanno comunicato in seguito, ";
}
content += "é richiesta conferma di ricezione della presente cliccando sul seguente <a href=\"" + contentURL + "\">link</a>, <br/>qualora non dovesse funzionare copi questo [\"" + contentURL + "\"] nella barra degli indirizzi del browser.<br/><br/>";
content += "Distinti saluti.<br/><br/><br/><hr/>";
content += "<b>Questo messaggio e' stato generato da un sistema automatico. Si prega di non rispondere.</b><br/><br/>";

MultiPartEmail simplePECMail = pec ? new SimplePECMail(userName, password):new MultiPartEmail();
try {
simplePECMail.setFrom(userName);
simplePECMail.setSubject(subject + " $$ " + convocazioneObject.getId());
if (pec) {
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setFrom(userName);
} else {
final Optional<String> smtpuser = Optional.ofNullable(env.getProperty("mail.smtp.user")).filter(s -> !s.isEmpty());
final Optional<String> smtppassword = Optional.ofNullable(env.getProperty("mail.smtp.password")).filter(s -> !s.isEmpty());
if (smtpuser.isPresent() && smtppassword.isPresent()) {
simplePECMail.setAuthentication(smtpuser.get(),smtppassword.get());
}
simplePECMail.setHostName(env.getProperty("mail.smtp.host"));
simplePECMail.setFrom(env.getProperty("mail.from.default"));
}
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()),
Expand All @@ -1613,6 +1630,7 @@ public Long inviaConvocazioni(Session session, BindingSession bindingSession, St
}
}
simplePECMail.send();

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JCONON_CONVOCAZIONE_STATO, StatoComunicazione.SPEDITO.name());
convocazioneObject.updateProperties(properties);
Expand Down Expand Up @@ -1661,13 +1679,15 @@ public Long inviaConvocazioni(Session session, BindingSession bindingSession, St
}
}
}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_CONVOCAZIONE_STATO);
if (pec) {
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_CONVOCAZIONE_STATO);
}
return index;
}

public Long inviaEsclusioni(Session session, BindingSession bindingSession, String query, String contexURL,
String userId, String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
String userId, String callId, String userName, String password, AddressType addressFromApplication, Boolean pec) throws IOException {
Folder call = (Folder) session.getObject(callId);
ItemIterable<QueryResult> esclusioni = session.query(query, false);
String subject = i18NService.getLabel("subject-info", Locale.ITALIAN) +
Expand Down Expand Up @@ -1707,20 +1727,32 @@ public Long inviaEsclusioni(Session session, BindingSession bindingSession, Stri
.filter(Document.class::isInstance)
.map(Document.class::cast)
.collect(Collectors.toList());

if (!pec) {
addressFromApplication = AddressType.EMAIL;
}
String address = obtainAddress(esclusioneObject,
"jconon_esclusione:email_pec",
"jconon_esclusione:email",
addressFromApplication);

SimplePECMail simplePECMail = new SimplePECMail(userName, password);
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setSubject(subject + " $$ " + esclusioneObject.getId());
String content = "Con riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, si invia in allegato la relativa esclusione.<br>";
content += "Distinti saluti.<br/><br/><br/><hr/>";
content += "<b>Questo messaggio e' stato generato da un sistema automatico. Si prega di non rispondere.</b><br/><br/>";

MultiPartEmail simplePECMail = pec ? new SimplePECMail(userName, password):new MultiPartEmail();
try {
simplePECMail.setFrom(userName);
simplePECMail.setSubject(subject + " $$ " + esclusioneObject.getId());
if (pec) {
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setFrom(userName);
} else {
final Optional<String> smtpuser = Optional.ofNullable(env.getProperty("mail.smtp.user")).filter(s -> !s.isEmpty());
final Optional<String> smtppassword = Optional.ofNullable(env.getProperty("mail.smtp.password")).filter(s -> !s.isEmpty());
if (smtpuser.isPresent() && smtppassword.isPresent()) {
simplePECMail.setAuthentication(smtpuser.get(),smtppassword.get());
}
simplePECMail.setHostName(env.getProperty("mail.smtp.host"));
simplePECMail.setFrom(env.getProperty("mail.from.default"));
}
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()),
Expand Down Expand Up @@ -1791,8 +1823,10 @@ public Long inviaEsclusioni(Session session, BindingSession bindingSession, Stri
}
}
}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_ESCLUSIONE_STATO);
if (pec) {
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_ESCLUSIONE_STATO);
}
return index;
}

Expand Down Expand Up @@ -1866,7 +1900,7 @@ private String obtainAddress(Document document, String propertyEmailPec, String
}

public Long inviaComunicazioni(Session session, BindingSession bindingSession, String query, String contexURL, String userId,
String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
String callId, String userName, String password, AddressType addressFromApplication, Boolean pec) throws IOException {
Folder call = (Folder) session.getObject(callId);
String subject = i18NService.getLabel("subject-info", Locale.ITALIAN) +
i18NService.getLabel("subject-confirm-comunicazione",
Expand All @@ -1879,6 +1913,9 @@ public Long inviaComunicazioni(Session session, BindingSession bindingSession, S
aclService.setInheritedPermission(bindingSession,
comunicazioneObject.getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(),
true);
if (!pec) {
addressFromApplication = AddressType.EMAIL;
}
String address = obtainAddress(comunicazioneObject,
"jconon_comunicazione:email_pec",
"jconon_comunicazione:email",
Expand All @@ -1894,15 +1931,25 @@ public Long inviaComunicazioni(Session session, BindingSession bindingSession, S
.filter(Document.class::isInstance)
.map(Document.class::cast)
.collect(Collectors.toList());

SimplePECMail simplePECMail = new SimplePECMail(userName, password);
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setSubject(subject + " $$ " + comunicazioneObject.getId());
String content = "Con riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, si invia in allegato la relativa comunicazione.<br>";
content += "Distinti saluti.<br/><br/><br/><hr/>";
content += "<b>Questo messaggio e' stato generato da un sistema automatico. Si prega di non rispondere.</b><br/><br/>";

MultiPartEmail simplePECMail = pec ? new SimplePECMail(userName, password):new MultiPartEmail();
try {
simplePECMail.setFrom(userName);
simplePECMail.setSubject(subject + " $$ " + comunicazioneObject.getId());
if (pec) {
simplePECMail.setHostName(pecConfiguration.getHostSmtp());
simplePECMail.setFrom(userName);
} else {
final Optional<String> smtpuser = Optional.ofNullable(env.getProperty("mail.smtp.user")).filter(s -> !s.isEmpty());
final Optional<String> smtppassword = Optional.ofNullable(env.getProperty("mail.smtp.password")).filter(s -> !s.isEmpty());
if (smtpuser.isPresent() && smtppassword.isPresent()) {
simplePECMail.setAuthentication(smtpuser.get(),smtppassword.get());
}
simplePECMail.setHostName(env.getProperty("mail.smtp.host"));
simplePECMail.setFrom(env.getProperty("mail.from.default"));
}
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()),
Expand Down Expand Up @@ -1974,10 +2021,11 @@ public Long inviaComunicazioni(Session session, BindingSession bindingSession, S
}
}
}

}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_COMUNICAZIONE_STATO);
if (pec) {
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_COMUNICAZIONE_STATO);
}
return index;
}

Expand Down
Loading

0 comments on commit 2d01b6b

Please sign in to comment.