В моем проекте as pnet core 3.1 я использую шаблон CQRS, я хотел бы реализовать массив params перечисления. Ошибка компилятора отсутствует, но я все еще не получаю результата.
Мой конструктор выглядит так:
..... other fields
public DateTime? UpdatedAt { get; set; }
public ProjectStatus?[] Statuses { get; set; }
public Query(...., DateTime? updatedAt, params ProjectStatus?[] statuses)
{
......
UpdatedAt = updatedAt;
Statuses = statuses;
}
Мой обработчик запросов выглядит так:
var queryable = _context.Projects.AsQueryable();
.... other logics
if (request.UpdatedAt.HasValue)
queryable = queryable.Where(x =>
x.UpdatedAt.Value <= request.UpdatedAt.Value.AddHours(-1) &&
request.Statuses.Contains(x.Status)); // want to use there
var projects = await queryable.Skip(request.Offset ?? 0).Take(request.Limit ??
50)
.ToListAsync(cancellationToken: cancellationToken);
return new ProjectsList
{
Data = _mapper.Map<List<Project>, List<ProjectForListDto>>(projects),
TotalCount = await queryable.CountAsync(cancellationToken:
cancellationToken)
};
Мой контроллер выглядит так:
[HttpGet]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<ActionResult<List<ProjectForListDto>>> List(int? offset, int? limit, string organizationName,
int? organizationId, ProjectStatus? status,string sortBy, string sortDirection,string search,DateTime? updatedAt)
=> Ok(await Mediator.Send(new List.Query(limit, offset, organizationName, organizationId, status,sortBy,sortDirection,search,updatedAt)));
Хотелось бы чего-то такого
{{url}}/api/projects?updatedat=2020-06-17T07:43:23.169914&statuses=1,3,5,7,10
Мой базовый контроллер для Mediatr:
[Route("api/[controller]")]
[ApiController]
public class BaseController : ControllerBase
{
private IMediator _mediator;
protected IMediator Mediator => _mediator ??=
HttpContext.RequestServices.GetService<IMediator>();
}
PS Хотелось бы чего-нибудь попроще подход
Также найден этот но этот для веб-api