From 647c05d457e0dc0f7341873072cd33107f1b3aed Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 23 Oct 2024 12:23:34 +0530 Subject: [PATCH 1/2] Time issue resolve --- .../constants/GepafinConstant.java | 1 + .../dao/AssignedApplicationsDao.java | 7 +++++ .../model/response/CallResponse.java | 4 +++ .../util/DynamicLocalTimeSerializer.java | 26 +++++++++++++++++++ src/main/resources/message_en.properties | 2 +- src/main/resources/message_it.properties | 1 + 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/util/DynamicLocalTimeSerializer.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 7a1eba03..c5b18460 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -250,5 +250,6 @@ public class GepafinConstant { public static final String EVALUATIONCRITERIA_INVALID = "evaluationCriteria.invalid"; public static final String APPLICATION_NOT_IN_DRAFT_STATUS="application.not.in.draft.status"; public static final String GET_ERROR_S3 = "get.error.s3"; + public static final String INVALID_APPLICATION_STATUS = "invalid.application.status"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index 5f555ac3..cfdb31ab 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.ApplicationEntity; import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity; import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; @@ -46,6 +47,12 @@ public class AssignedApplicationsDao { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_ASSIGNED)); } ApplicationEntity application = applicationService.validateApplication(applicationId); + if (Boolean.FALSE.equals(ApplicationStatusTypeEnum.SUBMIT.equals(application.getStatus()))) { + throw new CustomValidationException( + Status.BAD_REQUEST, + Translator.toLocale(GepafinConstant.INVALID_APPLICATION_STATUS) + ); + } UserEntity user = userService.validateUser(userId); AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest); AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment, assignedApplicationsRequest); diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java index ed4a0206..b26460ab 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java @@ -5,8 +5,10 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.List; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.Data; import net.gepafin.tendermanagement.enums.CallStatusEnum; +import net.gepafin.tendermanagement.util.DynamicLocalTimeSerializer; @Data public class CallResponse { @@ -47,8 +49,10 @@ public class CallResponse { private String phoneNumber; + @JsonSerialize(using = DynamicLocalTimeSerializer.class) private LocalTime startTime; + @JsonSerialize(using = DynamicLocalTimeSerializer.class) private LocalTime endTime; private LocalDateTime createdDate; diff --git a/src/main/java/net/gepafin/tendermanagement/util/DynamicLocalTimeSerializer.java b/src/main/java/net/gepafin/tendermanagement/util/DynamicLocalTimeSerializer.java new file mode 100644 index 00000000..0fcdaa77 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/util/DynamicLocalTimeSerializer.java @@ -0,0 +1,26 @@ +package net.gepafin.tendermanagement.util; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +public class DynamicLocalTimeSerializer extends JsonSerializer { + private static final DateTimeFormatter HH_MM_FORMAT = DateTimeFormatter.ofPattern("HH:mm"); + private static final DateTimeFormatter HH_MM_SS_FORMAT = DateTimeFormatter.ofPattern("HH:mm:ss"); + + @Override + public void serialize(LocalTime time, JsonGenerator gen, SerializerProvider serializers) throws IOException { + // Use HH:mm if seconds are 00, otherwise use HH:mm:ss + String formattedTime = (time.getSecond() == 0) + ? time.format(HH_MM_FORMAT) + : time.format(HH_MM_SS_FORMAT); + + gen.writeString(formattedTime); + } + + +} diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index c971aa0d..b92a48f9 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -275,4 +275,4 @@ assigned.application.deleted.success=Assigned Application successfully deleted. assigned.application.get.success=Assigned Application details fetched successfully. assigned.application.update.successfully=Assigned Application updated successfully. get.error.s3=Failed to fetch the file from S3. - +invalid.application.status = Invalid Application status. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index ce0dd9b5..214a198e 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -259,6 +259,7 @@ aasigned.application.not.found = Applicazione assegnata non trovata con l'ID spe assigned.application.deleted.success =Applicazione assegnata eliminata con successo. assigned.application.get.success =Dettagli dell'applicazione assegnata recuperati correttamente. assigned.application.update.successfully = Applicazione assegnata aggiornata correttamente. +invalid.application.status = Stato della domanda non valido. # Hub Messages hub_create_success=Hub creato con successo From 1c2471c1982b6d764101f26d47493484e430d4aa Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 23 Oct 2024 12:38:57 +0530 Subject: [PATCH 2/2] updated code --- .../java/net/gepafin/tendermanagement/dao/ApplicationDao.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 7e9eaa6e..82503677 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -134,8 +134,8 @@ public class ApplicationDao { validateFormFields(applicationRequestBean,formEntity); ApplicationEntity applicationEntity = validateApplication(applicationId); validator.validateUserWithCompany(request, applicationEntity.getCompany().getId()); - if(Boolean.TRUE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.SUBMIT.getValue()))) { - throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_SUBMITTED)); + if(Boolean.FALSE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.DRAFT.getValue()))) { + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_NOT_IN_DRAFT_STATUS)); } formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);