private void InitItemProductFeature(
     ModProductBaseJobItemGetOutput item,
     IEnumerable <DataEntityObjectProductFeature> entities
     )
 {
     item.ObjectsProductFeature = entities
                                  .OrderBy(x => x.Name)
                                  .ThenBy(x => x.Id)
                                  .Select(x => x.CreateObjectProductFeature())
                                  .ToArray();
 }
Exemple #2
0
 /// <inheritdoc/>
 protected sealed override IEnumerable <string> GetSuccessMessages(
     ModProductBaseJobItemGetOutput input,
     ModProductBaseJobItemGetOutput output
     )
 {
     return(new[]
     {
         string.Format(
             ResourceSuccesses.GetStringFormatObjectWithIdIsUpdated(),
             output.ObjectProduct.Id
             )
     });
 }
        private ModProductBaseJobItemGetOutput CreateItem(DataEntityObjectProduct entity)
        {
            var result = new ModProductBaseJobItemGetOutput
            {
                ObjectProduct         = entity.CreateObjectProduct(),
                ObjectProductCategory = entity.ObjectProductCategory.CreateObjectProductCategory()
            };

            if (entity.ObjectsProductProductFeature.Any())
            {
                result.ObjectsProductProductFeature = entity.ObjectsProductProductFeature.Select(
                    x => x.CreateObjectProductProductFeature()
                    ).ToArray();
            }

            return(result);
        }
Exemple #4
0
            ) BuildActionItemUpdate(ModProductBaseJobItemGetOutput input)
        {
            var job = AppJobItemUpdate;

            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);
        }
        /// <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> Put([FromBody] ModProductBaseJobItemGetOutput input)
        {
            var result = new ModProductBaseJobItemGetResult();

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

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

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

            return(Ok(result));
        }
        /// <summary>
        /// Сохранить элемент.
        /// </summary>
        /// <param name="data">Данные для сохранения.</param>
        /// <returns>Задача с сохранёнными данными.</returns>
        public async Task <ModProductBaseJobItemGetOutput> SaveItem(ModProductBaseJobItemGetOutput data)
        {
            var result = new ModProductBaseJobItemGetOutput();

            if (data.ObjectProduct != null)
            {
                result.ObjectProduct = await SaveObjectProduct(
                    data.ObjectProduct
                    ).CoreBaseExtTaskWithCurrentCulture(false);
            }

            if (data.ObjectProductCategory != null)
            {
                result.ObjectProductCategory = await SaveObjectProductCategory(
                    data.ObjectProductCategory
                    ).CoreBaseExtTaskWithCurrentCulture(false);
            }

            if (data.ObjectsProductFeature != null && data.ObjectsProductFeature.Any())
            {
                result.ObjectsProductFeature = await SaveObjectsProductFeature(
                    data.ObjectsProductFeature
                    ).CoreBaseExtTaskWithCurrentCulture(false);
            }

            if (data.ObjectsProductProductFeature != null && data.ObjectsProductProductFeature.Any())
            {
                result.ObjectsProductProductFeature = await SaveObjectsProductProductFeature(
                    data.ObjectsProductProductFeature
                    ).CoreBaseExtTaskWithCurrentCulture(false);
            }

            if (result.ObjectProduct.Id > 0)
            {
                result = await GetItem(new ModProductBaseJobItemGetInput { DataId = result.ObjectProduct.Id });
            }

            return(result);
        }
        private void InitItemProductFeature(
            ModProductBaseJobItemGetOutput item,
            IDictionary <long, DataEntityObjectProductFeature> lookup
            )
        {
            var ids = item.ObjectsProductProductFeature
                      .Select(x => x.ObjectProductFeatureId)
                      .ToArray();

            var entities = new List <DataEntityObjectProductFeature>();

            foreach (var id in ids)
            {
                if (lookup.TryGetValue(id, out DataEntityObjectProductFeature entity))
                {
                    entities.Add(entity);
                }
            }

            if (entities.Any())
            {
                InitItemProductFeature(item, entities);
            }
        }