public async Task <IActionResult> PutOrderItem([FromRoute] int id, [FromBody] OrderItemChangeDto itemDto) { try { var item = await _repository.GetOrderItem(id); if (item == null) { return(NotFound()); } _mapper.Map(itemDto, item); await _repository.UpdateOrderItem(item); await _repository.Save(); return(NoContent()); } catch (DbUpdateException e) { ModelState.AddModelError("database", e.InnerException != null ? e.InnerException.Message : e.Message); return(ValidationProblem()); } catch (Exception e) { return(_helpers.ErrorResponse(e)); } }
public async Task <IActionResult> PostOrderItem([FromBody] OrderItemChangeDto itemDto) { try { var item = _mapper.Map <OrderItem>(itemDto); var order = await _repository.AddOrderItem(item); await _repository.Save(); return(CreatedAtAction("GetOrder", new { controller = "orders", id = item.OrderId }, _mapper.Map <OrderDto>(order))); } catch (DbUpdateException e) { ModelState.AddModelError("database", e.InnerException != null ? e.InnerException.Message : e.Message); return(ValidationProblem()); } catch (Exception e) { return(_helpers.ErrorResponse(e)); } }
private async void AddOrderItem(ProductDto product) { loading = true; try { if (product.InStock) { var orderItem = new OrderItemChangeDto() { Amount = 1, OrderId = _state.order.Id, ProductId = product.Id }; var res = await _ordersDataService.AddOrderItem(orderItem); // Success if (res.StatusCode == System.Net.HttpStatusCode.Created) { _state.order = JsonSerializer.Deserialize <OrderDto>( await res.Content.ReadAsStringAsync(), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); } // Error else { await _helpers.ErrorResponse(res); } } } catch (AccessTokenNotAvailableException e) { e.Redirect(); } catch (Exception e) { _state.err = new Error(e.Message, false); } loading = false; StateHasChanged(); }
public async Task <HttpResponseMessage> AddOrderItem(OrderItemChangeDto item) { var i = JsonSerializer.Deserialize <OrderItemDto>( JsonSerializer.Serialize <OrderItemChangeDto>(item)); var product = _context.products .Where(p => p.Id == item.ProductId) .FirstOrDefault(); var existingItem = _context.order.OrderItems .Find(i => i.ProductId == item.ProductId); i.Id = _context.order.OrderItems.Count + 1; i.Price = item.Amount * product.Price; i.Product = product; // If the item exists in the order, correct the amount and price if (existingItem != null) { existingItem.Price += i.Price; existingItem.Amount += i.Amount; } // Otherwise, add the new item else { _context.order.OrderItems.Add(i); } CalculateTotal(_context.order); await _context.SetOrderAsync(_context.order); var jsonString = new StringContent( JsonSerializer.Serialize <OrderDto>(_context.order), Encoding.UTF8, "application/json"); res = new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.Created, Content = jsonString }; return(res); }
public async Task <HttpResponseMessage> UpdateOrderItem(int id, OrderItemChangeDto item) { var i = _context.order.OrderItems .Where(o => o.ProductId == item.ProductId) .FirstOrDefault(); i.Amount = item.Amount; i.Price = item.Amount * i.Product.Price; CalculateTotal(_context.order); await _context.SetOrderAsync(_context.order); res = new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.NoContent }; return(res); }
public async Task <HttpResponseMessage> UpdateOrderItem(int id, OrderItemChangeDto item) { return(await _secureHttp.PutAsJsonAsync($"/api/orderitems/{id}", item)); }
public async Task <HttpResponseMessage> AddOrderItem(OrderItemChangeDto item) { return(await _secureHttp.PostAsJsonAsync("/api/orderitems", item)); }