Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into develop

This commit is contained in:
nisha
2024-10-07 20:12:43 +05:30
12 changed files with 65 additions and 17 deletions

View File

@@ -179,4 +179,9 @@ public class GepafinConstant {
public static final String UNAUTHORIZED = "UNAUTHORIZED"; public static final String UNAUTHORIZED = "UNAUTHORIZED";
public static final String COMPANY_ID_MANDATORY = "company.id.mandatory"; public static final String COMPANY_ID_MANDATORY = "company.id.mandatory";
public static final String USER_ALREADY_CONNECTED_TO_COMPANY = "user.already.connected.to.company"; public static final String USER_ALREADY_CONNECTED_TO_COMPANY = "user.already.connected.to.company";
public static final String CALL_NOT_STARTED_YET = "call.not.started.yet";
public static final String CALL_ALREADY_ENDED = "call.already.ended";
public static final String APPLICATION_STATUS_UPDATED_SUCCESSFULLY = "application.status.updated.successfully";
} }

View File

@@ -503,7 +503,7 @@ public class ApplicationDao {
} }
} }
public void updateApplicationStatus(Long applicationId, ApplicationStatusTypeEnum status) { public ApplicationResponse updateApplicationStatus(Long applicationId, ApplicationStatusTypeEnum status) {
ApplicationEntity applicationEntity = validateApplication(applicationId); ApplicationEntity applicationEntity = validateApplication(applicationId);
if (status.equals(ApplicationStatusTypeEnum.SUBMIT)) { if (status.equals(ApplicationStatusTypeEnum.SUBMIT)) {
@@ -529,7 +529,9 @@ public class ApplicationDao {
} else { } else {
applicationEntity.setStatus(status.getValue()); applicationEntity.setStatus(status.getValue());
} }
saveApplicationEntity(applicationEntity); applicationEntity = saveApplicationEntity(applicationEntity);
return getApplicationResponse(applicationEntity);
} }
public Integer calculateProgress(Long totalSteps, Long completedSteps) { public Integer calculateProgress(Long totalSteps, Long completedSteps) {

View File

@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.dao;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -673,6 +674,25 @@ public class CallDao {
Status.NOT_FOUND, Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.CALL_NOT_PUBLISHED)); Translator.toLocale(GepafinConstant.CALL_NOT_PUBLISHED));
} }
LocalDate currentDate = LocalDate.now();
LocalTime currentTime = LocalTime.now();
if (currentDate.isBefore(callEntity.getStartDate().toLocalDate()) ||
(currentDate.isEqual(callEntity.getStartDate().toLocalDate()) && currentTime.isBefore(callEntity.getStartTime()))) {
throw new CustomValidationException(
Status.BAD_REQUEST,
Translator.toLocale(GepafinConstant.CALL_NOT_STARTED_YET)
);
}
if (currentDate.isAfter(callEntity.getEndDate().toLocalDate()) ||
(currentDate.isEqual(callEntity.getEndDate().toLocalDate()) && currentTime.isAfter(callEntity.getEndTime()))) {
throw new CustomValidationException(
Status.BAD_REQUEST,
Translator.toLocale(GepafinConstant.CALL_ALREADY_ENDED)
);
}
return callEntity; return callEntity;
} }

View File

@@ -2,6 +2,8 @@ package net.gepafin.tendermanagement.model.response;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
@Data @Data
public class UserSamlResponse { public class UserSamlResponse {
@@ -10,4 +12,6 @@ public class UserSamlResponse {
private String firstName; private String firstName;
private String lastName; private String lastName;
private LocalDateTime dateOfBirth;
} }

View File

@@ -29,6 +29,6 @@ public interface ApplicationService {
public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action); public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action);
public void updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status); public ApplicationResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status);
} }

View File

@@ -76,8 +76,8 @@ public class ApplicationServiceImpl implements ApplicationService {
} }
@Override @Override
public void updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status) { public ApplicationResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status) {
applicationDao.updateApplicationStatus(applicationId, status); return applicationDao.updateApplicationStatus(applicationId, status);
} }

View File

@@ -33,6 +33,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -182,6 +183,13 @@ public class AuthenticationService {
&& !userAttributes.get("cognome").isEmpty()) { && !userAttributes.get("cognome").isEmpty()) {
userSamlResponse.setLastName(userAttributes.get("cognome").get(0).toString()); userSamlResponse.setLastName(userAttributes.get("cognome").get(0).toString());
} }
if (userAttributes.containsKey("dataNascita") && userAttributes.get("dataNascita") != null
&& !userAttributes.get("dataNascita").isEmpty()) {
String dateString =userAttributes.get("dataNascita").get(0).toString();
LocalDate dateOfBirth = LocalDate.parse(dateString);
LocalDateTime dateOfBirthWithTime = dateOfBirth.atStartOfDay();
userSamlResponse.setDateOfBirth(dateOfBirthWithTime);
}
userSamlResponse.setCodiceFiscale(cf); userSamlResponse.setCodiceFiscale(cf);
return userSamlResponse; return userSamlResponse;
} }

View File

@@ -127,7 +127,7 @@ public interface ApplicationApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
@PutMapping(value = "/{applicationId}/status", produces = { "application/json" }) @PutMapping(value = "/{applicationId}/status", produces = { "application/json" })
ResponseEntity<Response<Void>> updateApplicationStatus(HttpServletRequest request, ResponseEntity<Response<ApplicationResponse>> updateApplicationStatus(HttpServletRequest request,
@Parameter(description = "The application id", required = true) @PathVariable("applicationId") Long applicationId, @Parameter(description = "The application id", required = true) @PathVariable("applicationId") Long applicationId,
@Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationStatusTypeEnum status); @Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationStatusTypeEnum status);

