feat(api, core, dal, domain): В таблицу Tasks добавлено поле процент выполнения, так же добавлено это поле в response - статус формирования отчета. Создан интерфейс для отслеживания прогресса IProgressAsync. Из сервиса WorkloadService исключен ITaskManagementService.

This commit is contained in:
Mikhail Trubnikov
2026-05-20 14:26:25 +10:00
parent 8f61bbb73e
commit 68808e761b
17 changed files with 4160 additions and 41 deletions

View File

@@ -0,0 +1,38 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using PARR.Core.Repositories.Interfaces.TaskRepositories;
using PARR.Domain.DTOs.TaskDTO;
using PARR.Domain.Enums;
namespace PARR.Core.Services.TaskServices.Helpers
{
/// <summary>
/// Хелпеы для TaskManagement
/// </summary>
internal static class TaskManagementHelpers
{
/// <summary>
/// Получить список активных задач
/// </summary>
/// <param name="taskRepository"></param>
/// <param name="mapper"></param>
/// <param name="typeCode"></param>
/// <returns></returns>
public static async Task<List<ActiveTask>> GetActiveTasksAsync(ITaskRepository taskRepository, IMapper mapper, TaskTypeEnum? typeCode = null)
{
var query = taskRepository.Get()
.AsNoTracking()
.Include(t => t.TaskStatus)
.Include(t => t.TaskType)
.Where(t => t.StatusCode == TaskItemStatusEnum.Pending || t.StatusCode == TaskItemStatusEnum.Processing);
if (typeCode.HasValue)
query = query.Where(t => t.TypeCode == typeCode.Value);
var tasks = await query.OrderByDescending(t => t.DateCreated).ToListAsync();
return mapper.Map<List<ActiveTask>>(tasks);
}
}
}