Updated get endpoints

This commit is contained in:
rajesh
2024-09-14 20:22:03 +05:30
parent 492317be2e
commit 6224ab526a
13 changed files with 256 additions and 73 deletions

View File

@@ -5,9 +5,9 @@ import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.*;
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean;
import net.gepafin.tendermanagement.model.request.ApplicationRequest;
import net.gepafin.tendermanagement.model.request.ApplicationRequestBean;
import net.gepafin.tendermanagement.model.response.ApplicationFormFieldResponseBean;
import net.gepafin.tendermanagement.model.response.ApplicationResponseBean;
import net.gepafin.tendermanagement.model.response.*;
import net.gepafin.tendermanagement.repositories.ApplicationFormFieldRepository;
import net.gepafin.tendermanagement.repositories.ApplicationFormRepository;
import net.gepafin.tendermanagement.repositories.ApplicationRepository;
@@ -50,9 +50,12 @@ public class ApplicationDao {
@Autowired
private FormService formService;
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long callId) {
CallEntity call = callService.validateCall(callId);
FormEntity formEntity = formService.validateForm(applicationRequestBean.getFormId());
@Autowired
private FormDao formDao;
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId) {
FormEntity formEntity = formService.validateForm(formId);
CallEntity call = callService.validateCall(formEntity.getCall().getId());
ApplicationEntity applicationEntity = getApplicationOrCreate(userEntity, call, formEntity);
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
@@ -117,47 +120,25 @@ public class ApplicationDao {
log.info("Application deleted with ID: {}", id);
}
public List<ApplicationResponseBean> getAllApplications(Map<String, Object> userInfo) {
public List<ApplicationResponse> getAllApplications(UserEntity userEntity) {
log.info("Fetching all applications");
String userIdStr = (String) userInfo.get("userId");
Long userId = Long.parseLong(userIdStr);
List<ApplicationEntity> applicationEntities = applicationRepository.findByUserIdAndIsDeletedFalse(userId);
List<Long> applicationIds = applicationEntities.stream()
.map(ApplicationEntity::getId)
.collect(Collectors.toList());
List<ApplicationResponse> applicationResponses=new ArrayList<>();
List<ApplicationEntity> applicationEntities = applicationRepository.findByUserIdAndIsDeletedFalse(userEntity.getId());
for(ApplicationEntity applicationEntity:applicationEntities){
ApplicationResponse responseBean = getApplicationResponse(applicationEntity);
applicationResponses.add(responseBean);
}
return applicationResponses;
}
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationIdIn(applicationIds);
List<Long> applicationFormIds = applicationFormEntities.stream()
.map(ApplicationFormEntity::getId)
.collect(Collectors.toList());
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormIdIn(applicationFormIds);
return applicationEntities.stream().map(applicationEntity -> {
ApplicationResponseBean responseBean = new ApplicationResponseBean();
responseBean.setCallId(applicationEntity.getCall().getId());
responseBean.setSubmissionDate(applicationEntity.getSubmissionDate());
responseBean.setStatus(applicationEntity.getStatus());
responseBean.setComments(applicationEntity.getComments());
List<ApplicationFormFieldResponseBean> formFieldResponseBeans = applicationFormFieldEntities.stream()
.filter(field -> field.getApplicationForm().getApplication().getId().equals(applicationEntity.getId()))
.map(field -> {
ApplicationFormFieldResponseBean fieldResponseBean = new ApplicationFormFieldResponseBean();
fieldResponseBean.setId(field.getId());
fieldResponseBean.setFieldId(field.getFieldId());
fieldResponseBean.setApplicationFormId(field.getApplicationForm().getId());
fieldResponseBean.setFieldValue(field.getFieldValue());
return fieldResponseBean;
}).collect(Collectors.toList());
responseBean.setFormFields(formFieldResponseBeans);
return responseBean;
}).collect(Collectors.toList());
private ApplicationResponse getApplicationResponse(ApplicationEntity applicationEntity) {
ApplicationResponse responseBean = new ApplicationResponse();
responseBean.setId(applicationEntity.getId());
responseBean.setCallId(applicationEntity.getCall().getId());
responseBean.setSubmissionDate(applicationEntity.getSubmissionDate());
responseBean.setStatus(applicationEntity.getStatus());
responseBean.setComments(applicationEntity.getComments());
return responseBean;
}
public ApplicationEntity validateApplication(Long id) {
@@ -247,4 +228,82 @@ public class ApplicationDao {
ApplicationEntity applicationEntity=applicationRepository.save(application);
return applicationEntity;
}
public ApplicationGetResponseBean getApplicationByFormId( Long applicationId,Long formId, UserEntity userEntity) {
ApplicationEntity applicationEntity=null;
List<FormApplicationResponse> formApplicationResponses = new ArrayList<>();
List<FormEntity> formEntities = new ArrayList<>();
Optional<ApplicationEntity> applicationEntity1 = applicationRepository.findById(applicationId);
applicationEntity=applicationEntity1.get();
if (applicationEntity == null) {
throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG));
}
if (formId != null) {
FormEntity formEntity = formService.validateForm(formId);
applicationEntity = applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), formEntity.getCall().getId());
formEntities.add(formEntity);
processForm(formEntity, applicationEntity, formApplicationResponses);
}
else {
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId());
for (ApplicationFormEntity applicationFormEntity : applicationFormEntities) {
FormEntity form = formService.validateForm(applicationFormEntity.getForm().getId());
formEntities.add(form);
processForm(form, applicationEntity, formApplicationResponses);
}
}
return createApplicationGetResponseBean(applicationEntity, formEntities, formApplicationResponses);
}
private void processForm(FormEntity formEntity, ApplicationEntity applicationEntity, List<FormApplicationResponse> formApplicationResponses) {
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
if(applicationFormEntity!=null) {
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
FormApplicationResponse formApplicationResponse = createFormApplicationResponse(formEntity);
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans = convertApplicationFormFieldEntitiesToApplicationFormFieldResponseBeans(applicationFormFieldEntities, applicationFormEntity.getId());
formApplicationResponse.setFormFields(applicationFormFieldResponseBeans);
formApplicationResponses.add(formApplicationResponse);
}
}
private ApplicationGetResponseBean createApplicationGetResponseBean(ApplicationEntity applicationEntity, List<FormEntity> formEntities, List<FormApplicationResponse> formApplicationResponses) {
ApplicationGetResponseBean applicationGetResponseBean =createApplicationGetResponseBean(applicationEntity);
applicationGetResponseBean.setForm(formApplicationResponses);
return applicationGetResponseBean;
}
private ApplicationGetResponseBean createApplicationGetResponseBean(ApplicationEntity applicationEntity) {
ApplicationGetResponseBean applicationGetResponseBean = new ApplicationGetResponseBean();
applicationGetResponseBean.setId(applicationEntity.getId());
applicationGetResponseBean.setStatus(applicationEntity.getStatus());
applicationGetResponseBean.setComments(applicationEntity.getComments());
applicationGetResponseBean.setSubmissionDate(applicationEntity.getSubmissionDate());
return applicationGetResponseBean;
}
private FormApplicationResponse createFormApplicationResponse(FormEntity formEntity) {
FormApplicationResponse formApplicationResponse=new FormApplicationResponse();
formApplicationResponse.setId(formEntity.getId());
formApplicationResponse.setLabel(formEntity.getLabel());
formApplicationResponse.setCallId(formEntity.getCall().getId());
formApplicationResponse.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class));
return formApplicationResponse;
}
public ApplicationResponse createApplicationByCallId(ApplicationRequest applicationRequest,Long callId,UserEntity userEntity){
CallEntity call=callService.validateCall(callId);
checkIfApplicationExists(call,userEntity);
ApplicationEntity applicationEntity=saveApplicationEntity(createApplicationEntity(userEntity,call));
ApplicationResponse applicationResponse=getApplicationResponse(applicationEntity);
return applicationResponse;
}
public void checkIfApplicationExists(CallEntity call,UserEntity userEntity){
ApplicationEntity applicationEntity=applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(),call.getId());
if(applicationEntity!=null){
throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_EXISTS));
}
}
}