add workflow controller
This commit is contained in:
@@ -49,7 +49,8 @@ public class TaskRevisionsByTaskSectionIdQueryHandler : IBaseQueryHandler<TaskRe
|
||||
{
|
||||
var itemFileIds = x.Files.Select(f => f.FileId).Distinct().ToList();
|
||||
|
||||
var files = uploadedFiles.Where(f => itemFileIds.Contains(f.Id))
|
||||
var files = uploadedFiles
|
||||
.Where(f => itemFileIds.Contains(f.Id))
|
||||
.Select(file => new TaskRevisionsByTaskSectionIdItemFile()
|
||||
{
|
||||
Id = file.Id,
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
using GozareshgirProgramManager.Application._Common.Interfaces;
|
||||
using GozareshgirProgramManager.Application._Common.Models;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace GozareshgirProgramManager.Application.Modules.Workflows.Queries.WorkflowList;
|
||||
|
||||
public record WorkflowListResponse(List<WorkflowListItem>Items);
|
||||
|
||||
public class WorkflowListItem
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public WorkflowType Type { get; set; }
|
||||
public Guid EntityId { get; set; }
|
||||
}
|
||||
|
||||
public enum WorkflowType
|
||||
{
|
||||
Rejected,
|
||||
NotAssigned,
|
||||
PendingForApproval,
|
||||
}
|
||||
|
||||
public record WorkflowListQuery():IBaseQuery<WorkflowListResponse>;
|
||||
|
||||
public class WorkflowListQueryHandler:IBaseQueryHandler<WorkflowListQuery,WorkflowListResponse>
|
||||
{
|
||||
private readonly IProgramManagerDbContext _context;
|
||||
private readonly IAuthHelper _authHelper;
|
||||
|
||||
public WorkflowListQueryHandler(IProgramManagerDbContext context,
|
||||
IAuthHelper authHelper)
|
||||
{
|
||||
_context = context;
|
||||
_authHelper = authHelper;
|
||||
}
|
||||
|
||||
public async Task<OperationResult<WorkflowListResponse>> Handle(WorkflowListQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
var currentUserId =_authHelper.GetCurrentUserId();
|
||||
|
||||
var query = await (from revision in _context.TaskSectionRevisions
|
||||
.Where(x=>x.Status == RevisionReviewStatus.Pending)
|
||||
join taskSection in _context.TaskSections.Where(x => x.CurrentAssignedUserId == currentUserId)
|
||||
on revision.TaskSectionId equals taskSection.Id
|
||||
select new
|
||||
{
|
||||
taskSection,
|
||||
revision
|
||||
|
||||
}).ToListAsync(cancellationToken: cancellationToken);
|
||||
|
||||
var workflowListItems = query.Select(x=>new WorkflowListItem()
|
||||
{
|
||||
EntityId = x.taskSection.Id,
|
||||
Title = "برگشت از سمت مدیر",
|
||||
Type = WorkflowType.Rejected
|
||||
}).ToList();
|
||||
var res = new WorkflowListResponse(workflowListItems);
|
||||
return OperationResult<WorkflowListResponse>.Success(res);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using GozareshgirProgramManager.Application._Common.Models;
|
||||
using GozareshgirProgramManager.Application.Modules.Workflows.Queries.WorkflowList;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ServiceHost.BaseControllers;
|
||||
|
||||
namespace ServiceHost.Areas.Admin.Controllers.ProgramManager;
|
||||
|
||||
public class WorkflowController:ProgramManagerBaseController
|
||||
{
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public WorkflowController(IMediator mediator)
|
||||
{
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<OperationResult<WorkflowListResponse>>> Get(WorkflowListQuery query)
|
||||
{
|
||||
var res = await _mediator.Send(query);
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user