private void InitItemProductFeature( ModProductBaseJobItemGetOutput item, IEnumerable <DataEntityObjectProductFeature> entities ) { item.ObjectsProductFeature = entities .OrderBy(x => x.Name) .ThenBy(x => x.Id) .Select(x => x.CreateObjectProductFeature()) .ToArray(); }
/// <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); }
) 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); } }