diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightSettingAlreadyPresent.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightSettingAlreadyPresent.java new file mode 100644 index 000000000..ccfaccba8 --- /dev/null +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightSettingAlreadyPresent.java @@ -0,0 +1,34 @@ +package ru.spcex.clearing.dflt.management.component.validation; + +import java.util.Collection; +import java.util.Optional; +import ru.clearing.classes.statics.data.misc.OvernightSettings; +import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.cud.misc.OvernightSettingsNewRequest; +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 OvernightSettingAlreadyPresent implements IValidationRule> { + + public static final OvernightSettingAlreadyPresent INSTANCE = new OvernightSettingAlreadyPresent(); + + @Override + public Optional validate(ImdgValidationContext ctx) { + OvernightSettingsNewRequest validatedObject = ctx.getValidatedObject(); + Imdg osImdg = ctx.obtainMap(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class); + ImdgPredicateBuilder pb = osImdg.predicateBuilder(); + + Collection alreadyPresentOs = osImdg.getCollectionObjectsByPredicate(pb.and( + pb.equals("market", validatedObject.getMarket()), + pb.equals("companyId", validatedObject.getCompanyId()) + )); + if (!alreadyPresentOs.isEmpty()) { + return of(DefaultManagementErrors.RecordAlreadyPresent); + } + return empty(); + } +} diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java index 88a08e07b..fab3cf57c 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java @@ -16,6 +16,7 @@ import ru.clearing.platform.dictionary.OvernightTypeDictionary; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored; +import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent; import ru.spcex.clearing.dflt.management.component.validation.OvernightTypeChanged; import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero; import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent; @@ -99,7 +100,8 @@ public class ValidationConfig { DefaultManagementErrors.DictionaryNotFound, true ), - DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true) //fixme + DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true), //fixme + OvernightSettingAlreadyPresent.INSTANCE ); }; } @@ -114,6 +116,7 @@ public class ValidationConfig { ctx.addImdg(IMDGDistributedNames.Map_OvernightTypeDictionary, osTypeDictionaryImdg); ctx.addImdg(IMDGDistributedNames.Map_OvernightSettings, overnightSettingsImdg); //fixme error codes + //fixme в ТЗ нет проверки OvernightSettingAlreadyPresent - скорее всего ошибка return new ValidatorImpl<>(ctx, IdPresentRule.instance("companyId", OvernightSettingsUpdateRequest::getCompanyId,