public async Task <Option <IEnumerable <PendingOrderView>, Error> > Handle( GetPendingOrdersByUser request, CancellationToken cancellationToken) { IPendingOrdersReader dataProvider; switch (request.DataProvider) { case Core.OrderContext.Enums.PendingOrdersDataProvider.CsvProvider: dataProvider = new PendingOrdersCsvReader(); break; case Core.OrderContext.Enums.PendingOrdersDataProvider.EntityFrameworkProvider: dataProvider = new PendingOrdersEfReader(_repository); break; case Core.OrderContext.Enums.PendingOrdersDataProvider.AdoNetProvider: dataProvider = new PendingOrdersSqlReader(_queryDbConnector); break; default: throw new InvalidEnumArgumentException(); } var cachingReader = new PendingOrdersCachingReader(dataProvider); var result = await cachingReader.PendingOrdersAsync( request.UserId, request.Limit, request.StartPage, cancellationToken); return(result.SomeWhen(list => list.Any(), Error.NotFound("There are no pending orders for current user!"))); }
public async Task <IActionResult> PendingOrders([FromQuery] GetPendingOrdersRequest request) { var identityUser = await _userManager.GetUserAsync(HttpContext.User); var query = new GetPendingOrdersByUser(identityUser.Id, request); return((await _mediator.Send(query)) .Match(Ok, Error)); }