первый вариант

This commit is contained in:
gorbenko.pavel
2026-08-19 16:22:50 +05:00
parent 2fe1696847
commit d9fa4b392b
17 changed files with 890 additions and 39 deletions
@@ -25,6 +25,29 @@ public sealed class TemplateRouteStepService(
return Result.Ok<IReadOnlyList<TemplateRouteStepDto>>(items);
}
/// <summary>
/// Шаги ВСЕХ маршрутов с данным конкретным исполнителем (ExecutorEmail) — для
/// админского экрана «заменить согласующего everywhere» (см. ManageByUserScreen):
/// шаги, где исполнитель задан должностью/ролью/типом руководителя, сюда не
/// попадают — это не привязка к конкретному человеку.
/// </summary>
public async Task<Result<IReadOnlyList<TemplateRouteStepDto>>> ListByExecutorEmailAsync(
string executorEmail, CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(executorEmail))
return Result.Ok<IReadOnlyList<TemplateRouteStepDto>>(Array.Empty<TemplateRouteStepDto>());
var items = await db.TemplateRouteSteps.AsNoTracking()
.Where(x => x.ExecutorEmail != null && EF.Functions.ILike(x.ExecutorEmail, executorEmail))
.OrderBy(x => x.RouteId).ThenBy(x => x.OrderNo)
.Select(x => new TemplateRouteStepDto(
x.Id, x.OrderNo, x.ExecutorEmail, x.Position, x.ProjectRole, x.HeadType, x.Status, x.RouteId, x.AllowReassignToOtherApprovers,
x.FieldName, x.Operation, x.Value, null, x.SlaHours, x.AskOverdueReason))
.ToListAsync(cancellationToken);
return Result.Ok<IReadOnlyList<TemplateRouteStepDto>>(items);
}
public async Task<Result<TemplateRouteStepDto>> GetAsync(int routeId, int id, CancellationToken cancellationToken)
{
var entity = await db.TemplateRouteSteps.AsNoTracking()