This commit is contained in:
parent
d112247628
commit
89cad0d718
2 changed files with 57 additions and 1 deletions
|
|
@ -0,0 +1,55 @@
|
||||||
|
package ru.spcex.clearing.dflt.management.component.validation;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||||
|
import ru.spcex.clearing.dflt.management.config.ValidationConfig;
|
||||||
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyUpdateRequest;
|
||||||
|
import ru.spcex.platform.enumeration.CompanyRole;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
public class OrderCurrencyChangeOnlyLccCompany
|
||||||
|
implements IValidationRule<ImdgValidationContext<OrderCompanyUpdateRequest>> {
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(ValidationConfig.class);
|
||||||
|
public static OrderCurrencyChangeOnlyLccCompany getInstance() {
|
||||||
|
return new OrderCurrencyChangeOnlyLccCompany();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyUpdateRequest> ctx) {
|
||||||
|
Imdg<CompanyRoleSet> cmpRoleImdg = ctx.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||||
|
Imdg<Company> companyImdg = ctx.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
ImdgPredicateBuilder cmpRolePb = cmpRoleImdg.predicateBuilder();
|
||||||
|
CompanyRoleSet companyRoleSet = cmpRoleImdg.getFirstObjectByPredicate(
|
||||||
|
cmpRolePb.equals("companyRole", CompanyRole.CLCC.getKey())
|
||||||
|
);
|
||||||
|
if (companyRoleSet == null) {
|
||||||
|
log.error("couldn't find companyRole CLCC");
|
||||||
|
return of(DefaultManagementErrors.RecordNotFound, "companyRole[CLCC]");
|
||||||
|
}
|
||||||
|
Company clccCmp = companyImdg.getSingleObjectByID(companyRoleSet.getCompanyId());
|
||||||
|
if (clccCmp == null) {
|
||||||
|
log.error("couldn't find company CLCC");
|
||||||
|
return of(DefaultManagementErrors.RecordNotFound, "company[CLCC]");
|
||||||
|
}
|
||||||
|
OrderCompanyUpdateRequest order = ctx.getValidatedObject();
|
||||||
|
if (Objects.equals(order.getCompanyId(), clccCmp.getId())) {
|
||||||
|
return of(DefaultManagementErrors.OperationNotAllowed);
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String ruleName() {
|
||||||
|
return "OrderCurrencyOnlyLccCompany";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,6 +20,7 @@ import ru.clearing.platform.dictionary.OrderStatusDictionary;
|
||||||
import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
||||||
import ru.clearing.platform.dictionary.SideDictionary;
|
import ru.clearing.platform.dictionary.SideDictionary;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
||||||
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyChangeOnlyLccCompany;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyCompanyNotChanged;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyCompanyNotChanged;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyOnlyLccCompany;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyOnlyLccCompany;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
||||||
|
|
@ -444,7 +445,7 @@ public class ValidationConfig {
|
||||||
//fixme проверить что tcr.getCompanyId() = companyId из запроса?
|
//fixme проверить что tcr.getCompanyId() = companyId из запроса?
|
||||||
return new ValidatorImpl<>(ctx,
|
return new ValidatorImpl<>(ctx,
|
||||||
orderCurrencyPresent,
|
orderCurrencyPresent,
|
||||||
OrderCurrencyOnlyLccCompany.getInstance(),
|
OrderCurrencyChangeOnlyLccCompany.getInstance(),
|
||||||
companyPresentRule,
|
companyPresentRule,
|
||||||
tcrPresent,
|
tcrPresent,
|
||||||
QuantityLotGreaterThanZero.INSTANCE,
|
QuantityLotGreaterThanZero.INSTANCE,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue