|
|
|
|
@@ -4,6 +4,7 @@ import net.gepafin.tendermanagement.config.Translator;
|
|
|
|
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|
|
|
|
import net.gepafin.tendermanagement.entities.*;
|
|
|
|
|
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
|
|
|
|
|
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
|
|
|
|
|
import net.gepafin.tendermanagement.enums.RoleStatusEnum;
|
|
|
|
|
import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean;
|
|
|
|
|
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.ApplicationRepository;
|
|
|
|
|
import net.gepafin.tendermanagement.service.CallService;
|
|
|
|
|
import net.gepafin.tendermanagement.service.DocumentService;
|
|
|
|
|
import net.gepafin.tendermanagement.service.FormService;
|
|
|
|
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
|
|
|
|
import net.gepafin.tendermanagement.util.Utils;
|
|
|
|
|
@@ -48,6 +50,12 @@ public class ApplicationDao {
|
|
|
|
|
@Autowired
|
|
|
|
|
private FormService formService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private DocumentService documentService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private CallDao callDao;
|
|
|
|
|
|
|
|
|
|
public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) {
|
|
|
|
|
FormEntity formEntity = formService.validateForm(formId);
|
|
|
|
|
CallEntity call = callService.validatePublishedCall(formEntity.getCall().getId());
|
|
|
|
|
@@ -57,7 +65,7 @@ public class ApplicationDao {
|
|
|
|
|
}
|
|
|
|
|
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
|
|
|
|
|
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
|
|
|
|
|
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity);
|
|
|
|
|
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity,formEntity);
|
|
|
|
|
return getApplicationById(applicationEntity.getId(),formEntity.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -97,15 +105,56 @@ public class ApplicationDao {
|
|
|
|
|
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
|
|
|
|
|
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
|
|
|
|
|
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
|
|
|
|
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) {
|
|
|
|
|
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
|
|
|
|
|
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
|
|
|
|
|
}
|
|
|
|
|
applicationFormFieldResponseBeans=createApplicationFormFieldResponse(applicationFormFieldEntities, applicationFormEntity, applicationFormFieldResponseBeans);
|
|
|
|
|
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
|
|
|
|
|
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
|
|
|
|
|
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) {
|
|
|
|
|
log.info("Deleting application with ID: {}", id);
|
|
|
|
|
|
|
|
|
|
@@ -188,18 +237,21 @@ public class ApplicationDao {
|
|
|
|
|
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> applicationFormFieldEntity = formFieldResponseBeans.stream()
|
|
|
|
|
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields))
|
|
|
|
|
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields,formEntity))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity);
|
|
|
|
|
|
|
|
|
|
if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){
|
|
|
|
|
applicationFormFieldEntity = new ApplicationFormFieldEntity();
|
|
|
|
|
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
|
|
|
|
|
@@ -219,6 +271,31 @@ public class ApplicationDao {
|
|
|
|
|
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) {
|
|
|
|
|
Optional<ApplicationFormFieldEntity> applicationFormFieldEntity = applicationFormFieldRepository.findById(applicationFormFieldId);
|
|
|
|
|
if (applicationFormFieldEntity.isEmpty()) {
|
|
|
|
|
@@ -290,12 +367,12 @@ public class ApplicationDao {
|
|
|
|
|
|
|
|
|
|
public FormApplicationResponse processForm(FormEntity formEntity, ApplicationEntity applicationEntity) {
|
|
|
|
|
FormApplicationResponse formApplicationResponse = createFormApplicationResponse(formEntity);
|
|
|
|
|
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans =new ArrayList<>();
|
|
|
|
|
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
|
|
|
|
|
if(applicationFormEntity!=null) {
|
|
|
|
|
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
|
|
|
|
// formApplicationResponse = createFormApplicationResponse(formEntity);
|
|
|
|
|
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans = convertApplicationFormFieldEntitiesToApplicationFormFieldResponseBeans(applicationFormFieldEntities, applicationFormEntity.getId());
|
|
|
|
|
|
|
|
|
|
applicationFormFieldResponseBeans = createApplicationFormFieldResponse(applicationFormFieldEntities, applicationFormEntity,applicationFormFieldResponseBeans);
|
|
|
|
|
formApplicationResponse.setFormFields(applicationFormFieldResponseBeans);
|
|
|
|
|
}
|
|
|
|
|
return formApplicationResponse;
|
|
|
|
|
|