use of it.cnr.si.cool.jconon.io.model.InlineResponse201 in project cool-jconon by consiglionazionaledellericerche.
the class CallService method inviaEsclusioni.
public Long inviaEsclusioni(Session session, BindingSession bindingSession, String query, String contexURL, String userId, String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
Folder call = (Folder) session.getObject(callId);
ItemIterable<QueryResult> esclusioni = session.query(query, false);
String subject = i18NService.getLabel("subject-info", Locale.ITALIAN) + i18NService.getLabel("subject-confirm-esclusione", Locale.ITALIAN, call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString());
long index = 0;
for (QueryResult esclusione : esclusioni.getPage(Integer.MAX_VALUE)) {
Document esclusioneObject = (Document) session.getObject((String) esclusione.getPropertyById(PropertyIds.OBJECT_ID).getFirstValue());
final Optional<Folder> application = esclusioneObject.getParents().stream().findFirst();
if (application.isPresent() && !Optional.ofNullable(application.get().getPropertyValue(JCONONPropertyIds.APPLICATION_ESCLUSIONE_RINUNCIA.value())).isPresent()) {
Map<String, Serializable> properties = new HashMap<String, Serializable>();
properties.put(JCONONPropertyIds.APPLICATION_ESCLUSIONE_RINUNCIA.value(), ApplicationService.StatoDomanda.ESCLUSA.getValue());
cmisService.createAdminSession().getObject(application.get()).updateProperties(properties);
Map<String, ACLType> acesToRemove = new HashMap<String, ACLType>();
List<String> groups = getGroupsCallToApplication(call);
for (String group : groups) {
acesToRemove.put(group, ACLType.Contributor);
}
aclService.removeAcl(cmisService.getAdminSession(), application.get().getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(), acesToRemove);
}
aclService.setInheritedPermission(bindingSession, esclusioneObject.getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(), true);
String contentURL = contexURL + "/rest/application/esclusione?nodeRef=" + esclusioneObject.getId();
String user = esclusioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_USER.value());
List<Document> attachmentRelated = Optional.ofNullable(esclusioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_RELATED.value())).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()).stream().map(s -> session.getObject(s)).filter(Document.class::isInstance).map(Document.class::cast).collect(Collectors.toList());
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/>";
try {
simplePECMail.setFrom(userName);
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()), "text/html"), "", "", EmailAttachment.INLINE);
simplePECMail.attach(new ByteArrayDataSource(esclusioneObject.getContentStream().getStream(), esclusioneObject.getContentStreamMimeType()), esclusioneObject.getName(), esclusioneObject.getName());
if (!attachmentRelated.isEmpty()) {
for (Document doc : attachmentRelated) {
simplePECMail.attach(new ByteArrayDataSource(doc.getContentStream().getStream(), doc.getContentStreamMimeType()), doc.getName(), doc.getName());
aclService.addAcl(bindingSession, doc.getPropertyValue(CoolPropertyIds.ALFCMIS_NODEREF.value()), Stream.of(new AbstractMap.SimpleEntry<>(user, ACLType.Consumer)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
}
simplePECMail.send();
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JCONON_ESCLUSIONE_STATO, StatoComunicazione.SPEDITO.name());
esclusioneObject.updateProperties(properties);
index++;
} catch (EmailException | AddressException e) {
LOGGER.error("Cannot send email to {}", address, e);
}
if (Optional.ofNullable(ioClient).isPresent()) {
Optional<String> fiscalCode = esclusioneObject.getParents().stream().findAny().flatMap(folder -> Optional.ofNullable(folder.<String>getPropertyValue(JCONONPropertyIds.APPLICATION_CODICE_FISCALE.value())));
if (fiscalCode.isPresent()) {
try {
NewMessage newMessage = new NewMessage();
newMessage.setTimeToLive(7200);
newMessage.setFiscalCode(fiscalCode.get());
MessageContent2 messageContent2 = new MessageContent2();
messageContent2.setSubject(StringUtils.rightPad("Bando ".concat(call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString()), 10));
messageContent2.setMarkdown("# Esclusione\n" + "In riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, Le inviamo la seguente *Esclusione*, che può essere scaricata attraverso il seguente link:\n" + "\n" + "[Scarica l'Esclusione](" + contentURL + ")\n" + "\n" + "Distinti saluti.");
newMessage.setContent(messageContent2);
if (Optional.ofNullable(ioClient.getProfile(fiscalCode.get())).map(limitedProfile -> Optional.ofNullable(limitedProfile.getSenderAllowed()).orElse(Boolean.TRUE)).orElse(Boolean.FALSE)) {
final InlineResponse201 inlineResponse201 = ioClient.submitMessageforUser(fiscalCode.get(), newMessage);
LOGGER.info("The IO message was successfully sent to {} with Id: {}", fiscalCode.get(), inlineResponse201.getId());
}
} catch (Exception e) {
LOGGER.error("Cannot send IO message to {}", fiscalCode.get(), e);
}
}
}
}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_ESCLUSIONE_STATO);
return index;
}
use of it.cnr.si.cool.jconon.io.model.InlineResponse201 in project cool-jconon by consiglionazionaledellericerche.
the class CallService method inviaConvocazioni.
public Long inviaConvocazioni(Session session, BindingSession bindingSession, String query, String contexURL, String userId, String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
Folder call = (Folder) session.getObject(callId);
ItemIterable<QueryResult> convocazioni = session.query(query, false);
long index = 0;
String subject = i18NService.getLabel("subject-info", Locale.ITALIAN) + i18NService.getLabel("subject-confirm-convocazione", Locale.ITALIAN, call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString());
for (QueryResult convocazione : convocazioni.getPage(Integer.MAX_VALUE)) {
Document convocazioneObject = (Document) session.getObject((String) convocazione.getPropertyById(PropertyIds.OBJECT_ID).getFirstValue());
aclService.setInheritedPermission(bindingSession, convocazioneObject.getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(), true);
String contentURL = contexURL + "/rest/application/convocazione?nodeRef=" + convocazioneObject.getId();
String address = obtainAddress(convocazioneObject, "jconon_convocazione:email_pec", "jconon_convocazione:email", addressFromApplication);
String user = convocazioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_USER.value());
List<Document> attachmentRelated = Optional.ofNullable(convocazioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_RELATED.value())).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()).stream().map(s -> session.getObject(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 + " $$ " + 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/>";
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/>";
try {
simplePECMail.setFrom(userName);
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()), "text/html"), "", "", EmailAttachment.INLINE);
simplePECMail.attach(new ByteArrayDataSource(convocazioneObject.getContentStream().getStream(), convocazioneObject.getContentStreamMimeType()), convocazioneObject.getName(), convocazioneObject.getName());
if (!attachmentRelated.isEmpty()) {
for (Document doc : attachmentRelated) {
simplePECMail.attach(new ByteArrayDataSource(doc.getContentStream().getStream(), doc.getContentStreamMimeType()), doc.getName(), doc.getName());
aclService.addAcl(bindingSession, doc.getPropertyValue(CoolPropertyIds.ALFCMIS_NODEREF.value()), Stream.of(new AbstractMap.SimpleEntry<>(user, ACLType.Consumer)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
}
simplePECMail.send();
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JCONON_CONVOCAZIONE_STATO, StatoComunicazione.SPEDITO.name());
convocazioneObject.updateProperties(properties);
index++;
} catch (EmailException | AddressException e) {
LOGGER.error("Cannot send email to {}", address, e);
}
if (Optional.ofNullable(ioClient).isPresent()) {
Optional<String> fiscalCode = convocazioneObject.getParents().stream().findAny().flatMap(folder -> Optional.ofNullable(folder.<String>getPropertyValue(JCONONPropertyIds.APPLICATION_CODICE_FISCALE.value())));
if (fiscalCode.isPresent()) {
try {
NewMessage newMessage = new NewMessage();
newMessage.setTimeToLive(7200);
newMessage.setFiscalCode(fiscalCode.get());
MessageContent2 messageContent2 = new MessageContent2();
messageContent2.setSubject(StringUtils.rightPad("Bando ".concat(call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString()), 10));
messageContent2.setMarkdown("# Convocazione\n" + "In riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, Le inviamo la seguente *Convocazione*, che può essere scaricata attraverso il seguente link:\n" + "\n" + "[Scarica la Convocazione](" + contentURL + ")\n" + "\n" + "Distinti saluti.");
newMessage.setContent(messageContent2);
if (Optional.ofNullable(ioClient.getProfile(fiscalCode.get())).map(limitedProfile -> Optional.ofNullable(limitedProfile.getSenderAllowed()).orElse(Boolean.TRUE)).orElse(Boolean.FALSE)) {
final InlineResponse201 inlineResponse201 = ioClient.submitMessageforUser(fiscalCode.get(), newMessage);
LOGGER.info("The IO message was successfully sent to {} with Id: {}", fiscalCode.get(), inlineResponse201.getId());
}
} catch (Exception e) {
LOGGER.error("Cannot send IO message to {}", fiscalCode.get(), e);
}
}
}
}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_CONVOCAZIONE_STATO);
return index;
}
use of it.cnr.si.cool.jconon.io.model.InlineResponse201 in project cool-jconon by consiglionazionaledellericerche.
the class IOTest method newComunicazioneMesage.
@Test
public void newComunicazioneMesage() {
NewMessage newMessage = new NewMessage();
String fiscalCode = "AAAAAA00A00A000A";
newMessage.setTimeToLive(7200);
newMessage.setFiscalCode(fiscalCode);
MessageContent2 messageContent2 = new MessageContent2();
messageContent2.setSubject("Bando 315.58 PT - PROGETTAZIONE E-O GESTIONE IMPIANTI, STRUMENTAZIONI, SERVIZI");
messageContent2.setMarkdown("# Comunicazione\n" + "In riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, Le inviamo la seguente *comunicazione*, che può scaricare attraverso il seguente link:\n" + "\n" + "[Scarica la Comunicazione](https://selezionionline.cnr.it/jconon/rest/content?nodeRef=99588489-2914-4fc8-9658-493f69ffc433;1.0&guest=true)\n" + "\n" + "Distinti saluti.");
newMessage.setContent(messageContent2);
LimitedProfile profile = ioClient.getProfile(fiscalCode);
assertTrue(Optional.ofNullable(profile.getSenderAllowed()).orElse(Boolean.TRUE));
if (Optional.ofNullable(profile.getSenderAllowed()).orElse(Boolean.TRUE)) {
InlineResponse201 inlineResponse201 = ioClient.submitMessageforUser(fiscalCode, newMessage);
assertNotNull(inlineResponse201.getId());
}
}
use of it.cnr.si.cool.jconon.io.model.InlineResponse201 in project cool-jconon by consiglionazionaledellericerche.
the class IOTest method newConvocazioneMesage.
@Test
public void newConvocazioneMesage() {
NewMessage newMessage = new NewMessage();
String fiscalCode = "AAAAAA00A00A000A";
newMessage.setTimeToLive(7200);
newMessage.setFiscalCode(fiscalCode);
MessageContent2 messageContent2 = new MessageContent2();
messageContent2.setSubject("Bando 315.58 PT - PROGETTAZIONE E-O GESTIONE IMPIANTI, STRUMENTAZIONI, SERVIZI");
messageContent2.setMarkdown("# Convocazione\n" + "In riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, Le inviamo la seguente *convocazione*, che può essere scaricata attraverso il seguente link:\n" + "\n" + "[Scarica la Convocazione](https://selezionionline.cnr.it/jconon/rest/application/convocazione?nodeRef=99588489-2914-4fc8-9658-493f69ffc433;1.0&guest=true)\n" + "\n" + "Distinti saluti.");
newMessage.setContent(messageContent2);
LimitedProfile profile = ioClient.getProfile(fiscalCode);
assertTrue(Optional.ofNullable(profile.getSenderAllowed()).orElse(Boolean.TRUE));
if (Optional.ofNullable(profile.getSenderAllowed()).orElse(Boolean.TRUE)) {
InlineResponse201 inlineResponse201 = ioClient.submitMessageforUser(fiscalCode, newMessage);
assertNotNull(inlineResponse201.getId());
}
}
use of it.cnr.si.cool.jconon.io.model.InlineResponse201 in project cool-jconon by consiglionazionaledellericerche.
the class CallService method inviaComunicazioni.
public Long inviaComunicazioni(Session session, BindingSession bindingSession, String query, String contexURL, String userId, String callId, String userName, String password, AddressType addressFromApplication) throws IOException {
Folder call = (Folder) session.getObject(callId);
String subject = i18NService.getLabel("subject-info", Locale.ITALIAN) + i18NService.getLabel("subject-confirm-comunicazione", Locale.ITALIAN, call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString());
ItemIterable<QueryResult> comunicazioni = session.query(query, false);
long index = 0;
for (QueryResult comunicazione : comunicazioni.getPage(Integer.MAX_VALUE)) {
Document comunicazioneObject = (Document) session.getObject((String) comunicazione.getPropertyById(PropertyIds.OBJECT_ID).getFirstValue());
aclService.setInheritedPermission(bindingSession, comunicazioneObject.getProperty(CoolPropertyIds.ALFCMIS_NODEREF.value()).getValueAsString(), true);
String address = obtainAddress(comunicazioneObject, "jconon_comunicazione:email_pec", "jconon_comunicazione:email", addressFromApplication);
String contentURL = contexURL + "/rest/application/comunicazione?nodeRef=" + comunicazioneObject.getId();
String user = comunicazioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_USER.value());
List<Document> attachmentRelated = Optional.ofNullable(comunicazioneObject.<String>getPropertyValue(JCONONPropertyIds.ATTACHMENT_RELATED.value())).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()).stream().map(s -> session.getObject(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/>";
try {
simplePECMail.setFrom(userName);
simplePECMail.setReplyTo(Collections.singleton(new InternetAddress("undisclosed-recipients")));
simplePECMail.setTo(Collections.singleton(new InternetAddress(address)));
simplePECMail.attach(new ByteArrayDataSource(new ByteArrayInputStream(content.getBytes()), "text/html"), "", "", EmailAttachment.INLINE);
simplePECMail.attach(new ByteArrayDataSource(comunicazioneObject.getContentStream().getStream(), comunicazioneObject.getContentStreamMimeType()), comunicazioneObject.getName(), comunicazioneObject.getName());
if (!attachmentRelated.isEmpty()) {
for (Document doc : attachmentRelated) {
simplePECMail.attach(new ByteArrayDataSource(doc.getContentStream().getStream(), doc.getContentStreamMimeType()), doc.getName(), doc.getName());
aclService.addAcl(bindingSession, doc.getPropertyValue(CoolPropertyIds.ALFCMIS_NODEREF.value()), Stream.of(new AbstractMap.SimpleEntry<>(user, ACLType.Consumer)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
}
simplePECMail.send();
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JCONON_COMUNICAZIONE_STATO, StatoComunicazione.SPEDITO.name());
comunicazioneObject.updateProperties(properties);
index++;
} catch (EmailException | AddressException e) {
LOGGER.error("Cannot send email to {}", address, e);
}
if (Optional.ofNullable(ioClient).isPresent()) {
Optional<String> fiscalCode = comunicazioneObject.getParents().stream().findAny().flatMap(folder -> Optional.ofNullable(folder.<String>getPropertyValue(JCONONPropertyIds.APPLICATION_CODICE_FISCALE.value())));
if (fiscalCode.isPresent()) {
try {
NewMessage newMessage = new NewMessage();
newMessage.setTimeToLive(7200);
newMessage.setFiscalCode(fiscalCode.get());
MessageContent2 messageContent2 = new MessageContent2();
messageContent2.setSubject(StringUtils.rightPad("Bando ".concat(call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString()), 10));
messageContent2.setSubject(StringUtils.rightPad("Bando ".concat(call.getProperty(JCONONPropertyIds.CALL_CODICE.value()).getValueAsString()), 80));
messageContent2.setMarkdown("# Comunicazione\n" + "In riferimento alla Sua domanda di partecipazione al concorso indicato in oggetto, Le inviamo la seguente *Comunicazione*, che può essere scaricata attraverso il seguente link:\n" + "\n" + "[Scarica la Comunicazione](" + contentURL + ")\n" + "\n" + "Distinti saluti.");
newMessage.setContent(messageContent2);
if (Optional.ofNullable(ioClient.getProfile(fiscalCode.get())).map(limitedProfile -> Optional.ofNullable(limitedProfile.getSenderAllowed()).orElse(Boolean.TRUE)).orElse(Boolean.FALSE)) {
final InlineResponse201 inlineResponse201 = ioClient.submitMessageforUser(fiscalCode.get(), newMessage);
LOGGER.info("The IO message was successfully sent to {} with Id: {}", fiscalCode.get(), inlineResponse201.getId());
}
} catch (Exception e) {
LOGGER.error("Cannot send IO message to {}", fiscalCode.get(), e);
}
}
}
}
callRepository.removeVerificaPECTask(subject);
callRepository.verificaPECTask(userName, password, subject, JCONON_COMUNICAZIONE_STATO);
return index;
}
Aggregations