public IActionResult UpdateOrder(int id, [FromBody] OrderToUpdateDto orderToUpdate) { if (orderToUpdate == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } var orderFromRepo = _repo.GetOrder(id); if (orderFromRepo == null) { return(NotFound()); } try { Mapper.Map(orderToUpdate, orderFromRepo); _repo.UpdateOrder(orderFromRepo); _repo.Save(); } catch (Exception ex) { throw new Exception(ex.Message); } return(NoContent()); }
public async Task <IActionResult> UpdateOrder(int id, [FromBody] OrderToUpdateDto orderToUpdate) { if (orderToUpdate == null) { return(BadRequest()); } //basically dont wanna have to worry about deserializing 2 possible types of response object, so just gonna do the validation here if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } MemoryStream orderProtoStream = new MemoryStream(); Serializer.Serialize(orderProtoStream, orderToUpdate); ByteArrayContent bArray = new ByteArrayContent(orderProtoStream.ToArray()); UriBuilder uriBuilder = new UriBuilder(_client.BaseAddress); uriBuilder.Path += "/" + id; var orderResponse = await _client.PutAsync(uriBuilder.Uri, bArray); return(StatusCode((int)orderResponse.StatusCode)); }
public async Task <IActionResult> UpdateProduct(OrderToUpdateDto orderToUpdateDto, int id) { if (orderToUpdateDto == null) { return(BadRequest("Product do not exist")); } if (orderToUpdateDto.Price > 40) { orderToUpdateDto.Discount = true; } if (orderToUpdateDto.Discount) { var dicountPrice = orderToUpdateDto.Price * 0.1; orderToUpdateDto.Price = (int)((double)orderToUpdateDto.Price - dicountPrice); orderToUpdateDto.DiscountPrice = (int)dicountPrice; } var orderFromRepo = await _repo.GetOrder(id); var orderToReturn = _mapper.Map(orderToUpdateDto, orderFromRepo); await _context.SaveChangesAsync(); return(Ok(orderToReturn)); }
public async Task <ActionResult <OrderToReturnDto> > UpdateOrder(OrderToUpdateDto input) { var user = await _userManager.FindByEmailAsync(input.Email); if (user.Email == input.Email) { var order = await _orderService.GetOrderByIdAsync(input.Id, input.Email); var address = new Address { FirstName = input.ShipToAddress_FirstName, LastName = input.ShipToAddress_LastName, City = input.ShipToAddress_City, Street = input.ShipToAddress_Street, State = input.ShipToAddress_State, Zipcode = input.ShipToAddress_Zipcode }; var method = await _orderService.GetDeliveryMethod(input.DeliveryMethodId); var model = new Order { BuyerEmail = input.Email, Id = order.Id, OrderDate = DateTimeOffset.Now, ShipToAddress = address, DeliveryMethod = method, OrderItems = order.OrderItems, PaymentIntentId = string.Empty, Subtotal = order.Subtotal, Status = OrderStatus.PaymentRecevied }; model.GetTotal(); var result = await _orderService.UpdateOrder(model, input.basketId); return(Ok(_mapper.Map <Order, OrderToReturnDto>(result))); } else { return(Ok()); } }