Exemple #1
0
        public async Task <ConditionTypeDto> GetBy(Guid tenantId, int code)
        {
            if (tenantId == Guid.Empty)
            {
                throw new ArgumentException($"The provided tenant Id is invalid: { tenantId }", nameof(tenantId));
            }

            if (code <= 0)
            {
                throw new ArgumentException($"The provided condition type code is invalid: { code }", nameof(code));
            }

            ConditionTypeKey key = ConditionTypeKey.New(tenantId, code);

            return(await this.conditionTypeRepository.GetById(key)
                   .ContinueWith(conditionTypeTask =>
            {
                ConditionType conditionType = conditionTypeTask.GetAwaiter().GetResult();

                if (conditionType != null)
                {
                    return this.ConvertToDto(conditionType);
                }

                return null;
            }));
        }
        private async Task <IConditionNode> CreateConditionNodeRecursive(Guid tenantId, CreateConditionNodeBase createConditionNodeBase)
        {
            switch (createConditionNodeBase)
            {
            case CreateComposedConditionNode cccn:
                LogicalOperatorCodes logicalOperatorCode = (LogicalOperatorCodes)cccn.LogicalOperatorCode;

                List <IConditionNode> conditionNodes = new List <IConditionNode>();
                foreach (CreateConditionNodeBase ccnb in cccn.ChildNodes)
                {
                    IConditionNode conditionNode = await this.CreateConditionNodeRecursive(tenantId, ccnb);

                    conditionNodes.Add(conditionNode);
                }

                return(this.conditionNodeAbstractFactory.CreateComposedConditionNode(logicalOperatorCode, conditionNodes));

            case CreateValueConditionNode cvcn:
                ConditionTypeKey conditionTypeKey = ConditionTypeKey.New(tenantId, cvcn.ConditionTypeCode);
                ConditionType    conditionType    = await this.conditionTypeRepository.GetById(conditionTypeKey);

                DataTypeCodes dataTypeCode = (DataTypeCodes)cvcn.DataTypeCode;
                OperatorCodes operatorCode = (OperatorCodes)cvcn.OperatorCode;

                return(this.conditionNodeAbstractFactory.CreateValueConditionNode(conditionType, dataTypeCode, operatorCode, cvcn.RightHandOperand));

            default:
                throw new NotSupportedException("Unsupported condition node creation.");
            }
        }
Exemple #3
0
        public async Task Remove(Guid tenantId, int code)
        {
            ConditionTypeKey key           = ConditionTypeKey.New(tenantId, code);
            ConditionType    conditionType = await this.conditionTypeRepository.GetById(key);

            if (conditionType == null)
            {
                throw new NotFoundException(FormattableString.Invariant($"{nameof(ConditionType)} was not found. Key = {key}"));
            }

            await this.conditionTypeRepository.Remove(conditionType);
        }
        protected override string ValidateCurrent(CreateValueConditionNode createValueConditionNode, Guid tenantId)
        {
            ConditionTypeKey conditionTypeKey = ConditionTypeKey.New(tenantId, createValueConditionNode.ConditionTypeCode);
            ConditionType    conditionType    = this.conditionTypeRepository.GetById(conditionTypeKey).GetAwaiter().GetResult();

            if (conditionType == null)
            {
                return(string.Format(InvariantResources.R007, tenantId, createValueConditionNode.ConditionTypeCode));
            }

            return(null);
        }
Exemple #5
0
        public async Task <ConditionTypeDto> Update(ConditionTypeDto conditionTypeDto)
        {
            ConditionTypeKey key           = ConditionTypeKey.New(conditionTypeDto.TenantId, conditionTypeDto.Code);
            ConditionType    conditionType = await this.conditionTypeRepository.GetById(key);

            if (conditionType == null)
            {
                throw new NotFoundException(FormattableString.Invariant($"{nameof(ConditionType)} was not found. Key = {key}"));
            }

            conditionType.Name        = conditionTypeDto.Name;
            conditionType.Description = conditionTypeDto.Description;

            return(await this.conditionTypeRepository.Update(conditionType)
                   .ContinueWith(tenantTask =>
            {
                tenantTask.GetAwaiter().GetResult();
                return this.ConvertToDto(conditionType);
            }));
        }