Aggiornata sincronizzazione

This commit is contained in:
Giancarlo Panichi 2022-08-02 20:12:50 +02:00
parent c81a54f25b
commit 1ffb8c4a82
16 changed files with 573 additions and 97 deletions

View File

@ -15,6 +15,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import it.cnr.isti.epasmed.config.ApplicationProperties; import it.cnr.isti.epasmed.config.ApplicationProperties;
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
import it.cnr.isti.epasmed.epas.model.EPASPersonDays; import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
@Component @Component
@ -79,20 +80,21 @@ public class EPASOffSiteWorksClient {
return listEPASPersonDays; return listEPASPersonDays;
} }
public List<EPASPersonDays> getListByOfficeCodeId(String id, String year, String month) {
public List<EPASOffSiteWorks> getListByOfficeCodeId(String id, String year, String month) {
log.info("Retrieving Off Site Works List by office code id: {}", id); log.info("Retrieving Off Site Works List by office code id: {}", id);
Map<String, String> uriVariables = new HashMap<>(); Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("sedeId", id); uriVariables.put("sedeId", id);
uriVariables.put("year", year); uriVariables.put("year", year);
uriVariables.put("month", month); uriVariables.put("month", month);
ResponseEntity<List<EPASPersonDays>> responseEntity = rt.exchange(appProps.getDatasourceEpasRest().getRestUrl() ResponseEntity<List<EPASOffSiteWorks>> responseEntity = rt.exchange(appProps.getDatasourceEpasRest().getRestUrl()
+ "/v3/personDays/offSiteWorkByPersonAndMonth?sedeId={sedeId}&year={year}&month={month}", + "/v3/personDays/offSiteWorkByOfficeAndMonth?sedeId={sedeId}&year={year}&month={month}",
HttpMethod.GET, null, new ParameterizedTypeReference<List<EPASPersonDays>>() { HttpMethod.GET, null, new ParameterizedTypeReference<List<EPASOffSiteWorks>>() {
}, uriVariables); }, uriVariables);
List<EPASPersonDays> listEPASPersonDays = responseEntity.getBody(); List<EPASOffSiteWorks> listEPASOffSiteWorks = responseEntity.getBody();
log.info("Retrieved Off Site Works List: {}", listEPASPersonDays); log.info("Retrieved Off Site Works List: {}", listEPASOffSiteWorks);
return listEPASPersonDays; return listEPASOffSiteWorks;
} }
} }

View File

@ -0,0 +1,28 @@
package it.cnr.isti.epasmed.epas.model;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EPASOffSiteWorks implements Serializable {
private static final long serialVersionUID = 1L;
private EPASAbsences[] absences;
private String date;
private Integer difference;
private String id;
private Boolean isHoliday;
private Boolean isTicketAvailable;
private EPASPersons person;
private Integer progressive;
private EPASStampings[] stampings;
private Integer timeAtWork;
}

View File

@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import it.cnr.isti.epasmed.epas.client.EPASOffSiteWorksClient; import it.cnr.isti.epasmed.epas.client.EPASOffSiteWorksClient;
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
import it.cnr.isti.epasmed.epas.model.EPASPersonDays; import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
@Service @Service
@ -26,7 +27,7 @@ public class EPASOffSiteWorksService {
return epasOffSiteWorksClient.getListByPersonEmail(email, year, month); return epasOffSiteWorksClient.getListByPersonEmail(email, year, month);
} }
public List<EPASPersonDays> getListByOfficeCodeId(String id, String year, String month) { public List<EPASOffSiteWorks> getListByOfficeCodeId(String id, String year, String month) {
return epasOffSiteWorksClient.getListByOfficeCodeId(id, year, month); return epasOffSiteWorksClient.getListByOfficeCodeId(id, year, month);
} }

View File

@ -0,0 +1,27 @@
package it.cnr.isti.epasmed.sistemainformativo.model;
import java.io.Serializable;
import java.sql.Timestamp;
import java.sql.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SILavoroFuoriSede implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Integer idpersona;
private String cf;
private Date giorno;
private String luogo;
private String motivo;
private String way;
private Timestamp data_mod;
private String flag_del;
private Long id_flusso;
}

View File

@ -0,0 +1,38 @@
package it.cnr.isti.epasmed.sistemainformativo.repository;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
@Repository
public class SILavoroFuoriSedeRepository {
private static final Logger logger = LoggerFactory.getLogger(SILavoroFuoriSedeRepository.class);
private JdbcTemplate jdbcTemplate;
//
public SILavoroFuoriSedeRepository(final @Qualifier("sistemaInformativoDataSource") DataSource dataSource) {
super();
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public void writeNewFlux(Long fluxId, SILavoroFuoriSede siLavoroFuoriSede) {
jdbcTemplate.update("INSERT INTO epas_lavoro_fuori_sede (id,idpersona,cf,"
+ "giorno,luogo,motivo,way,data_mod,flag_del,id_flusso) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?)",
siLavoroFuoriSede.getId(),siLavoroFuoriSede.getIdpersona(),siLavoroFuoriSede.getCf(),
siLavoroFuoriSede.getGiorno(),siLavoroFuoriSede.getLuogo(),siLavoroFuoriSede.getMotivo(),
siLavoroFuoriSede.getWay(),siLavoroFuoriSede.getData_mod(),siLavoroFuoriSede.getFlag_del(),fluxId);
logger.debug("Writed SILavoroFuoriSede: {}",siLavoroFuoriSede);
}
}

View File

@ -34,7 +34,7 @@ public class SIMasterLogRepository {
public void startFluxReads() { public void startFluxReads() {
logger.info("Iniziato Flusso in lettura"); logger.info("Iniziato Flusso in lettura");
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper) " jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper) "
+ "VALUES ('epas','anagrafico,mail,telefoni,gruppi','L',current_timestamp)"); + "VALUES ('epas','anagrafico,mail,telefoni,gruppi,gruppo_pers','L',current_timestamp)");
logger.info("Flusso in lettura aperto"); logger.info("Flusso in lettura aperto");
} }
@ -75,8 +75,8 @@ public class SIMasterLogRepository {
public Long startFluxWrites() throws Exception { public Long startFluxWrites() throws Exception {
logger.info("Iniziato Flusso in scrittura"); logger.info("Iniziato Flusso in scrittura");
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper)" jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper)"
+ " VALUES ('epas','epas_cartellini, epas_cartellini_rendicontazioni, epas_festivita," + " VALUES ('epas','epas_cartellini, epas_cartellini_rendicontazioni,"
+ " epas_orario, epas_pers_orario," + " epas_orario,"
+ " epas_lavoro_fuori_sede'," + " epas_lavoro_fuori_sede',"
+ " 'S',current_timestamp)"); + " 'S',current_timestamp)");
logger.info("Flusso in scrittura aperto"); logger.info("Flusso in scrittura aperto");

