VerreSupplementAssoIteHelper.java
package com.sintia.ffl.admin.optique.specifique.isea.helpers;
import com.sintia.ffl.admin.optique.dal.entities.ModeleVerreIte;
import com.sintia.ffl.admin.optique.dal.entities.SupplementVerreIte;
import com.sintia.ffl.admin.optique.dal.entities.VerreSupplementAssoIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.ModeleVerreCatalogueIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.SupplementVerreCatalogueIte;
import com.sintia.ffl.admin.optique.dal.entities.catalogue.VerreSupplementAssoCatalogueIte;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.ModeleVerreCatalogueIteRepository;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.SupplementVerreCatalogueIteRepository;
import com.sintia.ffl.admin.optique.services.services.VerreSupplementAssoIteService;
import com.sintia.ffl.admin.optique.specifique.isea.models.VerreSupplementAssoCSV;
import com.sintia.ffl.admin.optique.specifique.isea.reporter.ChargementReporter;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Service
@Slf4j
public class VerreSupplementAssoIteHelper {
private static final Logger LOGGER = LoggerFactory.getLogger(ModeleVerreIteHelper.class);
@Autowired
private ChargementReporter chargementReporter;
@Autowired
private VerreSupplementAssoIteService verreSupplementAssoCatalogueIteService;
@Autowired
private ModeleVerreCatalogueIteRepository modeleVerreCatalogueIteRepository;
@Autowired
private SupplementVerreCatalogueIteRepository supplementVerreCatalogueIteRepository;
public void process(List<VerreSupplementAssoCSV> verreSupplementAssoCSVList, Date date) {
for(VerreSupplementAssoCSV verreSupplementAssoCSV : verreSupplementAssoCSVList){
try {
if ("C".equals(verreSupplementAssoCSV.getAction()) || "M".equals(verreSupplementAssoCSV.getAction())) {
createOrModifyVerreSupplementAsso(verreSupplementAssoCSV, date);
}
} catch(Exception e){
LOGGER.error("Erreur Rencontrée dans le traitement de l'association verre supplement {} {} cause {}", verreSupplementAssoCSV.getCodeSupplement(),
verreSupplementAssoCSV.getCodeVerre(), e.getMessage());
chargementReporter.addError("Erreur Rencontrée dans le traitement de l'association verre supplement "+verreSupplementAssoCSV.getCodeSupplement() +" cause "+e.getMessage());
}
}
}
/**
* Creation ou modification Enregistrement VerreSupplement
* @param date
*/
private void createOrModifyVerreSupplementAsso(VerreSupplementAssoCSV verreSupplementAssoCSV, Date date) {
VerreSupplementAssoCatalogueIte verreSupplementAssoCatalogueIte = verreSupplementAssoCatalogueIteService.exist(verreSupplementAssoCSV.getCodeSupplement(), verreSupplementAssoCSV.getCodeVerre());
Optional<ModeleVerreCatalogueIte> modeleVerreCatalogueIte = modeleVerreCatalogueIteRepository.findModelVerreIteByCodeAndFournisseurAndModele(verreSupplementAssoCSV.getCodeVerre(), verreSupplementAssoCSV.getCodeFabricant() , verreSupplementAssoCSV.getCodeFournisseur());
Optional<SupplementVerreCatalogueIte> supplementVerreCatalogueIte = supplementVerreCatalogueIteRepository
.findByCodeSupplementVerreAndIdDistributeurIteAndIdFabricantIte(
verreSupplementAssoCSV.getCodeSupplement(),
modeleVerreCatalogueIte.map(ModeleVerreCatalogueIte::getIdDistributeurIte).orElse(null),
modeleVerreCatalogueIte.map(ModeleVerreCatalogueIte::getIdFabricantIte).orElse(null)
);
if (verreSupplementAssoCatalogueIte != null && modeleVerreCatalogueIte.isPresent() && supplementVerreCatalogueIte.isPresent()) {
modifyVerreSupplementAssoIte(date, verreSupplementAssoCSV, verreSupplementAssoCatalogueIte);
} else if(verreSupplementAssoCatalogueIte == null && modeleVerreCatalogueIte.isPresent() && supplementVerreCatalogueIte.isPresent()) {
createVerreSupplementAssoIte(date, verreSupplementAssoCSV, modeleVerreCatalogueIte.get(), supplementVerreCatalogueIte.get());
}
}
/**
* Creation VerreSupplementAsso
* @param date
* @param verreSupplementAssoCSV
*/
private void createVerreSupplementAssoIte(Date date, VerreSupplementAssoCSV verreSupplementAssoCSV, ModeleVerreCatalogueIte modeleVerreCatalogueIte,
SupplementVerreCatalogueIte supplementVerreCatalogueIte) {
// Modification
VerreSupplementAssoCatalogueIte verreSupplementAssoCatalogueIteToCreate = VerreSupplementAssoCatalogueIte.builder()
.idSupplementVerreIte(supplementVerreCatalogueIte.getIdSupplementVerreIte())
.idModeleVerreIte(modeleVerreCatalogueIte.getIdModeleVerreIte())
.dCreation(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())
.bObligatoire("Y".equals(verreSupplementAssoCSV.getSupplementObligatoire()) ? "1" : "0")
.bInclus("Y".equals(verreSupplementAssoCSV.getSupplementInclus()) ? "1" : "0")
.bSaisie("1")
.dMaj(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()).build();
verreSupplementAssoCatalogueIteService.modifyOrCreate(verreSupplementAssoCatalogueIteToCreate);
}
/**
* Modification VerreSupplementAsso
* @param date
* @param verreSupplementAssoCSV
*/
private void modifyVerreSupplementAssoIte(Date date, VerreSupplementAssoCSV verreSupplementAssoCSV, VerreSupplementAssoCatalogueIte verreSupplementAssoCatalogueIte) {
// Modification
VerreSupplementAssoCatalogueIte verreSupplementAssoCatalogueIteToUpdate = VerreSupplementAssoCatalogueIte.builder()
.idVerreSupplementAssoIte(verreSupplementAssoCatalogueIte.getIdVerreSupplementAssoIte())
.bObligatoire("Y".equals(verreSupplementAssoCSV.getSupplementObligatoire()) ? "1" : "0")
.bInclus("Y".equals(verreSupplementAssoCSV.getSupplementInclus()) ? "1" : "0")
.bSaisie("1")
.dMaj(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()).build();
verreSupplementAssoCatalogueIteService.modifyOrCreate(verreSupplementAssoCatalogueIteToUpdate);
}
}