Updated response of application form data

This commit is contained in:
nisha
2024-09-24 13:09:29 +05:30
parent bd88ac091f
commit 98fc120cff
4 changed files with 99 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.entities.*;
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
import net.gepafin.tendermanagement.enums.RoleStatusEnum; import net.gepafin.tendermanagement.enums.RoleStatusEnum;
import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean; import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean;
import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequest;
@@ -13,6 +14,7 @@ import net.gepafin.tendermanagement.repositories.ApplicationFormFieldRepository;
import net.gepafin.tendermanagement.repositories.ApplicationFormRepository; import net.gepafin.tendermanagement.repositories.ApplicationFormRepository;
import net.gepafin.tendermanagement.repositories.ApplicationRepository; import net.gepafin.tendermanagement.repositories.ApplicationRepository;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.service.DocumentService;
import net.gepafin.tendermanagement.service.FormService; import net.gepafin.tendermanagement.service.FormService;
import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.DateTimeUtil;
import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Utils;
@@ -48,6 +50,12 @@ public class ApplicationDao {
@Autowired @Autowired
private FormService formService; private FormService formService;
@Autowired
private DocumentService documentService;
@Autowired
private CallDao callDao;
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) { public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) {
FormEntity formEntity = formService.validateForm(formId); FormEntity formEntity = formService.validateForm(formId);
CallEntity call = callService.validatePublishedCall(formEntity.getCall().getId()); CallEntity call = callService.validatePublishedCall(formEntity.getCall().getId());
@@ -57,7 +65,7 @@ public class ApplicationDao {
} }
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity); ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity); createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity,formEntity);
return getApplicationById(applicationEntity.getId(),formEntity.getId()); return getApplicationById(applicationEntity.getId(),formEntity.getId());
} }
@@ -97,15 +105,56 @@ public class ApplicationDao {
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>(); List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null; ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) { applicationFormFieldResponseBeans=createApplicationFormFieldResponse(applicationFormFieldEntities, applicationFormEntity, applicationFormFieldResponseBeans);
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
}
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity); ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans); applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
return applicationResponseBean; return applicationResponseBean;
} }
private List<ApplicationFormFieldResponseBean> createApplicationFormFieldResponse(
List<ApplicationFormFieldEntity> applicationFormFieldEntities,
ApplicationFormEntity applicationFormEntity,
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans) {
List<ContentResponseBean> contentResponseBeans = Utils.convertJsonStringToList(
applicationFormEntity.getForm().getContent(), ContentResponseBean.class);
for (ApplicationFormFieldEntity applicationFormFieldEntity : applicationFormFieldEntities) {
Optional<ContentResponseBean> fileUploadContent = contentResponseBeans.stream()
.filter(contentResponseBean -> "fileupload".equals(contentResponseBean.getName()) &&
contentResponseBean.getId().equals(applicationFormFieldEntity.getFieldId()))
.findFirst();
List<DocumentResponseBean> documentResponseBeans = new ArrayList<>();
if (fileUploadContent.isPresent()) {
String documentId = applicationFormFieldEntity.getFieldValue();
if (documentId != null && !documentId.isEmpty()) {
documentResponseBeans = Arrays.stream(documentId.split(","))
.map(String::trim)
.map(Long::parseLong)
.map(docId -> {
DocumentEntity documentEntity = documentService.validateDocument(docId);
if (Boolean.FALSE.equals(DocumentSourceTypeEnum.APPLICATION.getValue().equals(documentEntity.getSource()))) {
throw new CustomValidationException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND));
}
return documentEntity;
})
.map(callDao::convertToDocumentResponseBean)
.collect(Collectors.toList());
}
}
ApplicationFormFieldResponseBean responseBean = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(
applicationFormFieldEntity, applicationFormEntity.getId());
if (!documentResponseBeans.isEmpty()) {
responseBean.setFieldValue(documentResponseBeans);
}
applicationFormFieldResponseBeans.add(responseBean);
}
return applicationFormFieldResponseBeans;
}
public void deleteById(Long id) { public void deleteById(Long id) {
log.info("Deleting application with ID: {}", id); log.info("Deleting application with ID: {}", id);
@@ -188,18 +237,21 @@ public class ApplicationDao {
return applicationFormEntity; return applicationFormEntity;
} }
public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) { public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity,FormEntity formEntity) {
List<ApplicationFormFieldEntity> existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); List<ApplicationFormFieldEntity> existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
List<ApplicationFormFieldEntity> applicationFormFieldEntity = formFieldResponseBeans.stream() List<ApplicationFormFieldEntity> applicationFormFieldEntity = formFieldResponseBeans.stream()
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields)) .map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields,formEntity))
.collect(Collectors.toList()); .collect(Collectors.toList());
return applicationFormFieldEntity; return applicationFormFieldEntity;
} }
public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity,List<ApplicationFormFieldEntity> applicationFormFieldEntities ) { public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity,List<ApplicationFormFieldEntity> applicationFormFieldEntities ,FormEntity formEntity) {
ApplicationFormFieldEntity applicationFormFieldEntity=null; ApplicationFormFieldEntity applicationFormFieldEntity=null;
validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity);
if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){ if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){
applicationFormFieldEntity = new ApplicationFormFieldEntity(); applicationFormFieldEntity = new ApplicationFormFieldEntity();
applicationFormFieldEntity.setApplicationForm(applicationFormEntity); applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
@@ -219,6 +271,31 @@ public class ApplicationDao {
return applicationFormFieldRepository.save(applicationFormFieldEntity); return applicationFormFieldRepository.save(applicationFormFieldEntity);
} }
private List<Long> validateFileUploadDocuments(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity) {
List<Long> documentIds=null;
List<ContentResponseBean> contentResponseBeans=Utils.convertJsonStringToList(formEntity.getContent(),ContentResponseBean.class);
for (ContentResponseBean contentResponseBean:contentResponseBeans){
if(Boolean.TRUE.equals(contentResponseBean.getName().equals("fileupload"))){
if(contentResponseBean.getId().equals(applicationFormFieldRequestBean.getFieldId())) {
String documentId = applicationFormFieldRequestBean.getFieldValue();
documentIds = validateDocumentIds(documentId);
}
}
}
return documentIds;
}
private List<Long> validateDocumentIds(String documentId) {
if (documentId != null && !documentId.isEmpty()) {
return Arrays.stream(documentId.split(","))
.map(Long::parseLong)
.peek(docId -> documentService.validateDocument(docId))
.collect(Collectors.toList());
}
return Collections.emptyList();
}
public ApplicationFormFieldEntity validateApplicationFormField(Long applicationFormFieldId) { public ApplicationFormFieldEntity validateApplicationFormField(Long applicationFormFieldId) {
Optional<ApplicationFormFieldEntity> applicationFormFieldEntity = applicationFormFieldRepository.findById(applicationFormFieldId); Optional<ApplicationFormFieldEntity> applicationFormFieldEntity = applicationFormFieldRepository.findById(applicationFormFieldId);
if (applicationFormFieldEntity.isEmpty()) { if (applicationFormFieldEntity.isEmpty()) {
@@ -290,12 +367,12 @@ public class ApplicationDao {
public FormApplicationResponse processForm(FormEntity formEntity, ApplicationEntity applicationEntity) { public FormApplicationResponse processForm(FormEntity formEntity, ApplicationEntity applicationEntity) {
FormApplicationResponse formApplicationResponse = createFormApplicationResponse(formEntity); FormApplicationResponse formApplicationResponse = createFormApplicationResponse(formEntity);
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans =new ArrayList<>();
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId()); ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
if(applicationFormEntity!=null) { if(applicationFormEntity!=null) {
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
// formApplicationResponse = createFormApplicationResponse(formEntity); // formApplicationResponse = createFormApplicationResponse(formEntity);
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans = convertApplicationFormFieldEntitiesToApplicationFormFieldResponseBeans(applicationFormFieldEntities, applicationFormEntity.getId()); applicationFormFieldResponseBeans = createApplicationFormFieldResponse(applicationFormFieldEntities, applicationFormEntity,applicationFormFieldResponseBeans);
formApplicationResponse.setFormFields(applicationFormFieldResponseBeans); formApplicationResponse.setFormFields(applicationFormFieldResponseBeans);
} }
return formApplicationResponse; return formApplicationResponse;

View File

@@ -12,5 +12,5 @@ public class ApplicationFormFieldResponseBean extends BaseBean {
private String fieldId; private String fieldId;
private String fieldValue; private Object fieldValue;
} }

View File

@@ -1,6 +1,7 @@
package net.gepafin.tendermanagement.service; package net.gepafin.tendermanagement.service;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.entities.DocumentEntity;
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum; import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
import net.gepafin.tendermanagement.enums.DocumentTypeEnum; import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
@@ -17,4 +18,6 @@ public interface DocumentService {
public DocumentResponseBean updateDocument(HttpServletRequest httpServletRequest, Long documentId, MultipartFile file, DocumentTypeEnum documentTypeEnum); public DocumentResponseBean updateDocument(HttpServletRequest httpServletRequest, Long documentId, MultipartFile file, DocumentTypeEnum documentTypeEnum);
public DocumentResponseBean getDocument(HttpServletRequest httpServletRequest,Long documentId); public DocumentResponseBean getDocument(HttpServletRequest httpServletRequest,Long documentId);
public DocumentEntity validateDocument(Long id);
} }

View File

@@ -4,6 +4,7 @@ import java.util.List;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.dao.DocumentDao; import net.gepafin.tendermanagement.dao.DocumentDao;
import net.gepafin.tendermanagement.entities.DocumentEntity;
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum; import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
import net.gepafin.tendermanagement.enums.DocumentTypeEnum; import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
@@ -40,4 +41,10 @@ public class DocumentServiceImpl implements DocumentService {
public DocumentResponseBean getDocument(HttpServletRequest httpServletRequest, Long documentId) { public DocumentResponseBean getDocument(HttpServletRequest httpServletRequest, Long documentId) {
return documentDao.getDocument(documentId); return documentDao.getDocument(documentId);
} }
@Override
public DocumentEntity validateDocument(Long id){
return documentDao.validateDocument(id);
}
} }