View File

@@ -83,10 +83,10 @@ public class ApplicationApiController implements ApplicationApi {
} }
@Override @Override
public ResponseEntity<Response<Void>> updateApplicationStatus(HttpServletRequest request, Long applicationId, public ResponseEntity<Response<ApplicationResponse>> updateApplicationStatus(HttpServletRequest request, Long applicationId,
ApplicationStatusTypeEnum status) { ApplicationStatusTypeEnum status) {
applicationService.updateApplicationStatus(request, applicationId, status); ApplicationResponse applicationResponse = applicationService.updateApplicationStatus(request, applicationId, status);
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_SUCCESS_MSG))); .body(new Response<>(applicationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_STATUS_UPDATED_SUCCESSFULLY)));
} }
} }

View File

@@ -9,8 +9,8 @@ spring.h2.console.enabled=true
base-url=http://bandi-api.gepafin.it base-url=http://bandi-api.gepafin.it
isVatCheckGloballyDisabled = false isVatCheckGloballyDisabled = false
fe.base.url=http://gepafin-production-fe.s3-website.eu-central-1.amazonaws.com #fe.base.url=http://gepafin-production-fe.s3-website.eu-central-1.amazonaws.com
fe.base.url=http://bandi.gepafin.it
#SPID configuration #SPID configuration
spid.ipd.base.url=https://login.regione.umbria.it spid.ipd.base.url=https://login.regione.umbria.it
active.profile.folder=production active.profile.folder=production

View File

@@ -206,3 +206,8 @@ vatnumber.already.exists=VatNumber already exists.
invalid.email=Invalid email. invalid.email=Invalid email.
company.id.mandatory=Company id is mandatory. company.id.mandatory=Company id is mandatory.
user.already.connected.to.company=The user is already connected to this company. user.already.connected.to.company=The user is already connected to this company.
call.not.started.yet = The call has not started yet. Please wait until the specified start date and time.
call.already.ended = The call has already ended. You cannot submit the application after the deadline.
status.updated.successfully=Status updated successfully.
application.status.updated.successfully = Application status updated successfully.

View File

@@ -9,7 +9,7 @@ get_user_success_msg=Utente recuperato con successo.
get_user_error_msg=Si <20> verificato un errore durante il recupero dell'utente. get_user_error_msg=Si <20> verificato un errore durante il recupero dell'utente.
user.not.active=Utente non attivo. Si prega di contattare il supporto. user.not.active=Utente non attivo. Si prega di contattare il supporto.
user.already.exist.msg=L'utente esiste gi<67> per questo codice fiscale. user.already.exist.msg=L'utente esiste gi<67> per questo codice fiscale.
validate.email=L'email è obbligatoria e deve essere nel formato corretto. Si prega di verificare e riprovare. validate.email=L'email <EFBFBD> obbligatoria e deve essere nel formato corretto. Si prega di verificare e riprovare.
validate.password=La password e confPassword sono obbligatorie. Verifica e riprova. validate.password=La password e confPassword sono obbligatorie. Verifica e riprova.
# Role-related messages # Role-related messages
role.created.success=Ruolo creato con successo. role.created.success=Ruolo creato con successo.
@@ -20,7 +20,7 @@ create.role.error=Errore durante la creazione del ruolo.
update.role.error=Errore durante l'aggiornamento del ruolo. update.role.error=Errore durante l'aggiornamento del ruolo.
role.fetch.success=Ruolo recuperato con successo. role.fetch.success=Ruolo recuperato con successo.
delete.role.error=Errore durante l'eliminazione del ruolo. delete.role.error=Errore durante l'eliminazione del ruolo.
role.id.mandatory=L'ID del ruolo è obbligatorio. role.id.mandatory=L'ID del ruolo <EFBFBD> obbligatorio.
# Region-related messages # Region-related messages
region.created.success=Regione creata con successo. region.created.success=Regione creata con successo.
@@ -194,8 +194,12 @@ company.get.success=Azienda recuperata con successo.
company.not.found=Azienda non trovata. company.not.found=Azienda non trovata.
check.vatnumber.success=Numero di partita IVA verificato con successo. check.vatnumber.success=Numero di partita IVA verificato con successo.
invalid.vatnumber=Numero di partita IVA non valido. invalid.vatnumber=Numero di partita IVA non valido.
vatnumber.mandatory=Il numero di partita IVA è obbligatorio. vatnumber.mandatory=Il numero di partita IVA <EFBFBD> obbligatorio.
vatnumber.already.exists=Il numero di partita IVA esiste già. vatnumber.already.exists=Il numero di partita IVA esiste gi<EFBFBD>.
invalid.email=Email non valida. invalid.email=Email non valida.
company.id.mandatory=L'ID dell'azienda è obbligatorio. company.id.mandatory=L'ID dell'azienda <EFBFBD> obbligatorio.
user.already.connected.to.company=L'utente è già collegato a questa azienda. user.already.connected.to.company=L'utente <EFBFBD> gi<EFBFBD> collegato a questa azienda.
call.not.started.yet = La chiamata non <20> ancora iniziata. Attendere fino alla data e all'ora di inizio specificate.
call.already.ended = La chiamata <20> gi<67> terminata. Non <20> possibile inviare l'applicazione dopo la scadenza.
status.updated.successfully=Stato aggiornato con successo.
application.status.updated.successfully = Stato dell'applicazione aggiornato con successo.