diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java index 23095ca69..909dc97e8 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java @@ -80,7 +80,7 @@ public record EndDtAfterStartDtRule( LocalDate startDt = getterStartDt.apply(validatedObject); if (endDt == null) return required ? of(errorEmptyRequiredValue, endDtFieldName) : Optional.empty(); if (startDt == null) return required ? of(errorEmptyRequiredValue, startDtFieldName) : Optional.empty(); - if (endDt.isAfter(startDt)) return of(errorEndDtAfterStartDt); + if (endDt.isAfter(startDt)) return of(errorEndDtAfterStartDt, startDtFieldName, endDtFieldName); return Optional.empty(); } } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java new file mode 100644 index 000000000..00024133f --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java @@ -0,0 +1,82 @@ +package ru.spcex.clearing.company.config.validation; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.platform.dictionary.DocumentTypeDictionary; +import ru.spcex.clearing.company.error.CompanyErrors; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest; +import ru.spcex.clearing.validation.common.rules.*; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.enumeration.DocumentTypes; +import ru.spcex.platform.enumeration.WorkflowStatus; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.validation.IValidator; +import ru.spcex.platform.utils.validation.ValidatorImpl; + +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; + +@Configuration +public class ProfileDocumentValidationConfig { + + @Bean("profileDocumentNewRequestValidation") + public Function profileDocumentNewRequestValidator( + Map> imdgForValidation + ) { + return profileDocumentNewRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(profileDocumentNewRequest); + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + addImdg.accept(IMDGDistributedNames.Map_Company); + addImdg.accept(IMDGDistributedNames.Map_DocumentTypeDictionary); + addImdg.accept(IMDGDistributedNames.Map_ProfileDocument); + return new ValidatorImpl<>(context, + IdPresentRule.instance("companyId", + ProfileDocumentNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled), + EnumPresentRule.instance("documentType", + ProfileDocumentNewRequest::getDocumentType, + DocumentTypes.values(), + CompanyErrors.WrongFieldValue, + CompanyErrors.RequiredFieldEmpty), + DictionaryPresentRule.instance("documentType", + ProfileDocumentNewRequest::getDocumentType, + IMDGDistributedNames.Map_DocumentTypeDictionary, + DocumentTypeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.WrongFieldValue), + FieldRequiredRule.instance("issueDate", + ProfileDocumentNewRequest::getIssueDate, + CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("issuer", + ProfileDocumentNewRequest::getIssuer, + CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("issuerCode", + ProfileDocumentNewRequest::getIssuerCode, + CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("name", + ProfileDocumentNewRequest::getName, + CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("number", + ProfileDocumentNewRequest::getNumber, + CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("place", + ProfileDocumentNewRequest::getPlace, + CompanyErrors.RequiredFieldEmpty), + EndDtAfterStartDtRule.instance("validFromDate", "validToDate", + ProfileDocumentNewRequest::getValidFromDate, + ProfileDocumentNewRequest::getValidToDate, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.WrongFieldValue) + ); + }; + } +}