/// <inheritdoc/> protected sealed override void DoRun() { var input = new ModDummyMainBaseJobListGetInput { DataPageNumber = 2, DataPageSize = 3 }; var result = new CoreBaseExecutionResultWithData <ModDummyMainBaseJobListGetOutput>(); 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); }
/// <summary> /// Мод "DummyMain". Основа. Расширение. Применить. Фильтрацию. /// </summary> /// <param name="query">Запрос.</param> /// <param name="input">Ввод.</param> /// <returns>Запрос с учётом фильтрации.</returns> public static IQueryable <DataEntityObjectDummyMain> ModDummyMainBaseExtApplyFiltering( this IQueryable <DataEntityObjectDummyMain> query, ModDummyMainBaseJobListGetInput input ) { if (!string.IsNullOrWhiteSpace(input.DataName)) { query = query.Where(x => x.Name.Contains(input.DataName)); } if (input.DataIds != null && input.DataIds.Any()) { query = query.Where(x => input.DataIds.Contains(x.Id)); } if (input.DataObjectDummyOneToManyId > 0) { query = query.Where(x => x.ObjectDummyOneToManyId == input.DataObjectDummyOneToManyId); } if (input.DataObjectDummyOneToManyIds != null && input.DataObjectDummyOneToManyIds.Any()) { query = query.Where(x => input.DataObjectDummyOneToManyIds.Contains(x.ObjectDummyOneToManyId)); } if (!string.IsNullOrWhiteSpace(input.DataObjectDummyOneToManyName)) { query = query.Where(x => x.ObjectDummyOneToMany.Name.Contains(input.DataObjectDummyOneToManyName)); } return(query); }
/// <summary> /// Получить список. /// </summary> /// <param name="input">Ввод.</param> /// <returns>Задача с полученными данными.</returns> public async Task <ModDummyMainBaseJobListGetOutput> GetList( ModDummyMainBaseJobListGetInput input ) { var result = new ModDummyMainBaseJobListGetOutput(); using (var source = CreateDbContext()) using (var sourceOfTotalCount = CreateDbContext()) { var queryOfItems = source.DummyMain .Include(x => x.ObjectDummyOneToMany) .Include(x => x.ObjectsDummyMainDummyManyToMany) .ModDummyMainBaseExtApplyFiltering(input) .ModDummyMainBaseExtApplySorting(input) .CoreBaseCommonModExtApplyPagination(input); var queryOfTotalCount = sourceOfTotalCount.DummyMain .ModDummyMainBaseExtApplyFiltering(input); var taskOfItems = queryOfItems.ToArrayAsync(); var taskOfTotalCount = queryOfTotalCount.CountAsync(); await Task.WhenAll(taskOfItems, taskOfTotalCount).CoreBaseExtTaskWithCurrentCulture(false); result.Items = taskOfItems.Result.Select(x => CreateItem(x)).ToArray(); result.TotalCount = taskOfTotalCount.Result; if (result.Items.Any()) { var idsDummyManyToMany = result.Items .Where(x => x.ObjectsDummyMainDummyManyToMany != null) .SelectMany(x => x.ObjectsDummyMainDummyManyToMany) .Select(x => x.ObjectDummyManyToManyId) .Distinct() .ToArray(); if (idsDummyManyToMany.Any()) { var lookupOfDummyManyToMany = await source.DummyManyToMany .Where(x => idsDummyManyToMany.Contains(x.Id)) .ToDictionaryAsync(x => x.Id) .CoreBaseExtTaskWithCurrentCulture(false); if (lookupOfDummyManyToMany.Any()) { foreach (var item in result.Items) { if (item.ObjectsDummyMainDummyManyToMany != null) { InitItemDummyManyToMany(item, lookupOfDummyManyToMany); } } } } } } return(result); }
) BuildActionListGet(ModDummyMainBaseJobListGetInput input) { var job = AppJobListGet; Task <ModDummyMainBaseJobListGetOutput> execute() => job.Execute(input); void onSuccess(ModDummyMainBaseJobListGetResult result) { job.OnSuccess(ExtLogger, result, input); } void onError(Exception ex, ModDummyMainBaseJobListGetResult result) { job.OnError(ex, ExtLogger, result); } return(execute, onSuccess, onError); }
public async Task <IActionResult> Get([FromQuery] ModDummyMainBaseJobListGetInput input) { var result = new ModDummyMainBaseJobListGetResult(); var(execute, onSuccess, onError) = MyModel.BuildActionListGet(input); try { result.Data = await execute().CoreBaseExtTaskWithCurrentCulture(false); onSuccess(result); } catch (Exception ex) { onError(ex, result); } return(Ok(result)); }
/// <summary> /// Мод "DummyMain". Основа. Расширение. Применить. Сортировку. /// </summary> /// <param name="query">Запрос.</param> /// <param name="input">Ввод.</param> /// <returns>Запрос с учётом сортировки.</returns> public static IQueryable <DataEntityObjectDummyMain> ModDummyMainBaseExtApplySorting( this IQueryable <DataEntityObjectDummyMain> query, ModDummyMainBaseJobListGetInput input ) { var sortField = input.DataSortField.ToLower(); var sortDirection = input.DataSortDirection.ToLower(); switch (sortField) { case "id": switch (sortDirection) { case "asc": query = query.OrderBy(x => x.Id); break; case "desc": query = query.OrderByDescending(x => x.Id); break; } break; case "name": switch (sortDirection) { case "asc": query = query.OrderBy(x => x.Name); break; case "desc": query = query.OrderByDescending(x => x.Name); break; } break; case "objectdummyonetomany": switch (sortDirection) { case "asc": query = query.OrderBy(x => x.ObjectDummyOneToMany.Name); break; case "desc": query = query.OrderByDescending(x => x.ObjectDummyOneToMany.Name); break; } break; case "propdate": switch (sortDirection) { case "asc": query = query.OrderBy(x => x.PropDate); break; case "desc": query = query.OrderByDescending(x => x.PropDate); break; } break; case "propboolean": switch (sortDirection) { case "asc": query = query.OrderBy(x => x.PropBoolean); break; case "desc": query = query.OrderByDescending(x => x.PropBoolean); break; } break; } if (!string.IsNullOrWhiteSpace(sortField) && sortField != "id") { query = ((IOrderedQueryable <DataEntityObjectDummyMain>)query).ThenBy(x => x.Id); } return(query); }