Пример #1
0
        /// <inheritdoc/>
        public async Task DeleteAsync(
            DimensionStructure tobeDeleted,
            CancellationToken cancellationToken = default)
        {
            try
            {
                Check.IsNotNull(tobeDeleted);
                await _masterDataValidators.DimensionStructureValidator.ValidateAsync(tobeDeleted, o =>
                {
                    o.IncludeRuleSets(DimensionStructureValidatorRulesets.Delete);
                    o.ThrowOnFailures();
                }, cancellationToken).ConfigureAwait(false);

                using (MasterDataContext ctx = new MasterDataContext(_dbContextOptions))
                {
                    DimensionStructure res = await ctx.DimensionStructures
                                             .FirstOrDefaultAsync(w => w.Id == tobeDeleted.Id, cancellationToken).ConfigureAwait(false);

                    if (res != null)
                    {
                        ctx.DimensionStructures.Remove(res);
                        await ctx.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
                    }
                }
            }
            catch (Exception e)
            {
                string msg = $"{nameof(MasterDataDimensionStructureBusinessLogic)}." +
                             $"{nameof(DeleteAsync)} operation failed. " +
                             $"For further details see inner exception!";
                throw new MasterDataBusinessLogicDimensionStructureDatabaseOperationException(msg, e);
            }
        }
Пример #2
0
        /// <inheritdoc/>
        public async Task <DimensionStructure> GetByIdAsync(
            DimensionStructure dimensionStructure,
            CancellationToken cancellationToken = default)
        {
            try
            {
                Check.IsNotNull(dimensionStructure);

                await _masterDataValidators.DimensionStructureValidator.ValidateAsync(dimensionStructure, o =>
                {
                    o.IncludeRuleSets(DimensionStructureValidatorRulesets.GetById);
                    o.ThrowOnFailures();
                }, cancellationToken).ConfigureAwait(false);

                using (MasterDataContext ctx = new MasterDataContext(_dbContextOptions))
                {
                    DimensionStructure result = await ctx.DimensionStructures
                                                .FirstOrDefaultAsync(w => w.Id == dimensionStructure.Id, cancellationToken)
                                                .ConfigureAwait(false);

                    return(result);
                }
            }
            catch (Exception e)
            {
                string msg = $"{nameof(MasterDataDimensionBusinessLogic)}.{nameof(GetByIdAsync)} " +
                             $"operation failed. For further info see inner exception.";
                throw new MasterDataBusinessLogicDimensionStructureDatabaseOperationException(msg, e);
            }
        }
Пример #3
0
        /// <inheritdoc/>
        public async Task <DilibHttpClientResponse <DimensionStructure> > GetByIdAsync(
            DimensionStructure requested,
            CancellationToken cancellationToken = default)
        {
            Check.IsNotNull(requested);
            string url = $"{MasterDataApi.DimensionStructure.RouteBase}/{MasterDataApi.DimensionStructure.V1.GetById}";
            DilibHttpClientResponse <DimensionStructure> result = await _diLibHttpClient
                                                                  .PostAsync <DimensionStructure>(url, requested, cancellationToken)
                                                                  .ConfigureAwait(false);

            return(result);
        }
