示例#1
0
        /// <summary>
        /// Удалить элемент.
        /// </summary>
        /// <param name="input">Ввод.</param>
        /// <returns>Задача.</returns>
        public async Task DeleteItem(ModProductBaseJobItemGetInput input)
        {
            using var source = CreateDbContext();

            var obj = await source.Product.FirstAsync(
                x => x.Id == input.DataId
                ).CoreBaseExtTaskWithCurrentCulture(false);

            source.Product.Remove(obj);

            await source.SaveChangesAsync().CoreBaseExtTaskWithCurrentCulture(false);
        }
示例#2
0
        /// <summary>
        /// Мод "Product". Основа. Расширение. Применить. Фильтрацию.
        /// </summary>
        /// <param name="query">Запрос.</param>
        /// <param name="input">Ввод.</param>
        /// <returns>Запрос с учётом фильтрации.</returns>
        public static IQueryable <DataEntityObjectProduct> ModProductBaseExtApplyFiltering(
            this IQueryable <DataEntityObjectProduct> query,
            ModProductBaseJobItemGetInput input
            )
        {
            if (input.DataId > 0)
            {
                query = query.Where(x => x.Id == input.DataId);
            }

            if (input.DataName != null)
            {
                query = query.Where(x => x.Name == input.DataName);
            }

            return(query);
        }
示例#3
0
            ) BuildActionItemDelete(ModProductBaseJobItemGetInput input)
        {
            var job = AppJobItemDelete;

            Task execute() => job.Execute(input);

            void onSuccess(CoreBaseExecutionResult result)
            {
                job.OnSuccess(ExtLogger, result, input);
            }

            void onError(Exception ex, CoreBaseExecutionResult result)
            {
                job.OnError(ex, ExtLogger, result);
            }

            return(execute, onSuccess, onError);
        }
示例#4
0
            ) BuildActionItemGet(ModProductBaseJobItemGetInput input)
        {
            var job = AppJobItemGet;

            Task <ModProductBaseJobItemGetOutput> execute() => job.Execute(input);

            void onSuccess(ModProductBaseJobItemGetResult result)
            {
                job.OnSuccess(ExtLogger, result, input);
            }

            void onError(Exception ex, ModProductBaseJobItemGetResult result)
            {
                job.OnError(ex, ExtLogger, result);
            }

            return(execute, onSuccess, onError);
        }
示例#5
0
        /// <summary>
        /// Получить элемент.
        /// </summary>
        /// <param name="input">Ввод.</param>
        /// <returns>Задача с полученными данными.</returns>
        public async Task <ModProductBaseJobItemGetOutput> GetItem(
            ModProductBaseJobItemGetInput input
            )
        {
            ModProductBaseJobItemGetOutput result = null;

            using (var source = CreateDbContext())
            {
                var entityProduct = await source.Product
                                    .Include(x => x.ObjectProductCategory)
                                    .Include(x => x.ObjectsProductProductFeature)
                                    .ModProductBaseExtApplyFiltering(input)
                                    .FirstOrDefaultAsync()
                                    .CoreBaseExtTaskWithCurrentCulture(false);

                if (entityProduct != null)
                {
                    result = CreateItem(entityProduct);

                    if (result.ObjectsProductProductFeature != null)
                    {
                        var idsOfProductFeature = result.ObjectsProductProductFeature
                                                  .Select(x => x.ObjectProductFeatureId)
                                                  .ToArray();

                        if (idsOfProductFeature.Any())
                        {
                            var enities = await source.ProductFeature
                                          .Where(x => idsOfProductFeature.Contains(x.Id))
                                          .ToArrayAsync()
                                          .CoreBaseExtTaskWithCurrentCulture(false);

                            if (enities.Any())
                            {
                                InitItemProductFeature(result, enities);
                            }
                        }
                    }
                }
            }

            return(result);
        }
        public async Task <IActionResult> Get([FromQuery] ModProductBaseJobItemGetInput input)
        {
            var result = new ModProductBaseJobItemGetResult();

            var(execute, onSuccess, onError) = MyModel.BuildActionItemGet(input);

            try
            {
                result.Data = await execute().CoreBaseExtTaskWithCurrentCulture(false);

                onSuccess(result);
            }
            catch (Exception ex)
            {
                onError(ex, result);
            }

            return(Ok(result));
        }
示例#7
0
        /// <inheritdoc/>
        protected sealed override void DoRun()
        {
            var input = new ModProductBaseJobItemGetInput
            {
                DataId = 1
            };

            var result = new CoreBaseExecutionResultWithData <ModProductBaseJobItemGetOutput>();

            try
            {
                result.Data = Job.Execute(input).CoreBaseExtTaskWithCurrentCulture(false).GetResult();

                Job.OnSuccess(Logger, result, input);
            }
            catch (Exception ex)
            {
                Job.OnError(ex, Logger, result);
            }

            var msg = result.CoreBaseExtJsonSerialize(CoreBaseExtJson.OptionsForLogger);

            Show(msg, false);
        }