コード例 #1
0
        public virtual async Task <GetCurbsideResponse> PlaceOrder(PostCurbsideRequest request)
        {
            // do the "procesing" (??)
            await Task.Delay(1000 *request.Items.Length);

            // produce a pickupDateTime for it.
            // Save it to the database,
            var order = new CurbsideOrder
            {
                For           = request.For,
                Items         = String.Join(",", request.Items),
                PickupReadyAt = DateTime.Now.AddHours(new Random().Next(2, 5))
            };

            _context.CurbsideOrders.Add(order);
            await _context.SaveChangesAsync();

            // map it, return in.
            return(new GetCurbsideResponse
            {
                Id = order.Id,
                For = order.For,
                Items = order.Items.Split(',').Select(int.Parse).ToArray(),
                PickupReadyAt = order.PickupReadyAt.Value
            });
        }
コード例 #2
0
        public override async Task <GetCurbsideResponse> PlaceOrder(PostCurbsideRequest request)
        {
            // Save it to the database,
            var order = new CurbsideOrder
            {
                For           = request.For,
                Items         = String.Join(",", request.Items),
                PickupReadyAt = null
            };

            _context.CurbsideOrders.Add(order);
            await _context.SaveChangesAsync();

            // map it, return in.
            if (await _channel.AddCurbside(new CurbsideChannelRequest {
                OrderId = order.Id
            }))
            {
                // it was able to write it.
            }
            else
            {
                // it wasn't
            }

            return(new GetCurbsideResponse
            {
                Id = order.Id,
                For = order.For,
                Items = order.Items.Split(',').Select(int.Parse).ToArray(),
                PickupReadyAt = null
            });
        }
コード例 #3
0
        public async Task PlaceOrder(PostCurbsideRequest request)
        {
            // no model validation! You have validate manually, or whatever.
            _logger.LogInformation("Got an order" + request.PickupPerson);
            var response = await _orderProcessor.PlaceOrderAsync(request, Context.ConnectionId);

            await Clients.Caller.SendAsync("OrderPlaced", response);
        }
コード例 #4
0
        public async Task <ActionResult> PlaceOrder([FromBody] PostCurbsideRequest curbsideRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var response = await _curbsideCommands.PlaceOrder(curbsideRequest);

            return(CreatedAtRoute("curbside#getbyid", new { id = response.Id }, response));
        }
        public async Task <GetCurbsideDetailsResponse> PlaceOrderNoBGAsync(PostCurbsideRequest request)
        {
            var orderToSave   = _mapper.Map <CurbsideOrder>(request);
            var numberOfItems = orderToSave.Items.Split(',').Count();
            await Task.Delay(numberOfItems * 1000);

            orderToSave.PickupTimeAssigned = _systemTime.GetCurrent().AddHours(numberOfItems);
            _context.CurbsideOrders.Add(orderToSave);
            await _context.SaveChangesAsync();

            var response = _mapper.Map <GetCurbsideDetailsResponse>(orderToSave);

            return(response);
        }
        public async Task <ActionResult <GetCurbsideDetailsResponse> > PlaceOrderSync(
            [FromBody] PostCurbsideRequest request
            )
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            else
            {
                GetCurbsideDetailsResponse response = await _curbsideOrders.PlaceOrderNoBGAsync(request);

                return(CreatedAtRoute("curbside#getbyid", new { id = response.Id }, response));
            }
        }
コード例 #7
0
        public override async Task <GetCurbsideResponse> PlaceOrder(PostCurbsideRequest request)
        {
            var order = new CurbsideOrder
            {
                For   = request.For,
                Items = string.Join(",", request.Items),
            };

            _context.CurbsideOrders.Add(order);
            await _context.SaveChangesAsync();

            await _channel.AddCurbside(new CurbsideChannelRequest { OrderId = order.Id });

            return(new GetCurbsideResponse
            {
                Id = order.Id,
                For = order.For,
                Items = order.Items.Split(',').Select(int.Parse).ToArray(),
            });
        }
コード例 #8
0
        public virtual async Task <GetCurbsideResponse> PlaceOrder(PostCurbsideRequest request)
        {
            await Task.Delay(1000 *request.Items.Length);

            var order = new CurbsideOrder
            {
                For           = request.For,
                Items         = String.Join(",", request.Items),
                PickupReadyAt = DateTime.Now.AddHours(new Random().Next(2, 5))
            };

            _context.CurbsideOrders.Add(order);
            await _context.SaveChangesAsync();

            return(new GetCurbsideResponse
            {
                Id = order.Id,
                For = order.For,
                Items = order.Items.Split(',').Select(int.Parse).ToArray(),
                PickupReadyAt = order.PickupReadyAt.Value
            });
        }
        public async Task <GetCurbsideDetailsResponse> PlaceOrderAsync(PostCurbsideRequest request, string wsClientId = null)
        {
            var orderToSave = _mapper.Map <CurbsideOrder>(request);

            _context.CurbsideOrders.Add(orderToSave);
            await _context.SaveChangesAsync();

            var response = _mapper.Map <GetCurbsideDetailsResponse>(orderToSave);
            var didWrite = await _channel.AddCurbsideAsync(
                new CurbsideChannelRequest
            {
                CurbsideOrderId = response.Id,
                WsConnectionId  = wsClientId
            }
                );

            if (!didWrite)
            {
                // let's talk about this after we see that it works.
            }
            return(response);
        }