profileDocumentNewRequestValidator
This commit is contained in:
parent
f334a31b10
commit
7eb629f158
2 changed files with 83 additions and 1 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue