profileDocumentNewRequestValidator

This commit is contained in:
akulikov 2023-04-04 11:32:30 +03:00
parent f334a31b10
commit 7eb629f158
2 changed files with 83 additions and 1 deletions

View file

@ -80,7 +80,7 @@ public record EndDtAfterStartDtRule<R>(
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();
}
}

View file

@ -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<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return profileDocumentNewRequest -> {
ImdgValidationContext<ProfileDocumentNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(profileDocumentNewRequest);
Consumer<String> 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)
);
};
}
}