View File

@ -0,0 +1,35 @@
package it.cnr.isti.epasmed.sistemainformativo.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
import it.cnr.isti.epasmed.sistemainformativo.repository.SILavoroFuoriSedeRepository;
/**
* Service class for managing Lavoro Fuori Sede.
*/
@Service
@Transactional("sistemaInformativoTransactionManager")
public class SILavoroFuoriSedeService {
private final Logger log = LoggerFactory.getLogger(getClass());
private final SILavoroFuoriSedeRepository siLavoroFuoriSedeRepository;
public SILavoroFuoriSedeService(SILavoroFuoriSedeRepository siLavoroFuoriSedeRepository) {
super();
this.siLavoroFuoriSedeRepository = siLavoroFuoriSedeRepository;
}
public void writeNewFlux(Long fluxId, SILavoroFuoriSede siLavoroFuoriSede) {
log.debug("Write SILavoroFuoriSede Flux = {}",fluxId);
siLavoroFuoriSedeRepository.writeNewFlux(fluxId,siLavoroFuoriSede);
}
}

View File

@ -6,6 +6,7 @@ import java.time.LocalDateTime;
import java.time.YearMonth; import java.time.YearMonth;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -31,6 +32,7 @@ import it.cnr.isti.epasmed.epas.mapper.EPASPersonsMapper;
import it.cnr.isti.epasmed.epas.model.EPASAbsences; import it.cnr.isti.epasmed.epas.model.EPASAbsences;
import it.cnr.isti.epasmed.epas.model.EPASAffiliations; import it.cnr.isti.epasmed.epas.model.EPASAffiliations;
import it.cnr.isti.epasmed.epas.model.EPASGroups; import it.cnr.isti.epasmed.epas.model.EPASGroups;
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
import it.cnr.isti.epasmed.epas.model.EPASPersonDays; import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
import it.cnr.isti.epasmed.epas.model.EPASPersons; import it.cnr.isti.epasmed.epas.model.EPASPersons;
import it.cnr.isti.epasmed.epas.model.EPASStampings; import it.cnr.isti.epasmed.epas.model.EPASStampings;
@ -39,6 +41,7 @@ import it.cnr.isti.epasmed.epas.model.EPASValidates;
import it.cnr.isti.epasmed.epas.model.EPASWorkingTimeTypes; import it.cnr.isti.epasmed.epas.model.EPASWorkingTimeTypes;
import it.cnr.isti.epasmed.epas.service.EPASAffiliationsService; import it.cnr.isti.epasmed.epas.service.EPASAffiliationsService;
import it.cnr.isti.epasmed.epas.service.EPASGroupsService; import it.cnr.isti.epasmed.epas.service.EPASGroupsService;
import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService;
import it.cnr.isti.epasmed.epas.service.EPASPersonsService; import it.cnr.isti.epasmed.epas.service.EPASPersonsService;
import it.cnr.isti.epasmed.epas.service.EPASTimeCardsService; import it.cnr.isti.epasmed.epas.service.EPASTimeCardsService;
import it.cnr.isti.epasmed.epas.service.EPASValidatesService; import it.cnr.isti.epasmed.epas.service.EPASValidatesService;
@ -51,6 +54,7 @@ import it.cnr.isti.epasmed.sistemainformativo.model.SICartelliniRendicontazioni;
import it.cnr.isti.epasmed.sistemainformativo.model.SIEmail; import it.cnr.isti.epasmed.sistemainformativo.model.SIEmail;
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppi; import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppi;
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppiPers; import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppiPers;
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
import it.cnr.isti.epasmed.sistemainformativo.model.SIOrario; import it.cnr.isti.epasmed.sistemainformativo.model.SIOrario;
import it.cnr.isti.epasmed.sistemainformativo.model.SITelefoni; import it.cnr.isti.epasmed.sistemainformativo.model.SITelefoni;
import it.cnr.isti.epasmed.sistemainformativo.service.SIAnagraficoService; import it.cnr.isti.epasmed.sistemainformativo.service.SIAnagraficoService;
@ -59,6 +63,7 @@ import it.cnr.isti.epasmed.sistemainformativo.service.SICartelliniService;
import it.cnr.isti.epasmed.sistemainformativo.service.SIEmailService; import it.cnr.isti.epasmed.sistemainformativo.service.SIEmailService;
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiPersService; import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiPersService;
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiService; import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiService;
import it.cnr.isti.epasmed.sistemainformativo.service.SILavoroFuoriSedeService;
import it.cnr.isti.epasmed.sistemainformativo.service.SIMasterLogService; import it.cnr.isti.epasmed.sistemainformativo.service.SIMasterLogService;
import it.cnr.isti.epasmed.sistemainformativo.service.SIOrarioService; import it.cnr.isti.epasmed.sistemainformativo.service.SIOrarioService;
import it.cnr.isti.epasmed.sistemainformativo.service.SITelefoniService; import it.cnr.isti.epasmed.sistemainformativo.service.SITelefoniService;
@ -103,6 +108,8 @@ public class SyncService {
SICartelliniRendicontazioniService siCartelliniRendicontazioniService; SICartelliniRendicontazioniService siCartelliniRendicontazioniService;
@Autowired @Autowired
SIOrarioService siOrarioService; SIOrarioService siOrarioService;
@Autowired
SILavoroFuoriSedeService siLavoroFuoriSedeService;
@Autowired @Autowired
EPASPersonsService epasPersonsService; EPASPersonsService epasPersonsService;
@ -114,11 +121,12 @@ public class SyncService {
EPASAffiliationsService epasAffiliationsService; EPASAffiliationsService epasAffiliationsService;
@Autowired @Autowired
EPASWorkingTimeTypesService epasWorkingTimeTypesService; EPASWorkingTimeTypesService epasWorkingTimeTypesService;
@Autowired @Autowired
EPASTimeCardsService epasTimeCardsService; EPASTimeCardsService epasTimeCardsService;
@Autowired @Autowired
EPASValidatesService epasValidatesService; EPASValidatesService epasValidatesService;
@Autowired
EPASOffSiteWorksService epasOffSiteWorksService;
private boolean banagrafico; private boolean banagrafico;
private boolean bemail; private boolean bemail;
@ -134,15 +142,25 @@ public class SyncService {
private boolean blavoro_fuori_sede; private boolean blavoro_fuori_sede;
private boolean baspettative; private boolean baspettative;
public void executeReads() throws Exception { private void setBReadTables() {
banagrafico = false; banagrafico = false;
bemail = false; bemail = false;
btelefoni = false; btelefoni = false;
bgruppi = false; bgruppi = false;
bgruppo_pers = false; bgruppo_pers = false;
// bposizioni = false; }
// bproroghe = false;
private void setBWriteTables() {
bcartellini = false;
bcartellini_rendicontazioni = false;
borario = false;
bpers_orario = false;
blavoro_fuori_sede = false;
// baspettative=false;
}
public void executeReads() throws Exception {
setBReadTables();
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI(); List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
siMasterLogService.startFluxReads(); siMasterLogService.startFluxReads();
readData(tabsSI); readData(tabsSI);
@ -150,36 +168,42 @@ public class SyncService {
} }
public void executeWrites() throws Exception { public void executeWrites(String year, String month) throws Exception {
borario = false; setBWriteTables();
bcartellini = false;
bcartellini_rendicontazioni = false;
bpers_orario = false;
blavoro_fuori_sede = false;
baspettative = false;
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI(); List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
Long fluxId = siMasterLogService.startFluxWrites(); Long fluxId = siMasterLogService.startFluxWrites();
writeData(fluxId, tabsSI); writeData(fluxId, tabsSI, year, month);
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
}
public void executeWritesOrario() throws Exception {
setBWriteTables();
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
Long fluxId = siMasterLogService.startFluxWrites();
writeOrarioData(fluxId, tabsSI);
siMasterLogService.closeFluxWrites(fluxId, writeTabs()); siMasterLogService.closeFluxWrites(fluxId, writeTabs());
} }
public void executeTimeCardsWrites() throws Exception { public void executeWritesTimeCards(String year, String month) throws Exception {
borario = false; setBWriteTables();
bcartellini = false;
bcartellini_rendicontazioni = false;
bpers_orario = false;
blavoro_fuori_sede = false;
baspettative = false;
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI(); List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
Long fluxId = siMasterLogService.startFluxWrites(); Long fluxId = siMasterLogService.startFluxWrites();
writeTimeCardsData(fluxId, tabsSI); writeTimeCardsData(fluxId, tabsSI, year, month);
siMasterLogService.closeFluxWrites(fluxId, writeTabs()); siMasterLogService.closeFluxWrites(fluxId, writeTabs());
} }
public void executeWriteOffSiteWorks(String year, String month) throws Exception {
setBWriteTables();
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
Long fluxId = siMasterLogService.startFluxWrites();
writeOffSiteWorksData(fluxId, tabsSI, year, month);
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
}
private void readData(List<TabsSI> tabsSI) { private void readData(List<TabsSI> tabsSI) {
// TabsSI posizioniTab = null; // TabsSI posizioniTab = null;
// TabsSI prorogheTab = null; // TabsSI prorogheTab = null;
@ -780,8 +804,7 @@ public class SyncService {
return writeTabs; return writeTabs;
} }
private void writeData(Long fluxId, List<TabsSI> tabsSI) { private void writeOrarioData(Long fluxId, List<TabsSI> tabsSI) {
for (TabsSI tab : tabsSI) { for (TabsSI tab : tabsSI) {
logger.info("TabSI: {}", tab); logger.info("TabSI: {}", tab);
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty() if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
@ -816,7 +839,11 @@ public class SyncService {
} }
} }
private void writeTimeCardsData(Long fluxId, List<TabsSI> tabsSI) throws Exception { private void writeData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
logger.info("Report {}-{}", year, month);
LocalDateTime now = LocalDateTime.now();
checkValidMonthToSend(year, month);
TimeCardsReporting timeCardsReporting = createTimeCardReporting(fluxId, year, month, now);
for (TabsSI tab : tabsSI) { for (TabsSI tab : tabsSI) {
logger.info("TabSI: {}", tab); logger.info("TabSI: {}", tab);
@ -836,7 +863,46 @@ public class SyncService {
case "cartellini": case "cartellini":
break; break;
case "cartellini_rendicontazioni": case "cartellini_rendicontazioni":
syncCartelliniRendicontazioni(fluxId, tab); syncCartelliniRendicontazioni(fluxId, tab, year, month, now, timeCardsReporting);
break;
case "lavoro_fuori_sede":
syncLavoroFuoriSede(fluxId, tab, year, month, now);
break;
// case "aspettative":
// syncAspettative(fluxId,tab);
// break;
default:
break;
}
}
}
}
private void writeTimeCardsData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
logger.info("Report {}-{}", year, month);
LocalDateTime now = LocalDateTime.now();
checkValidMonthToSend(year, month);
TimeCardsReporting timeCardsReporting = createTimeCardReporting(fluxId, year, month, now);
for (TabsSI tab : tabsSI) {
logger.info("TabSI: {}", tab);
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
&& tab.getOperazioni().compareTo("W") == 0) {
if (tab.getNome() == null || tab.getNome().isEmpty()) {
continue;
}
switch (tab.getNome()) {
// case "orario":
// syncOrario(fluxId, tab);
// break;
// case "pers_orario":
// syncPersOrario(fluxId,tab);
// break;
case "cartellini":
break;
case "cartellini_rendicontazioni":
syncCartelliniRendicontazioni(fluxId, tab, year, month, now, timeCardsReporting);
break; break;
// case "lavoro_fuori_sede": // case "lavoro_fuori_sede":
// syncLavoroFuoriSede(fluxId,tab); // syncLavoroFuoriSede(fluxId,tab);
@ -852,6 +918,45 @@ public class SyncService {
} }
} }
private void writeOffSiteWorksData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
logger.info("Report {}-{}", year, month);
LocalDateTime now = LocalDateTime.now();
checkValidMonthToSend(year, month);
for (TabsSI tab : tabsSI) {
logger.info("TabSI: {}", tab);
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
&& tab.getOperazioni().compareTo("W") == 0) {
if (tab.getNome() == null || tab.getNome().isEmpty()) {
continue;
}
switch (tab.getNome()) {
// case "orario":
// syncOrario(fluxId, tab);
// break;
// case "pers_orario":
// syncPersOrario(fluxId,tab);
// break;
// case "cartellini":
// break;
// case "cartellini_rendicontazioni":
// syncCartelliniRendicontazioni(fluxId, tab);
// break;
case "lavoro_fuori_sede":
syncLavoroFuoriSede(fluxId, tab, year, month, now);
break;
// case "aspettative":
// syncAspettative(fluxId,tab);
// break;
default:
break;
}
}
}
}
private void syncOrario(Long fluxId, TabsSI tab) { private void syncOrario(Long fluxId, TabsSI tab) {
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) { if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
logger.error("Invalid Id Flusso for tab: {}", tab); logger.error("Invalid Id Flusso for tab: {}", tab);
@ -894,50 +999,130 @@ public class SyncService {
} }
} }
private void syncCartelliniRendicontazioni(Long fluxId, TabsSI tab) throws Exception { private void syncLavoroFuoriSede(Long fluxId, TabsSI tab, String year, String month, LocalDateTime now)
throws Exception {
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) { if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
logger.error("Invalid Id Flusso for tab: {}", tab); logger.error("Invalid Id Flusso for tab: {}", tab);
return; return;
} }
Optional<TimeCardsReporting> lastTcR = timeCardsReportingService.getLastTimeCardsReporting(); logger.info("Reference: {}-{}", year, month);
if (!lastTcR.isPresent()) {
logger.error("Invalid TimeCardsReporting start point: {}", tab); List<EPASOffSiteWorks> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(ISTI_OFFICE_CODEID,
year, month);
if (epasOffSiteWorksList == null || epasOffSiteWorksList.isEmpty()) {
logger.info("OffSiteWorks not found for: {} - {} ", year, month);
return; return;
} }
Integer year = lastTcR.get().getYear();
Integer month = lastTcR.get().getMonth();
YearMonth nextMonthToSent = YearMonth.of(year, month); // "2021-02-03T09:49:05.231072"
nextMonthToSent = nextMonthToSent.plusMonths(1); DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendPattern(".SSSSSS").optionalEnd()
.optionalStart().appendZoneOrOffsetId().optionalEnd().toFormatter();
String yearRef = String.valueOf(nextMonthToSent.getYear()); // SI
String monthRef = String.valueOf(nextMonthToSent.getMonthValue()); for (EPASOffSiteWorks offSiteWorks : epasOffSiteWorksList) {
logger.info("Writing OffSiteWorks: {}", offSiteWorks);
if (offSiteWorks == null || offSiteWorks.getPerson() == null) {
logger.error("Invalid Off Site Works: {}", offSiteWorks);
continue;
}
logger.info("Reference: {} - {} ", yearRef, monthRef); if (offSiteWorks.getPerson().getFiscalCode() == null
|| offSiteWorks.getPerson().getFiscalCode().isEmpty()) {
logger.error("Invalid FiscalCode: {}", offSiteWorks.getPerson().getFiscalCode());
continue;
} else {
logger.info("FiscalCode: {}", offSiteWorks.getPerson().getFiscalCode());
}
EPASValidates epasValidates = epasValidatesService.getValidatesByOfficeCodeId(ISTI_OFFICE_CODEID, yearRef, Integer idPersona = 0;
monthRef); try {
idPersona = Integer.valueOf(offSiteWorks.getPerson().getId());
} catch (NumberFormatException e) {
logger.error("Invalid Person Id: {}", offSiteWorks.getPerson().getId());
continue;
}
logger.info("Date: {}", offSiteWorks.getDate());
java.sql.Date date = null;
try {
date = java.sql.Date.valueOf(offSiteWorks.getDate());
} catch (Exception e) {
logger.error("Invalid date format: {}", offSiteWorks.getDate());
continue;
}
for (EPASStampings epasStamping : offSiteWorks.getStampings()) {
if (epasStamping == null) {
logger.error("Invalid Stamping: {}", epasStamping);
continue;
}
if (epasStamping.getStampType() != null && !epasStamping.getStampType().isEmpty()
&& epasStamping.getStampType().compareTo("lavoroFuoriSede") == 0) {
logger.debug("Stamping Type: {}", epasStamping.getStampType());
Long id = 0L;
try {
id = Long.valueOf(epasStamping.getId());
} catch (NumberFormatException e) {
logger.error("Invalid id for stamping: {}", e.getLocalizedMessage(), e);
continue;
}
logger.debug("Stamping Data: {}", epasStamping.getDate());
Timestamp dataMod;
try {
LocalDateTime dMod = LocalDateTime.parse(epasStamping.getDate(), formatter);
dataMod = Timestamp.valueOf(dMod);
} catch (IllegalArgumentException | DateTimeParseException e) {
logger.error("Invalid stamping data format: {}", e.getLocalizedMessage(), e);
continue;
}
logger.debug("DataMod: {}", dataMod);
SILavoroFuoriSede siLavoroFuoriSede = new SILavoroFuoriSede(id, idPersona,
offSiteWorks.getPerson().getFiscalCode(), date, epasStamping.getPlace(),
epasStamping.getReason(), epasStamping.getWay(), dataMod, SI_FLAG_DEL_FALSE, fluxId);
siLavoroFuoriSedeService.writeNewFlux(fluxId, siLavoroFuoriSede);
}
}
}
logger.info("SILavoroFuoriSede Updated");
blavoro_fuori_sede = true;
tab.setIdFlusso(fluxId);
tab.setLastUpdate(now);
tabsSIService.updateTabsSI(tab);
}
private void syncCartelliniRendicontazioni(Long fluxId, TabsSI tab, String year, String month, LocalDateTime now,
TimeCardsReporting timeCardsReporting) throws Exception {
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
logger.error("Invalid Id Flusso for tab: {}", tab);
return;
}
logger.info("Reference: {}-{}", year, month);
EPASValidates epasValidates = epasValidatesService.getValidatesByOfficeCodeId(ISTI_OFFICE_CODEID, year, month);
// if (!epasValidates.getAllCertificationsValidated()) { // if (!epasValidates.getAllCertificationsValidated()) {
// logger.info("No month closed on EPAS: {}", nextMonthToSent); // logger.info("No month closed on EPAS: {}", nextMonthToSent);
// return; // return;
// } // }
logger.info("Certifications Validated: {}", nextMonthToSent);
// Set Update DateTime // Set Update DateTime
LocalDateTime now = LocalDateTime.now();
Timestamp dataMod = Timestamp.valueOf(now); Timestamp dataMod = Timestamp.valueOf(now);
// EPASMed
TimeCardsReporting timeCardsReporting = new TimeCardsReporting();
timeCardsReporting.setYear(nextMonthToSent.getYear());
timeCardsReporting.setMonth(nextMonthToSent.getMonthValue());
timeCardsReporting.setIdFlusso(fluxId);
timeCardsReporting.setLastUpdate(now);
timeCardsReporting = timeCardsReportingService.createTimeCardsReporting(timeCardsReporting);
logger.info("Persons Validated: {}", epasValidates.getValidatedPersons().length); logger.info("Persons Validated: {}", epasValidates.getValidatedPersons().length);
checkFiscalCode(epasValidates.getValidatedPersons()); checkFiscalCode(epasValidates.getValidatedPersons());
@ -952,7 +1137,7 @@ public class SyncService {
} }
EPASTimeCards epasTimeCards = epasTimeCardsService.getTimeCardByPersonFiscalCode(person.getFiscalCode(), EPASTimeCards epasTimeCards = epasTimeCardsService.getTimeCardByPersonFiscalCode(person.getFiscalCode(),
yearRef, monthRef); year, month);
EPASPersons epasPerson = epasTimeCards.getPerson(); EPASPersons epasPerson = epasTimeCards.getPerson();
Integer personId = Integer.valueOf(epasPerson.getId()); Integer personId = Integer.valueOf(epasPerson.getId());
@ -981,19 +1166,61 @@ public class SyncService {
logger.info("SICartellini Updated"); logger.info("SICartellini Updated");
SICartelliniRendicontazioni siCartelliniRendicontazioni = new SICartelliniRendicontazioni( SICartelliniRendicontazioni siCartelliniRendicontazioni = new SICartelliniRendicontazioni(
timeCardsReporting.getId(), timeCardsReporting.getYear(), timeCardsReporting.getMonth(), timeCardsReporting.getId(), timeCardsReporting.getYear(), timeCardsReporting.getMonth(), dataMod,
Timestamp.valueOf(timeCardsReporting.getLastUpdate()), SI_FLAG_DEL_FALSE, fluxId); SI_FLAG_DEL_FALSE, fluxId);
siCartelliniRendicontazioniService.writeNewFlux(fluxId, siCartelliniRendicontazioni); siCartelliniRendicontazioniService.writeNewFlux(fluxId, siCartelliniRendicontazioni);
logger.info("SICartelliniRendicontazioni Updated"); logger.info("SICartelliniRendicontazioni Updated");
bcartellini_rendicontazioni = true;
bcartellini = true; bcartellini = true;
bcartellini_rendicontazioni = true;
tab.setIdFlusso(fluxId); tab.setIdFlusso(fluxId);
tab.setLastUpdate(timeCardsReporting.getLastUpdate()); tab.setLastUpdate(now);
tabsSIService.updateTabsSI(tab); tabsSIService.updateTabsSI(tab);
} }
private TimeCardsReporting createTimeCardReporting(Long fluxId, String year, String month, LocalDateTime now) {
Integer iYear = Integer.parseInt(year);
Integer iMonth = Integer.parseInt(month);
// EPASMed
TimeCardsReporting timeCardsReporting = new TimeCardsReporting();
timeCardsReporting.setYear(iYear);
timeCardsReporting.setMonth(iMonth);
timeCardsReporting.setIdFlusso(fluxId);
timeCardsReporting.setLastUpdate(now);
timeCardsReporting = timeCardsReportingService.createTimeCardsReporting(timeCardsReporting);
return timeCardsReporting;
}
private void checkValidMonthToSend(String year, String month) throws Exception {
Integer iYear = Integer.valueOf(year);
Integer iMonth = Integer.valueOf(month);
YearMonth selectedMonth = YearMonth.of(iYear, iMonth);
YearMonth nextMonthToSent = nextMonthToSend();
if (selectedMonth.compareTo(nextMonthToSent) != 0) {
String error = "Attenzione il mese richiesto non è valido per la rendicontazione.";
logger.error(error);
throw new Exception(error);
}
}
private YearMonth nextMonthToSend() throws Exception {
Optional<TimeCardsReporting> lastTcR = timeCardsReportingService.getLastTimeCardsReporting();
if (!lastTcR.isPresent()) {
String error = "Invalid TimeCardsReporting start point, no value found.";
logger.error(error);
throw new Exception(error);
}
Integer latestY = lastTcR.get().getYear();
Integer latestM = lastTcR.get().getMonth();
YearMonth nextMonthToSent = YearMonth.of(latestY, latestM);
nextMonthToSent = nextMonthToSent.plusMonths(1);
return nextMonthToSent;
}
private void checkFiscalCode(EPASPersons[] validatedPersons) throws Exception { private void checkFiscalCode(EPASPersons[] validatedPersons) throws Exception {
if (validatedPersons != null && validatedPersons.length > 0) { if (validatedPersons != null && validatedPersons.length > 0) {
ArrayList<String> personsWithInvalidFiscalCode = new ArrayList<>(); ArrayList<String> personsWithInvalidFiscalCode = new ArrayList<>();
@ -1031,9 +1258,8 @@ public class SyncService {
boolean foundLavoroFuoriSede = false; boolean foundLavoroFuoriSede = false;
boolean foundMotiviDiServizio = false; boolean foundMotiviDiServizio = false;
for (EPASStampings epasStamping : epasPersonDay.getStampings()) { for (EPASStampings epasStamping : epasPersonDay.getStampings()) {
if (epasStamping.getStampType()!=null&& if (epasStamping.getStampType() != null && !epasStamping.getStampType().isEmpty()) {
!epasStamping.getStampType().isEmpty()) { switch (epasStamping.getStampType()) {
switch(epasStamping.getStampType()) {
case "lavoroFuoriSede": case "lavoroFuoriSede":
foundLavoroFuoriSede = true; foundLavoroFuoriSede = true;
break; break;

View File

@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
import io.github.jhipster.web.util.HeaderUtil; import io.github.jhipster.web.util.HeaderUtil;
import io.github.jhipster.web.util.ResponseUtil; import io.github.jhipster.web.util.ResponseUtil;
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
import it.cnr.isti.epasmed.epas.model.EPASPersonDays; import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService; import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService;
@ -87,10 +88,10 @@ public class EPASOffSiteWorksResource {
* the EPAS Off Site Works List, or with status {@code 404 (Not Found)}. * the EPAS Off Site Works List, or with status {@code 404 (Not Found)}.
*/ */
@GetMapping("/offsiteworks/byOffice") @GetMapping("/offsiteworks/byOffice")
public ResponseEntity<List<EPASPersonDays>> getOffSiteWorksByOffice(@RequestParam("codeId") String id, public ResponseEntity<List<EPASOffSiteWorks>> getOffSiteWorksByOffice(@RequestParam("codeId") String id,
@RequestParam("year") String year, @RequestParam("month") String month) { @RequestParam("year") String year, @RequestParam("month") String month) {
log.info("REST request to get ePAS Off Site Works list: officeCodeId={}, year={}, month={}", id,year,month); log.info("REST request to get ePAS Off Site Works list: officeCodeId={}, year={}, month={}", id,year,month);
List<EPASPersonDays> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(id, year, month); List<EPASOffSiteWorks> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(id, year, month);
return ResponseUtil.wrapOrNotFound(Optional.of(epasOffSiteWorksList)); return ResponseUtil.wrapOrNotFound(Optional.of(epasOffSiteWorksList));
} }

View File

@ -9,6 +9,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import io.github.jhipster.web.util.HeaderUtil; import io.github.jhipster.web.util.HeaderUtil;
@ -66,10 +67,14 @@ public class SyncResource {
return res; return res;
} }
/** /**
* {@code GET /sync/writes} : Retrieve new flux from ePAS and * {@code GET /sync/writes} : Report from ePAS and
* update SistemaInformativo. * update SistemaInformativo.
* *
* @param year the year.
* @param month the month.
* @return the {@link ResponseEntity} with status {@code 201 (Executed)} * @return the {@link ResponseEntity} with status {@code 201 (Executed)}
* or with status {@code 400 (Bad Request)} if there is a error. * or with status {@code 400 (Bad Request)} if there is a error.
* *
@ -77,20 +82,51 @@ public class SyncResource {
*/ */
@GetMapping("/sync/writes") @GetMapping("/sync/writes")
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")") @PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
public ResponseEntity<Void> syncWrites() throws URISyntaxException { public ResponseEntity<Void> syncWrites(@RequestParam("year") String year,
logger.info("REST request syncWrites)"); @RequestParam("month") String month) throws URISyntaxException {
logger.info("REST request syncWrites");
ResponseEntity<Void> res; ResponseEntity<Void> res;
try { try {
syncService.executeWrites(); syncService.executeWrites(year,month);
String msg="Sincronizzazione delle scritture eseguita correttamente."; String msg="Rendicontazione eseguita correttamente.";
logger.info(msg); logger.info(msg);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName, res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
msg,"")).build(); msg,"")).build();
} catch (Throwable e) { } catch (Throwable e) {
logger.error("Errore nella sincronizzazione delle scritture: {}", e.getLocalizedMessage(), e); logger.error("Errore nella rendicontazione: {}", e.getLocalizedMessage(), e);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName, res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
"Errore nella sincronizzazione delle scritture: {}", e.getLocalizedMessage())).build(); "Errore nella rendicontazione: {}", e.getLocalizedMessage())).build();
}
return res;
}
/**
* {@code GET /sync/writesOrario} : Report Orario from ePAS and
* update SistemaInformativo.
*
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
* or with status {@code 400 (Bad Request)} if there is a error.
*
*/
@GetMapping("/sync/writesOrario")
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
public ResponseEntity<Void> syncWritesOrario() throws URISyntaxException {
logger.info("REST request syncWritesOrario)");
ResponseEntity<Void> res;
try {
syncService.executeWritesOrario();
String msg="Rendicontazione dell'orario eseguita correttamente.";
logger.info(msg);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
msg,"")).build();
} catch (Throwable e) {
logger.error("Errore nella rendicontazione dell'orario: {}", e.getLocalizedMessage(), e);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
"Errore nella rendicontazione dell'orario: {}", e.getLocalizedMessage())).build();
} }
return res; return res;
} }
@ -100,6 +136,8 @@ public class SyncResource {
* {@code GET /sync/writesTimeCards} : Reports TimeCards from ePAS * {@code GET /sync/writesTimeCards} : Reports TimeCards from ePAS
* in SistemaInformativo. * in SistemaInformativo.
* *
* @param year the year.
* @param month the month.
* @return the {@link ResponseEntity} with status {@code 201 (Executed)} * @return the {@link ResponseEntity} with status {@code 201 (Executed)}
* or with status {@code 400 (Bad Request)} if there is a error. * or with status {@code 400 (Bad Request)} if there is a error.
* *
@ -107,11 +145,12 @@ public class SyncResource {
*/ */
@GetMapping("/sync/writesTimeCards") @GetMapping("/sync/writesTimeCards")
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")") @PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
public ResponseEntity<Void> syncTimeCardsWrites() throws URISyntaxException { public ResponseEntity<Void> syncWritesTimeCards(@RequestParam("year") String year,
logger.info("REST request syncWrites)"); @RequestParam("month") String month) throws URISyntaxException {
logger.info("REST request syncWritesTimeCards)");
ResponseEntity<Void> res; ResponseEntity<Void> res;
try { try {
syncService.executeTimeCardsWrites(); syncService.executeWritesTimeCards(year,month);
String msg="Rendicontazione dei cartellini eseguita correttamente."; String msg="Rendicontazione dei cartellini eseguita correttamente.";
logger.info(msg); logger.info(msg);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName, res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
@ -125,4 +164,36 @@ public class SyncResource {
return res; return res;
} }
/**
* {@code GET /sync/writesOffSiteWorks} : Reports Off Site Works from ePAS
* in SistemaInformativo.
*
* @param year the year.
* @param month the month.
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
* or with status {@code 400 (Bad Request)} if there is a error.
*
*/
@GetMapping("/sync/writesOffSiteWorks")
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
public ResponseEntity<Void> syncWritesOffSiteWorks(@RequestParam("year") String year,
@RequestParam("month") String month) throws URISyntaxException {
logger.info("REST request syncWritesOffSiteWorks)");
ResponseEntity<Void> res;
try {
syncService.executeWriteOffSiteWorks(year,month);
String msg="Rendicontazione del lavoro fuori sede eseguita correttamente.";
logger.info(msg);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
msg,"")).build();
} catch (Throwable e) {
logger.error("Errore nella rendicontazione del lavoro fuori sede: {}", e.getLocalizedMessage(), e);
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
"Errore nella rendicontazione del lavoro fuori sede: {}", e.getLocalizedMessage())).build();
}
return res;
}
} }

