Updated code

This commit is contained in:
harish
2024-10-26 17:48:31 +05:30
parent 24d4f6a65c
commit 9b1c86d179
13 changed files with 87 additions and 58 deletions

View File

@@ -240,6 +240,7 @@ public class GepafinConstant {
public static final String EVALUATIONS_FETCHED_SUCCESSFULLY = "evaluations.fetched.successfully";
public static final String APPLICATION_EVALUATION_NOT_FOUND = "application.evaluation.not.found";
public static final String APPLICATION_EVALUATION_STATUS_UPDATED_SUCCESSFULLY = "application.evaluation.status.updated.successfully";
public static final String ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG = "assigned.application.not.found.with.id";
public static final String APPLICATION_ASSIGNED= "application.assigned.success.msg";

View File

@@ -53,11 +53,14 @@ public class ApplicationEvaluationDao {
private ApplicationFormRepository applicationFormRepository;
@Autowired
private ApplicationFormFieldRepository applicationFormFieldRepository;
@Autowired AssignedApplicationsRepository assignedApplicationsRepository;
private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req) {
private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req,Long applicationId) {
ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity();
ApplicationEntity application = applicationService.validateApplication(req.getApplicationId());
entity.setApplication(application);
ApplicationEntity application = applicationService.validateApplication(applicationId);
AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null);
entity.setApplicationId(application.getId());
entity.setAssignedApplicationsEntity(assignedApplications);
entity.setUserId(user.getId());
entity.setCriteria(Utils.convertObjectToJson(req.getCriteria()));
entity.setChecklist(Utils.convertObjectToJson(req.getChecklist()));
@@ -72,10 +75,10 @@ public class ApplicationEvaluationDao {
ApplicationEvaluationResponse response = new ApplicationEvaluationResponse();
populateBasicDetails(entity, response);
CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplication().getId());
CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId());
List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository.findByCallId(call.getId());
List<CallTargetAudienceChecklistEntity> checklistEntities = callTargetAudienceChecklistRepository.findByCallId(call.getId());
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(entity.getApplication().getId());
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(entity.getApplicationId());
setCriteriaResponses(entity, response, evaluationCriterias);
setChecklistResponses(entity, response, checklistEntities);
@@ -88,7 +91,9 @@ public class ApplicationEvaluationDao {
private void populateBasicDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) {
response.setId(entity.getId());
response.setApplicationId(entity.getApplication().getId());
response.setApplicationId(entity.getApplicationId());
AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(entity.getApplicationId()).orElse(null);
response.setAssignedApplicationId(assignedApplications.getId());
response.setNote(entity.getNote());
response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(entity.getStatus()));
response.setCreatedDate(entity.getCreatedDate());
@@ -100,7 +105,7 @@ public class ApplicationEvaluationDao {
? Utils.convertJsonToList(entity.getCriteria(), new TypeReference<List<CriteriaResponse>>() {})
: new ArrayList<>();
List<CriteriaResponse> criteriaResponsesFromDB = getCriteriaResponse(entity.getApplication().getId());
List<CriteriaResponse> criteriaResponsesFromDB = getCriteriaResponse(entity.getApplicationId());
addMissingCriteriaResponses(criteriaResponsesFromEntity, criteriaResponsesFromDB);
criteriaResponsesFromEntity.forEach(criteriaResponse -> {
@@ -135,7 +140,7 @@ public class ApplicationEvaluationDao {
? Utils.convertJsonToList(entity.getChecklist(), new TypeReference<List<ChecklistResponse>>() {})
: new ArrayList<>();
List<ChecklistResponse> checklistResponsesFromDB = getChecklistResponse(entity.getApplication().getId());
List<ChecklistResponse> checklistResponsesFromDB = getChecklistResponse(entity.getApplicationId());
addMissingChecklistResponses(checklistResponsesFromEntity, checklistResponsesFromDB);
checklistResponsesFromEntity.forEach(checklistResponse -> {
@@ -169,7 +174,7 @@ public class ApplicationEvaluationDao {
? Utils.convertJsonToList(entity.getFile(), new TypeReference<List<FieldResponse>>() {})
: new ArrayList<>();
List<FieldResponse> fieldResponsesFromDB = getFieldResponses(entity.getApplication().getId());
List<FieldResponse> fieldResponsesFromDB = getFieldResponses(entity.getApplicationId());
addMissingFieldResponses(fieldResponsesFromEntity, fieldResponsesFromDB);
fieldResponsesFromEntity.forEach(fieldResponse -> {
@@ -202,7 +207,7 @@ public class ApplicationEvaluationDao {
}
private void setApplicationDetails(ApplicationEvaluationResponse response, ApplicationEvaluationEntity entity) {
ApplicationEntity application = applicationService.validateApplication(entity.getApplication() != null ? entity.getApplication().getId() : null);
ApplicationEntity application = applicationService.validateApplication(entity.getApplicationId() != null ? entity.getApplicationId(): null);
UserEntity user = userService.validateUser(application.getUserId());
String firstName = user.getFirstName() != null ? user.getFirstName() : "";
String lastName = user.getLastName() != null ? user.getLastName() : "";
@@ -213,12 +218,13 @@ public class ApplicationEvaluationDao {
response.setCallName(application.getCall().getName());
response.setProtocolNumber(application.getProtocol() != null ? application.getProtocol().getProtocolNumber() : null);
response.setSubmissionDate(application.getSubmissionDate());
response.setEvaluationDate(LocalDateTime.now());
response.setEvaluationDate(application.getSubmissionDate().plusDays(30));
}
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req) {
Optional<ApplicationEvaluationEntity> existingEntityOptional = applicationEvaluationRepository.findByApplicationId(req.getApplicationId());
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req,Long applicationId) {
Optional<ApplicationEvaluationEntity> existingEntityOptional = applicationEvaluationRepository.findByApplicationId(applicationId);
ApplicationEvaluationEntity entity;
if (existingEntityOptional.isPresent()) {
@@ -229,7 +235,7 @@ public class ApplicationEvaluationDao {
entity.setIsDeleted(false);
setIfUpdated(entity::getNote, entity::setNote, req.getNote());
} else {
entity = convertToEntity(user, req);
entity = convertToEntity(user, req,applicationId);
}
ApplicationEvaluationEntity savedEntity = applicationEvaluationRepository.save(entity);
@@ -376,8 +382,9 @@ public class ApplicationEvaluationDao {
List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository.findByCallId(call.getId());
List<CallTargetAudienceChecklistEntity> checklistEntities = callTargetAudienceChecklistRepository.findByCallId(call.getId());
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(applicationId);
AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null);
response.setApplicationId(applicationId);
response.setAssignedApplicationId(assignedApplications.getId());
response.setNote(null);
response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(ApplicationEvaluationStatusTypeEnum.DRAFT.getValue()));
@@ -463,7 +470,8 @@ public class ApplicationEvaluationDao {
response.setCallName(application.getCall().getName());
response.setProtocolNumber(application.getProtocol() != null ? application.getProtocol().getProtocolNumber() : null);
response.setSubmissionDate(application.getSubmissionDate());
response.setEvaluationDate(LocalDateTime.now());
response.setEvaluationDate(application.getSubmissionDate().plusDays(30));
}
List<CriteriaResponse> getCriteriaResponse(Long applicationId){ CallEntity call = callRepository.findCallEntityByApplicationId(applicationId);

View File

@@ -9,10 +9,8 @@ import java.util.List;
@Entity
@Table(name = "application_evaluation")
public class ApplicationEvaluationEntity extends BaseEntity{
@ManyToOne
@JoinColumn(name = "APPLICATION_ID", nullable = true)
private ApplicationEntity application;
@Column(name = "application_Id")
private Long applicationId;
@Column(name = "user_id")
private Long userId;
@@ -24,12 +22,17 @@ public class ApplicationEvaluationEntity extends BaseEntity{
@Column(name = "file")
private String file;
@Column(name = "note")
private String note;
@Column(name = "status")
private String status;
@Column(name="IS_DELETED")
private Boolean isDeleted;
@ManyToOne
@JoinColumn(name = "assigned_applications_id", nullable = true)
private AssignedApplicationsEntity assignedApplicationsEntity;
}

View File

@@ -7,7 +7,6 @@ import java.util.List;
@Data
public class ApplicationEvaluationRequest {
private Long applicationId;
private List<CriteriaRequest> criteria;
private List<ChecklistRequest> checklist;
private List<FieldRequest> field;

View File

@@ -12,6 +12,7 @@ public class ApplicationEvaluationResponse {
private Long id;
private Long applicationId;
private Long assignedApplicationId;
private String note;
private ApplicationEvaluationStatusTypeEnum status;
private List<CriteriaResponse> criteria;

View File

@@ -11,7 +11,7 @@ import net.gepafin.tendermanagement.model.response.ApplicationResponse;
import java.util.List;
public interface ApplicationEvaluationService {
ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest applicationEvaluationRequest);
ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest applicationEvaluationRequest,Long assignedApplicationsId);
void deleteApplicationEvaluation(HttpServletRequest request,Long id);
ApplicationEvaluationResponse getApplicationEvaluationByApplicationId(HttpServletRequest request,Long applicationId);

View File

@@ -1,8 +1,11 @@
package net.gepafin.tendermanagement.service.impl;
import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.dao.ApplicationEvaluationDao;
import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum;
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
@@ -10,13 +13,18 @@ import net.gepafin.tendermanagement.model.request.ApplicationEvaluationRequest;
import net.gepafin.tendermanagement.model.request.UpdateApplicationEvaluationRequest;
import net.gepafin.tendermanagement.model.response.ApplicationEvaluationResponse;
import net.gepafin.tendermanagement.model.response.ApplicationResponse;
import net.gepafin.tendermanagement.repositories.AssignedApplicationsRepository;
import net.gepafin.tendermanagement.service.ApplicationEvaluationService;
import net.gepafin.tendermanagement.util.Validator;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Service
public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationService {
@@ -25,35 +33,45 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe
private ApplicationEvaluationDao applicationEvaluationDao;
@Autowired
private Validator validator;
@Autowired
private AssignedApplicationsRepository assignedApplicationsRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest req) {
Long userId = validator.getUserIdFromToken(request);
UserEntity user=validator.validatePreInstructor(request,userId);
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user,req);
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest req,Long assignedApplicationsId) {
AssignedApplicationsEntity assignedApplication = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationsId).orElseThrow(()->
new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG)));
UserEntity user=validator.validatePreInstructor(request,assignedApplication.getUserId());
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user,req,assignedApplication.getApplication().getId());
}
@Override
@Transactional(readOnly = true)
public ApplicationEvaluationResponse getApplicationEvaluationByApplicationId(HttpServletRequest request,Long applicationId) {
Long userId = validator.getUserIdFromToken(request);
UserEntity user=validator.validatePreInstructor(request,userId);
return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user,applicationId);
AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null);
if(assignedApplications==null){
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG));
}
UserEntity user = validator.validatePreInstructor(request, assignedApplications.getUserId());
return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, assignedApplications.getUserId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteApplicationEvaluation(HttpServletRequest request,Long id) {
Long userId = validator.getUserIdFromToken(request);
validator.getUserIdFromToken(request);
applicationEvaluationDao.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long applicationId, ApplicationEvaluationStatusTypeEnum status) {
Long userId = validator.getUserIdFromToken(request);
validator.validatePreInstructor(request,userId);
AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null);
if(assignedApplications==null){
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG));
}
validator.validatePreInstructor(request, assignedApplications.getUserId());
return applicationEvaluationDao.updateApplicationEvaluationStatus(applicationId, status);
}

View File

@@ -139,14 +139,6 @@ public class Validator {
Map<String, Object> userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request);
return Long.parseLong(userInfo.get("userId").toString());
}
public UserEntity validatePreInstructor(HttpServletRequest request, Long userId) {
UserEntity user = validateUser(request);
if(Boolean.FALSE.equals(RoleStatusEnum.ROLE_PRE_INSTRUCTOR.getValue().equals(user.getRoleEntity().getRoleType()))||Boolean.FALSE.equals(user.getId().equals(userId))) {
throw new ForbiddenAccessException(Status.FORBIDDEN, Translator.toLocale(GepafinConstant.PERMISSION_DENIED));
}
return userService.validateUser(userId);
}
public CallEntity validateUserWithCall(UserEntity user, Long callId) {
CallEntity callEntity = callService.validateCall(callId);
if(Boolean.FALSE.equals(user.getHub().getId().equals(callEntity.getHub().getId()))) {

View File

@@ -24,7 +24,7 @@ import java.util.List;
public interface ApplicationEvaluationApi {
@Operation(summary = "API to create ApplicationEvaluation",
@Operation(summary = "API to create or update ApplicationEvaluation",
responses = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@@ -32,9 +32,11 @@ public interface ApplicationEvaluationApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))
})
@PostMapping(value = "/", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(HttpServletRequest request,
@Parameter(description = "ApplicationEvaluation request object", required = true) @Valid @RequestBody ApplicationEvaluationRequest evaluationRequest);
@PutMapping(value = "/{assignedApplicationsId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
HttpServletRequest request,
@Parameter(required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId,
@Parameter( required = true) @Valid @RequestBody ApplicationEvaluationRequest evaluationRequest);
@Operation(summary = "API to get ApplicationEvaluation data for evaluation process",
responses = {
@@ -67,7 +69,7 @@ public interface ApplicationEvaluationApi {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
@PutMapping(value = "/{id}/status", produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<Response<ApplicationEvaluationResponse>> updateApplicationEvaluationStatus(HttpServletRequest request,
@Parameter(description = "The evaluation ID", required = true) @PathVariable("id") Long id,
@Parameter( required = true) @PathVariable("id") Long id,
@Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationEvaluationStatusTypeEnum status);
}

View File

@@ -30,8 +30,8 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
@Override
public ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(HttpServletRequest request,
ApplicationEvaluationRequest evaluationRequest) {
ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation(request,evaluationRequest);
Long assignedApplicationsId,ApplicationEvaluationRequest evaluationRequest) {
ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation(request,evaluationRequest,assignedApplicationsId);
return ResponseEntity.status(HttpStatus.CREATED)
.body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CREATED_SUCCESSFULLY)));
}

View File

@@ -1488,8 +1488,12 @@
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="application_evaluation_pkey"/>
</column>
<column name="assigned_applications_id" type="INTEGER">
<constraints nullable="false"/>
</column>
<column name="application_id" type="INTEGER">
<constraints nullable="false"/>
</column>
<column name="user_id" type="INTEGER">
<constraints nullable="false"/>
</column>
@@ -1528,13 +1532,12 @@
onDelete="CASCADE" />
<addForeignKeyConstraint
baseTableName="application_evaluation"
baseColumnNames="application_id"
referencedTableName="application"
baseColumnNames="assigned_applications_id"
referencedTableName="assigned_applications"
referencedColumnNames="id"
constraintName="fk_application_evaluation_application"
constraintName="fk_application_evaluation_assigned_applications"
onDelete="CASCADE" />
</changeSet>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -261,6 +261,7 @@ evaluation.deleted.successfully = Application evaluation deleted successfully.
evaluations.fetched.successfully = All application evaluations fetched successfully.
application.evaluation.status.updated.successfully=Application evaluation status updated successfully.
evaluationCriteria.invalid=This evaluation criterion does not belong to the current call.
assigned.application.not.found.with.id=Assigned application with this application ID not found
# Hub Messages

View File

@@ -259,6 +259,7 @@ evaluation.fetched.successfully = Valutazione dell'applicazione recuperata con s
evaluation.deleted.successfully = Valutazione dell'applicazione eliminata con successo.
evaluations.fetched.successfully = Tutte le valutazioni delle applicazioni recuperate con successo.
application.evaluation.status.updated.successfully=Stato della valutazione dell'applicazione aggiornato con successo.
assigned.application.not.found.with.id=Applicazione assegnata con questo ID dell'applicazione non trovata
application.assigned.success.msg =Domanda assegnata con successo
application.already.assigned.msg =La domanda <20> gi<67> assegnata