Updated put endpoint of application
This commit is contained in:
@@ -50,10 +50,10 @@ public class ApplicationDao {
|
||||
@Autowired
|
||||
private FormDao formDao;
|
||||
|
||||
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId) {
|
||||
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) {
|
||||
FormEntity formEntity = formService.validateForm(formId);
|
||||
CallEntity call = callService.validateCall(formEntity.getCall().getId());
|
||||
ApplicationEntity applicationEntity = getApplicationOrCreate(userEntity, call, formEntity);
|
||||
ApplicationEntity applicationEntity = validateApplication(applicationId);
|
||||
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
|
||||
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
|
||||
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity);
|
||||
@@ -92,16 +92,14 @@ public class ApplicationDao {
|
||||
log.info("Fetching application with ID: {}", id);
|
||||
|
||||
ApplicationEntity applicationEntity = validateApplication(id);
|
||||
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId());
|
||||
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formId);
|
||||
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
|
||||
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
|
||||
for (ApplicationFormEntity applicationFormEntity:applicationFormEntities){
|
||||
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
||||
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) {
|
||||
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
|
||||
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
|
||||
}
|
||||
}
|
||||
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
|
||||
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
|
||||
applicationResponseBean.setCurrentFormId(formId);
|
||||
@@ -164,15 +162,6 @@ public class ApplicationDao {
|
||||
return response;
|
||||
}
|
||||
|
||||
public ApplicationEntity getApplicationOrCreate(UserEntity userEntity, CallEntity callEntity, FormEntity formEntity) {
|
||||
ApplicationEntity applicationEntity = applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), callEntity.getId()).orElse(null);
|
||||
if (applicationEntity == null) {
|
||||
validateFormId(formEntity, callEntity);
|
||||
applicationEntity = createApplicationEntity(userEntity, callEntity);
|
||||
applicationEntity=saveApplicationEntity(applicationEntity);
|
||||
}
|
||||
return applicationEntity;
|
||||
}
|
||||
private ApplicationFormEntity getApplicationFormOrCreate(FormEntity formEntity, ApplicationEntity applicationEntity) {
|
||||
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
|
||||
if(applicationFormEntity == null){
|
||||
@@ -182,19 +171,30 @@ public class ApplicationDao {
|
||||
}
|
||||
|
||||
public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) {
|
||||
List<ApplicationFormFieldEntity> existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
||||
|
||||
List<ApplicationFormFieldEntity> applicationFormFieldEntity = formFieldResponseBeans.stream()
|
||||
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity))
|
||||
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields))
|
||||
.collect(Collectors.toList());
|
||||
return applicationFormFieldEntity;
|
||||
}
|
||||
|
||||
public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity) {
|
||||
ApplicationFormFieldEntity applicationFormFieldEntity;
|
||||
if (applicationFormFieldRequestBean.getId() == null || applicationFormFieldRequestBean.getId() == 0) {
|
||||
public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity,List<ApplicationFormFieldEntity> applicationFormFieldEntities ) {
|
||||
|
||||
ApplicationFormFieldEntity applicationFormFieldEntity=null;
|
||||
if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){
|
||||
applicationFormFieldEntity = new ApplicationFormFieldEntity();
|
||||
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
|
||||
}else {
|
||||
for (ApplicationFormFieldEntity applicationFormFieldEntity1 : applicationFormFieldEntities) {
|
||||
if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId())) {
|
||||
applicationFormFieldEntity = applicationFormFieldEntity1;
|
||||
break;
|
||||
} else {
|
||||
applicationFormFieldEntity = validateApplicationFormField(applicationFormFieldRequestBean.getId());
|
||||
applicationFormFieldEntity = new ApplicationFormFieldEntity();
|
||||
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId());
|
||||
Utils.setIfUpdated(applicationFormFieldEntity::getFieldValue, applicationFormFieldEntity::setFieldValue, applicationFormFieldRequestBean.getFieldValue());
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.util.List;
|
||||
|
||||
public interface ApplicationService {
|
||||
|
||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId);
|
||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId);
|
||||
|
||||
ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId);
|
||||
|
||||
|
||||
@@ -40,9 +40,9 @@ public class ApplicationServiceImpl implements ApplicationService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) {
|
||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) {
|
||||
UserEntity userEntity = validator.validateUser(request);
|
||||
return applicationDao.createApplication(applicationRequestBean,userEntity,formId);
|
||||
return applicationDao.createApplication(applicationRequestBean,userEntity,formId,applicationId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,11 +37,12 @@ public interface ApplicationApi {
|
||||
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
||||
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
||||
@PutMapping(value = "/form/{formId}",
|
||||
@PutMapping(value = "/{applicationId}",
|
||||
produces = { "application/json" })
|
||||
ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request,
|
||||
@Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequestBean applicationRequestBean,
|
||||
@Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId);
|
||||
@Parameter(description = "The application id", required = true) @PathVariable(value = "applicationId", required = true) Long applicationId,
|
||||
@Parameter(description = "The form ID", required = true) @RequestParam("formId") Long formId);
|
||||
|
||||
@Operation(summary = "Api to get an application by id",
|
||||
responses = {
|
||||
|
||||
@@ -36,8 +36,8 @@ public class ApplicationApiController implements ApplicationApi {
|
||||
private ApplicationService applicationService;
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) {
|
||||
ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,formId);
|
||||
public ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) {
|
||||
ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,applicationId,formId);
|
||||
return ResponseEntity.status(HttpStatus.CREATED)
|
||||
.body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user