Skip to content

Commit

Permalink
feat(be): aggiunta logica template email
Browse files Browse the repository at this point in the history
* feat(be): aggiunta logica template email

inserimento logica per template email differenti + invio-compila questionario anonimo + modifica enteGprogramma-progetto

* fix(be): data.sql
  • Loading branch information
carloalbertosimoncini committed Jul 5, 2022
1 parent 6f195ff commit eedf937
Show file tree
Hide file tree
Showing 42 changed files with 990 additions and 110 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import it.pa.repdgt.shared.entityenum.EmailTemplateEnum;
import it.pa.repdgt.shared.exception.InvioEmailException;
import lombok.extern.slf4j.Slf4j;
import software.amazon.awssdk.services.pinpoint.model.GetEmailTemplateRequest;
Expand All @@ -21,13 +22,27 @@ public class EmailService {
private AWSPinpointService pinpoint;

public SendMessagesResponse inviaEmail(
@NotNull final String oggetto,
@NotNull final String indirizzoEmailDestinatario,
@NotNull final String nomeTemplateHtml) {
EmailTemplateEnum emailTemplate,
String[] args) {
try {
GetEmailTemplateResponse response= this.pinpoint.getClient().getEmailTemplate(GetEmailTemplateRequest.builder().templateName(nomeTemplateHtml).build());
String html = String.format(response.emailTemplateResponse().htmlPart(), "NomeUtente");
final SendMessagesRequest richiestaInvioEmail = this.pinpoint.creaRichiestaInvioEmail(oggetto, indirizzoEmailDestinatario, html);
GetEmailTemplateResponse response= this.pinpoint.getClient().getEmailTemplate(GetEmailTemplateRequest.builder().templateName(emailTemplate.getValueTemplate()).build());
String html = "";
switch(emailTemplate){
case CONSENSO:
html = response.emailTemplateResponse().htmlPart();
break;
case GEST_PROG:
case GEST_PROGE_PARTNER:
case FACILITATORE:
case RUOLO_CUSTOM:
html = String.format(response.emailTemplateResponse().htmlPart(), args[0], args[1]);
break;
case QUESTIONARIO_ONLINE:
html = String.format(response.emailTemplateResponse().htmlPart(), args[0]);
break;
}
final SendMessagesRequest richiestaInvioEmail = this.pinpoint.creaRichiestaInvioEmail(emailTemplate.getValueTemplateSubject(), indirizzoEmailDestinatario, html);
final SendMessagesResponse rispostaDaRichiestaInvioEmail = this.pinpoint.getClient().sendMessages(richiestaInvioEmail);
log.info("sendMessagesResponse = {}", rispostaDaRichiestaInvioEmail);
return rispostaDaRichiestaInvioEmail;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class CittadinoEntity implements Serializable {
@Column(name = "ID")
private Long id;

@Column(name = "CODICE_FISCALE", nullable = true)
@Column(name = "CODICE_FISCALE")
private String codiceFiscale;

@Column(name = "NOME", nullable = false)
Expand All @@ -37,10 +37,10 @@ public class CittadinoEntity implements Serializable {
@Column(name = "COGNOME", nullable = false)
private String cognome;

@Column(name = "TIPO_DOCUMENTO", nullable = false)
@Column(name = "TIPO_DOCUMENTO")
private String tipoDocumento;

@Column(name = "NUM_DOCUMENTO", nullable = false, unique = true)
@Column(name = "NUM_DOCUMENTO", unique = true)
private String numeroDocumento;

@Column(name = "GENERE", nullable = true)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package it.pa.repdgt.shared.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Email;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "questionario_inviato_online")
@Setter
@Getter
public class QuestionarioInviatoOnlineEntity implements Serializable {
private static final long serialVersionUID = -3997184755252624867L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "CODICE_FISCALE", nullable = true)
private String codiceFiscale;

@Column(name = "ID_QUESTIONARIO_COMPILATO", nullable = false, unique = true)
private String idQuestionarioCompilato;

@Column(name = "EMAIL", nullable = false, unique = true)
private String email;

@Column(name = "TOKEN", nullable = false, unique = true)
private String token;

@Temporal(TemporalType.DATE)
@Column(name = "DATA_ORA_CREAZIONE", nullable = true)
private Date dataOraCreazione;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package it.pa.repdgt.shared.entityenum;

import lombok.Getter;

@Getter
public enum EmailTemplateEnum {
CONSENSO("templ_consenso","")
,GEST_PROG("templ_gestore_programma","Ti diamo il benvenuto su Repubblica Digitale")
,GEST_PROGE_PARTNER("templ_gest_prog_and_partner","Ti diamo il benvenuto su Repubblica Digitale")
,FACILITATORE("templ_facilitatore","Ti diamo il benvenuto su Repubblica Digitale")
,RUOLO_CUSTOM("templ_custom","Ti diamo il benvenuto su Repubblica Digitale")
,QUESTIONARIO_ONLINE("templ_quest_online","Compila il questionario di Repubblica Digitale")
;

private String valueTemplate;
private String valueTemplateSubject;

private EmailTemplateEnum(String valueTemplate, String valueTemplateSubject) {
this.valueTemplate = valueTemplate;
this.valueTemplateSubject = valueTemplateSubject;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ public enum RuoloUtenteEnum {
,DEG("DELEGATO ENTE GESTORE DI PROGRAMMA")
,REGP("REFERENTE ENTE GESTORE DI PROGETTO")
,DEGP("DELEGATO ENTE GESTORE DI PROGETTO")
,REPP("REFERENTE ENTE PARTNER GESTORE DI PROGETTO")
,DEPP("DELEGATO ENTE PARTNER GESTORE DI PROGETTO")
,REPP("REFERENTE ENTE PARTNER")
,DEPP("DELEGATO ENTE PARTNER")
,FAC("FACILITATORE")
,VOL("VOLONTARIO")
;
Expand Down
17 changes: 17 additions & 0 deletions ms-ente/src/main/java/it/pa/repdgt/ente/mapper/EnteMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.springframework.stereotype.Component;

import it.pa.repdgt.ente.dto.EnteDto;
import it.pa.repdgt.ente.request.AggiornaEnteRequest;
import it.pa.repdgt.ente.request.NuovoEnteRequest;
import it.pa.repdgt.ente.resource.EnteResource;
import it.pa.repdgt.ente.resource.ListaEntiPaginatiResource;
Expand All @@ -22,6 +23,7 @@ public EnteResource toResourcefrom(EnteEntity enteEntity) {
enteResource.setTipologia(enteEntity.getTipologia());
enteResource.setPartitaIva(enteEntity.getPiva());
enteResource.setSedeLegale(enteEntity.getSedeLegale());
enteResource.setIndirizzoPec(enteEntity.getIndirizzoPec());
return enteResource;
}

Expand All @@ -39,6 +41,21 @@ public EnteEntity toEntityFrom(NuovoEnteRequest nuovoEnteRequest) {
return ente;
}

public EnteEntity toEntityFrom(AggiornaEnteRequest aggiornaEnteRequest) {
if(aggiornaEnteRequest == null) {
return null;
}
EnteEntity ente = new EnteEntity();
ente.setId(aggiornaEnteRequest.getId());
ente.setNome(aggiornaEnteRequest.getNome());
ente.setNomeBreve(aggiornaEnteRequest.getNomeBreve());
ente.setPiva(aggiornaEnteRequest.getPartitaIva());
ente.setTipologia(aggiornaEnteRequest.getTipologia());
ente.setSedeLegale(aggiornaEnteRequest.getSedeLegale());
ente.setIndirizzoPec(aggiornaEnteRequest.getIndirizzoPec());
return ente;
}

public ListaEntiPaginatiResource toResourcefrom(Page<EnteDto> paginaEnte) {
if(paginaEnte == null) {
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package it.pa.repdgt.ente.request;

import java.io.Serializable;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class AggiornaEnteRequest implements Serializable {
private static final long serialVersionUID = 3778729425460145918L;

@NotNull
@JsonProperty(value = "id", required = true)
private Long id;

@NotBlank
@JsonProperty(value = "nome", required = true)
private String nome;

@NotBlank
@JsonProperty(value = "nomeBreve", required = true)
private String nomeBreve;

@NotNull
@JsonProperty(value = "tipologia", required = true)
private String Tipologia;

@NotNull
@Pattern(regexp = "[0-9]{11}")
@JsonProperty(value = "piva", required = true)
private String partitaIva;

@JsonProperty(value = "sedeLegale", required = false)
private String sedeLegale;

@JsonProperty(value = "indirizzoPec", required = true)
private String indirizzoPec;
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public class NuovoEnteRequest implements Serializable {
@JsonProperty(value = "piva", required = true)
private String partitaIva;

@JsonProperty(value = "sedeLegale", required = true)
@JsonProperty(value = "sedeLegale", required = false)
private String sedeLegale;

@JsonProperty(value = "indirizzoPec")
@JsonProperty(value = "indirizzoPec", required = true)
private String indirizzoPec;
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ public class EnteResource implements Serializable {

@JsonProperty(value = "sedeLegale")
private String sedeLegale;

@JsonProperty(value = "indirizzoPec")
private String indirizzoPec;
}
27 changes: 25 additions & 2 deletions ms-ente/src/main/java/it/pa/repdgt/ente/restapi/EnteRestApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import it.pa.repdgt.ente.dto.ProgrammaDto;
import it.pa.repdgt.ente.exception.EnteException;
import it.pa.repdgt.ente.mapper.EnteMapper;
import it.pa.repdgt.ente.request.AggiornaEnteRequest;
import it.pa.repdgt.ente.request.NuovoEnteRequest;
import it.pa.repdgt.ente.request.ReferenteDelegatoGestoreProgettoRequest;
import it.pa.repdgt.ente.request.ReferenteDelegatoGestoreProgrammaRequest;
Expand Down Expand Up @@ -209,12 +210,34 @@ public void associaEntePartnerPerProgetto(
@PutMapping(path = "/{idEnte}")
@ResponseStatus(code = HttpStatus.OK)
public void aggiornaEnte(
@RequestBody @Valid NuovoEnteRequest nuovoEnteRequest,
@RequestBody @Valid AggiornaEnteRequest aggiornaEnteRequest,
@PathVariable(value = "idEnte") Long idEnte) {
EnteEntity enteEntity = this.enteMapper.toEntityFrom(nuovoEnteRequest);
EnteEntity enteEntity = this.enteMapper.toEntityFrom(aggiornaEnteRequest);
this.enteService.aggiornaEnte(enteEntity, idEnte);
}

//TOUCH-POINT 2.1.5 B - Modifica Ente Gestore Programma
@PutMapping(path = "/{idEnte}/gestore/{idProgramma}")
@ResponseStatus(code = HttpStatus.OK)
public void modificaEnteGestoreProgramma(
@RequestBody @Valid AggiornaEnteRequest aggiornaEnteRequest,
@PathVariable(value = "idEnte") Long idEnte,
@PathVariable(value = "idProgramma") Long idProgramma) {
EnteEntity enteEntity = this.enteMapper.toEntityFrom(aggiornaEnteRequest);
this.enteService.modificaEnteGestoreProgramma(enteEntity, idEnte, idProgramma);
}

//TOUCH-POINT 3.4 B - Modifica Ente Gestore Progetto
@PutMapping(path = "/{idEnte}/gestore/{idProgetto}")
@ResponseStatus(code = HttpStatus.OK)
public void modificaEnteGestoreProgetto(
@RequestBody @Valid AggiornaEnteRequest aggiornaEnteRequest,
@PathVariable(value = "idEnte") Long idEnte,
@PathVariable(value = "idProgetto") Long idProgetto) {
EnteEntity enteEntity = this.enteMapper.toEntityFrom(aggiornaEnteRequest);
this.enteService.modificaEnteGestoreProgetto(enteEntity, idEnte, idProgetto);
}

//TOUCH-POINT 5.2A - Elimina gestore programma
@DeleteMapping(path = "/{idEnte}/cancellagestoreprogramma/{idProgramma}")
@ResponseStatus(code = HttpStatus.NO_CONTENT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public void associaFacilitatoreAEnteSedeProgetto (
}

// TOUCH POINT - 2.2.14EX - Cancellazione o terminazione Associazione facilitatore a ente, sede, progetto a seconda dello stato del facilitatore
@DeleteMapping(path = "cancellaOTerminaAssociazione/facilitatore")
@PostMapping(path = "cancellaOTerminaAssociazione/facilitatore")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void cancellaOTerminaAssociazioneFacilitatoreAEnteSedeProgetto (
@RequestBody @Valid EnteSedeProgettoFacilitatoreRequest enteSedeProgettoFacilitatoreRequest) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
import it.pa.repdgt.shared.entity.UtenteEntity;
import it.pa.repdgt.shared.entity.key.EntePartnerKey;
import it.pa.repdgt.shared.entity.key.ReferentiDelegatiEntePartnerDiProgettoKey;
import it.pa.repdgt.shared.entityenum.EmailTemplateEnum;
import it.pa.repdgt.shared.entityenum.RuoloUtenteEnum;
import it.pa.repdgt.shared.entityenum.StatoEnum;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -173,7 +175,9 @@ public void associaReferenteODelegatoPartner(ReferenteDelegatoPartnerRequest ref

//invio email welcome al referente/delegato
try {
this.emailService.inviaEmail("oggetto_email", utenteFetch.getEmail(), "Test_template");
this.emailService.inviaEmail(utenteFetch.getEmail(),
EmailTemplateEnum.GEST_PROGE_PARTNER,
new String[] { utenteFetch.getNome(), RuoloUtenteEnum.valueOf(codiceRuolo).getValue() });
} catch (Exception ex) {
log.error("Impossibile inviare la mail ai Referente/Delegato dell'ente partner con id {} per progetto con id={}.", idEntePartner, idProgetto);
log.error("{}", ex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
import it.pa.repdgt.shared.entity.RuoloEntity;
import it.pa.repdgt.shared.entity.UtenteEntity;
import it.pa.repdgt.shared.entity.key.EnteSedeProgettoFacilitatoreKey;
import it.pa.repdgt.shared.entityenum.EmailTemplateEnum;
import it.pa.repdgt.shared.entityenum.PolicyEnum;
import it.pa.repdgt.shared.entityenum.RuoloUtenteEnum;
import it.pa.repdgt.shared.entityenum.StatoEnum;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -118,16 +120,17 @@ public void associaFacilitatoreAEnteSedeProgetto(EnteSedeProgettoFacilitatoreReq
progettoDBFEtch.setDataOraProgettoAttivabile(new Date());
this.progettoService.salvaOAggiornaProgetto(progettoDBFEtch);
}
// poi prendo ref/del dell'ente gestore di progetto e mandare la mail
List<String> emailReferentiEDelegatiEnteGestoreProgetto = this.referentiDelegatiEnteGestoreProgettoService.getEmailReferentiAndDelegatiPerProgetto(idProgetto);
emailReferentiEDelegatiEnteGestoreProgetto.forEach(emailReferenteODelegato -> {
try {
this.emailService.inviaEmail("oggetto_email", emailReferenteODelegato, "Test_template");
} catch (Exception ex) {
log.error("Impossibile inviare la mail ai Referente/Delegato dell'ente gestore progetto per progetto con id={}.", idProgetto);
log.error("{}", ex);
}
});
// // poi prendo ref/del dell'ente gestore di progetto e mandare la mail
/**************ELIMINATA la parte di notifica progetto ATTIVABILE**************/
// List<String> emailReferentiEDelegatiEnteGestoreProgetto = this.referentiDelegatiEnteGestoreProgettoService.getEmailReferentiAndDelegatiPerProgetto(idProgetto);
// emailReferentiEDelegatiEnteGestoreProgetto.forEach(emailReferenteODelegato -> {
// try {
// this.emailService.inviaEmail("oggetto_email", emailReferenteODelegato, "Test_template");
// } catch (Exception ex) {
// log.error("Impossibile inviare la mail ai Referente/Delegato dell'ente gestore progetto per progetto con id={}.", idProgetto);
// log.error("{}", ex);
// }
// });

RuoloEntity ruolo = this.ruoloService.getRuoloByCodiceRuolo(codiceRuolo);
UtenteEntity utenteFetch = this.utenteService.getUtenteByCodiceFiscale(codiceFiscaleUtente);
Expand All @@ -142,7 +145,9 @@ public void associaFacilitatoreAEnteSedeProgetto(EnteSedeProgettoFacilitatoreReq
if(StatoEnum.ATTIVO.getValue().equalsIgnoreCase(progettoDBFEtch.getStato())) {
//INVIO EMAIL WELCOME KIT AL FACILITATORE SSE IL PROGETTO E' ATTIVO
try {
this.emailService.inviaEmail("oggetto_email", utenteFetch.getEmail(), "Test_template");
this.emailService.inviaEmail(utenteFetch.getEmail(),
EmailTemplateEnum.FACILITATORE,
new String[] { utenteFetch.getNome(), RuoloUtenteEnum.valueOf(codiceRuolo).getValue() });
} catch (Exception ex) {
log.error("Impossibile inviare la mail al facilitatore del progetto con id={}.", idProgetto);
log.error("{}", ex);
Expand Down
Loading

0 comments on commit eedf937

Please sign in to comment.