Exemplo n.º 1
0
        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!")));
        }
Exemplo n.º 2
0
        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));
        }