Пример #4
0
        /// <inheritdoc/>
        public async Task <DilibHttpClientResponse <DimensionStructure> > UpdateAsync(
            DimensionStructure payload,
            CancellationToken cancellationToken = default)
        {
            Check.IsNotNull(payload);
            string url = $"{MasterDataApi.DimensionStructure.RouteBase}/{MasterDataApi.DimensionStructure.V1.Update}";
            DilibHttpClientResponse <DimensionStructure> result = await _diLibHttpClient
                                                                  .PutAsync <DimensionStructure>(url, payload, cancellationToken)
                                                                  .ConfigureAwait(false);

            return(result);
        }
        public void ThenDimensionStructureIdPropertyIs(Table table)
        {
            KeyExpectedValueEntity instance = table.CreateInstance <KeyExpectedValueEntity>();

            DimensionStructure result = _scenarioContext[instance.Key] as DimensionStructure;

            Check.IsNotNull(result);

            int exp = Convert.ToInt32(instance.ExpectedValue);

            result.IsActive.Should().Be(exp);
        }
        public void ThenDimensionStructureIsActivePropertyEqualsTo(Table table)
        {
            KeyComparedToEntity instance = table.CreateInstance <KeyComparedToEntity>();

            DimensionStructure dimensionStructure = _scenarioContext[instance.Key] as DimensionStructure;

            Check.IsNotNull(dimensionStructure);
            DimensionStructure comparedTo = _scenarioContext[instance.ComparedTo] as DimensionStructure;

            Check.IsNotNull(comparedTo);

            dimensionStructure.IsActive.Should().Be(comparedTo.IsActive);
        }
        public async Task Throw_WhenInputObjectIsNull()
        {
            // Arrange
            DimensionStructure queryObject = null;

            // Action
            Func <Task> action = async() =>
            {
                await _masterDataBusinessLogic
                .MasterDataDimensionStructureBusinessLogic
                .InactivateAsync(queryObject)
                .ConfigureAwait(false);
            };

            // Assert
            action.Should().ThrowExactly <MasterDataBusinessLogicDimensionStructureDatabaseOperationException>();
        }
        public async Task WhenADimensionStructureIsRequested(Table table)
        {
            KeyResultKeyEntity instance = table.CreateInstance <KeyResultKeyEntity>();

            DimensionStructure requested = _scenarioContext[instance.Key] as DimensionStructure;

            DilibHttpClientResponse <DimensionStructure> result = await _masterDataHttpClient
                                                                  .DimensionStructureHttpClient
                                                                  .GetByIdAsync(requested)
                                                                  .ConfigureAwait(false);

            if (result.IsSuccess)
            {
                _scenarioContext.Add(instance.ResultKey, result.Result);
            }
            else
            {
                _scenarioContext.Add(instance.ResultKey, result.HttpStatusCode);
            }
        }
Пример #9
0
        public async Task GivenDimensionStructureIsSentToTheAddEndpoint(Table table)
        {
            KeyResultKeyEntity instance = table.CreateInstance <KeyResultKeyEntity>();

            DimensionStructure saved = _scenarioContext[instance.Key] as DimensionStructure;

            DilibHttpClientResponse <DimensionStructure> result = await _masterDataHttpClient
                                                                  .DimensionStructureHttpClient
                                                                  .AddAsync(saved)
                                                                  .ConfigureAwait(false);

            if (result.IsSuccess)
            {
                _scenarioContext.Add(instance.ResultKey, result.Result);
            }
            else
            {
                _scenarioContext.Add(instance.ResultKey, result.HttpStatusCode);
            }
        }
        public async Task Throw_WhenInputIsInvalid()
        {
            // Arrange
            DimensionStructure query = new DimensionStructure()
            {
                Id = 0,
            };

            // Action
            Func <Task> task = async() =>
            {
                await _masterDataBusinessLogic
                .MasterDataDimensionStructureBusinessLogic
                .GetByIdAsync(query)
                .ConfigureAwait(false);
            };

            // Assert
            task.Should().ThrowExactly <MasterDataBusinessLogicDimensionStructureDatabaseOperationException>();
        }
Пример #11
0
        public async Task ThenADimensionStructureIsRequestedResultIs(Table table)
        {
            KeyExpectedValueEntity instance = table.CreateInstance <KeyExpectedValueEntity>();

            DimensionStructure dimensionStructure = _scenarioContext[instance.Key] as DimensionStructure;

            DilibHttpClientResponse <DimensionStructure> result = await _masterDataHttpClient
                                                                  .DimensionStructureHttpClient
                                                                  .GetByIdAsync(dimensionStructure)
                                                                  .ConfigureAwait(false);

            if (result.IsSuccess)
            {
                result.Result.Should().BeNull();
            }
            else
            {
                result.IsSuccess.Should().BeTrue();
            }
        }
Пример #12
0
        public async Task Return_TheSpecifiedEntity()
        {
            // Arrange
            DimensionStructure orig       = _dimensionStructureFaker.Generate();
            DimensionStructure origResult = await _masterDataBusinessLogic
                                            .MasterDataDimensionStructureBusinessLogic
                                            .AddAsync(orig)
                                            .ConfigureAwait(false);

            // Action
            DimensionStructure result = await _masterDataBusinessLogic
                                        .MasterDataDimensionStructureBusinessLogic
                                        .GetByIdAsync(origResult)
                                        .ConfigureAwait(false);

            // Assert
            result.Id.Should().Be(origResult.Id);
            result.Name.Should().Be(origResult.Name);
            result.Desc.Should().Be(origResult.Desc);
            result.IsActive.Should().Be(origResult.IsActive);
        }
