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 }); }
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 }); }
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); }
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)); } }
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(), }); }
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); }