View File

@ -7,7 +7,11 @@
<p>Sync Sistema Informativo ed ePAS.</p> <p>Sync Sistema Informativo ed ePAS.</p>
<div class="d-grid gap-2 d-md-block"> <div class="d-grid gap-2 d-md-block">
<ngb-datepicker (navigate)="dateNavigate($event)"
[showWeekdays]="false" class="datepicker-only-month-select"></ngb-datepicker>
<button class="btn btn-primary" type="button" [disabled]="isLoading" <button class="btn btn-primary" type="button" [disabled]="isLoading"
(click)="sync('reads')">Reads</button> (click)="sync('reads')">Reads</button>
<button class="btn btn-primary" type="button" [disabled]="isLoading" <button class="btn btn-primary" type="button" [disabled]="isLoading"

View File

@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { NgbDatepickerNavigateEvent } from '@ng-bootstrap/ng-bootstrap';
import { SyncType } from './sync.model'; import { SyncType } from './sync.model';
import { SyncService } from './sync.service'; import { SyncService } from './sync.service';
@ -9,19 +10,36 @@ import { SyncService } from './sync.service';
}) })
export class SyncComponent implements OnInit { export class SyncComponent implements OnInit {
syncT: SyncType | null = null; syncT: SyncType | null = null;
year: number;
month: number;
isLoading = false; // hidden by default isLoading = false; // hidden by default
constructor(private syncService: SyncService) {} constructor(private syncService: SyncService) {
const date: Date = new Date();
this.year = date.getFullYear();
this.month = date.getMonth();
}
ngOnInit(): void {} ngOnInit(): void {}
sync(syncType: SyncType): void { sync(syncType: SyncType): void {
this.isLoading = true; this.isLoading = true;
this.syncT = syncType; this.syncT = syncType;
this.syncService.sync(syncType).subscribe( if (this.year == null || this.year <= 0) {
() => this.onSuccess(), // eslint-disable-next-line no-console
() => this.onError() console.log('Select the year');
); return;
}
if (this.month == null || this.month <= 0) {
// eslint-disable-next-line no-console
console.log('Select the month');
return;
}
// this.syncService.sync(syncType, this.year,this.month).subscribe(
// () => this.onSuccess(),
// () => this.onError()
// );
} }
private onSuccess(): void { private onSuccess(): void {
@ -32,5 +50,16 @@ export class SyncComponent implements OnInit {
this.isLoading = false; this.isLoading = false;
} }
dateNavigate($event: NgbDatepickerNavigateEvent): void {
this.year = $event.next.year;
this.month = $event.next.month;
// eslint-disable-next-line no-console
console.log(this.year);
// eslint-disable-next-line no-console
console.log(this.month);
// old value is contained in $event.current
}
// //
} }

View File

@ -9,7 +9,7 @@ import { SyncType } from './sync.model';
export class SyncService { export class SyncService {
constructor(private http: HttpClient) {} constructor(private http: HttpClient) {}
sync(syncType: SyncType): Observable<{}> { sync(syncType: SyncType, year: number, month: number): Observable<{}> {
return this.http.get(SERVER_API_URL + 'api/sync/' + syncType); return this.http.get(SERVER_API_URL + 'api/sync/' + syncType + '?year=' + year + '&month=' + month);
} }
} }

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>epasmed</title> <title>ePASMed</title>
<meta name="description" content="Description for epasmed"> <meta name="description" content="Description for epasmed">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#000000">

View File

@ -24,7 +24,7 @@ import it.cnr.isti.epasmed.security.AuthoritiesConstants;
@AutoConfigureMockMvc @AutoConfigureMockMvc
@WithMockUser(authorities = AuthoritiesConstants.ADMIN) @WithMockUser(authorities = AuthoritiesConstants.ADMIN)
@SpringBootTest(classes = EpasmedApp.class) @SpringBootTest(classes = EpasmedApp.class)
@EnabledIf("false") @EnabledIf("true")
public class EPASOffSiteWorksResourceIT { public class EPASOffSiteWorksResourceIT {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());

View File

@ -24,10 +24,12 @@ import it.cnr.isti.epasmed.security.AuthoritiesConstants;
@AutoConfigureMockMvc @AutoConfigureMockMvc
@WithMockUser(authorities = AuthoritiesConstants.ADMIN) @WithMockUser(authorities = AuthoritiesConstants.ADMIN)
@SpringBootTest(classes = EpasmedApp.class) @SpringBootTest(classes = EpasmedApp.class)
@EnabledIf("false") @EnabledIf("true")
public class SyncResourceIT { public class SyncResourceIT {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private static final String YEAR="2022";
private static final String MONTH="6";
@Autowired @Autowired
@ -54,13 +56,25 @@ public class SyncResourceIT {
@Test @Test
public void syncWrites() throws Exception { public void syncWrites() throws Exception {
restSyncMockMvc.perform(get("/api/sync/writes")) restSyncMockMvc.perform(get("/api/sync/writes?year="+YEAR+"&month="+MONTH))
.andExpect(status().is2xxSuccessful()); .andExpect(status().is2xxSuccessful());
} }
@Test @Test
public void syncTimeCardsWrites() throws Exception { public void syncWritesOrario() throws Exception {
restSyncMockMvc.perform(get("/api/sync/writesTimeCards")) restSyncMockMvc.perform(get("/api/sync/writesOrario"))
.andExpect(status().is2xxSuccessful());
}
@Test
public void syncWritesTimeCards() throws Exception {
restSyncMockMvc.perform(get("/api/sync/writesTimeCards?year="+YEAR+"&month="+MONTH))
.andExpect(status().is2xxSuccessful());
}
@Test
public void syncWritesOffSiteWorks() throws Exception {
restSyncMockMvc.perform(get("/api/sync/writesOffSiteWorks?year="+YEAR+"&month="+MONTH))
.andExpect(status().is2xxSuccessful()); .andExpect(status().is2xxSuccessful());
} }