Пример #13
0
        public async Task ThereIsAParametrizedDimensionStructureDomainObject(Table table)
        {
            ThereIsAParametrizedDimensionStructureDomainObjectEntity instance = table
                                                                                .CreateInstance <ThereIsAParametrizedDimensionStructureDomainObjectEntity>();

            string Name = ObjectPropertyValueHelper.CreateStringValueForProperty(
                instance.Name,
                FilterRules.StringValueFilters);
            string Desc = ObjectPropertyValueHelper.CreateStringValueForProperty(
                instance.Desc,
                FilterRules.StringValueFilters);

            DimensionStructure dimensionStructure = new DimensionStructure
            {
                Name     = Name,
                Desc     = Desc,
                IsActive = int.Parse(instance.IsActive),
            };

            _scenarioContext.Add(instance.Key, dimensionStructure);
        }
        /// <inheritdoc/>
        public async Task InactivateAsync(
            DimensionStructure dimensionStructure,
            CancellationToken cancellationToken = default)
        {
            using (MasterDataContext ctx = new MasterDataContext(_dbContextOptions))
            {
                try
                {
                    Check.IsNotNull(dimensionStructure);

                    await _masterDataValidators.DimensionStructureValidator.ValidateAsync(
                        dimensionStructure, options =>
                    {
                        options.IncludeRuleSets(DimensionStructureValidatorRulesets.Inactivate);
                        options.ThrowOnFailures();
                    }, cancellationToken)
                    .ConfigureAwait(false);

                    DimensionStructure toBeDeleted = await ctx.DimensionStructures.FirstOrDefaultAsync(
                        w => w.Id == dimensionStructure.Id,
                        cancellationToken)
                                                     .ConfigureAwait(false);

                    string msg = $"There is no {nameof(DimensionStructure)} entity " +
                                 $"with id: {dimensionStructure.Id}.";
                    Check.IsNotNull(toBeDeleted, msg);

                    toBeDeleted.IsActive         = 0;
                    ctx.Entry(toBeDeleted).State = EntityState.Modified;
                    await ctx.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
                }
                catch (Exception e)
                {
                    string msg = $"{nameof(MasterDataDimensionStructureBusinessLogic)}." +
                                 $"{nameof(InactivateAsync)} operation failed! " +
                                 $"For further info see inner exception!";
                    throw new MasterDataBusinessLogicDimensionStructureDatabaseOperationException(msg, e);
                }
            }
        }
        public async Task Inactivate_SpecifiedEntity()
        {
            // Arrange
            List <DimensionStructure> createdEntities = await CreateActiveDimensionStructureEntities(5);

            DimensionStructure toBeInactivated = createdEntities.ElementAt(3);

            // Action
            await _masterDataBusinessLogic.MasterDataDimensionStructureBusinessLogic
            .InactivateAsync(toBeInactivated)
            .ConfigureAwait(false);

            // Assert
            DimensionStructure result = await _masterDataBusinessLogic.MasterDataDimensionStructureBusinessLogic
                                        .GetByIdAsync(toBeInactivated)
                                        .ConfigureAwait(false);

            result.IsActive.Should().Be(0);
            result.Name.Should().Be(toBeInactivated.Name);
            result.Desc.Should().Be(toBeInactivated.Desc);
            result.Id.Should().Be(toBeInactivated.Id);
        }
Пример #16
0
        /// <inheritdoc/>
        public async Task <DimensionStructure> AddAsync(
            DimensionStructure dimensionStructure,
            CancellationToken cancellationToken = default)
        {
            using (MasterDataContext ctx = new MasterDataContext(_dbContextOptions))
            {
                try
                {
                    Check.IsNotNull(dimensionStructure);

                    await _masterDataValidators.DimensionStructureValidator.ValidateAsync(dimensionStructure, o =>
                    {
                        o.IncludeRuleSets(DimensionStructureValidatorRulesets.AddAsync);
                        o.ThrowOnFailures();
                    }, cancellationToken).ConfigureAwait(false);

                    DimensionStructure newDimensionStructure = new DimensionStructure
                    {
                        Name     = dimensionStructure.Name,
                        Desc     = dimensionStructure.Desc,
                        IsActive = dimensionStructure.IsActive,
                    };
                    await ctx.DimensionStructures.AddAsync(
                        newDimensionStructure,
                        cancellationToken)
                    .ConfigureAwait(false);

                    await ctx.SaveChangesAsync(cancellationToken).ConfigureAwait(false);

                    return(newDimensionStructure);
                }
                catch (Exception e)
                {
                    string msg = $"{nameof(MasterDataDimensionStructureBusinessLogic)}." +
                                 $"{nameof(AddAsync)} operation failed. For further info see inner exception.";
                    throw new MasterDataBusinessLogicDimensionStructureDatabaseOperationException(msg, e);
                }
            }
        }