public async Task <CustomResponse> Update(Guid id, UpdateOrderItemModel UpdateRequest) { OrderItemDto orderItemDto = _unitOfWork.OrderItemRepository.Find(id); if (orderItemDto == null) { return(_responsMessages.OrderItemNotFound); } if (orderItemDto.Order.OrderStatus != OrderStatus.New) { return(_responsMessages.InvalidOperation); } orderItemDto.Order.Total -= orderItemDto.Total; orderItemDto.Quantity = UpdateRequest.Quantity; orderItemDto.Total = orderItemDto.Quantity * orderItemDto.PricePerUnit; orderItemDto.Order.Total += orderItemDto.Total; if (orderItemDto.Quantity > orderItemDto.Item.Quantity) { return(_responsMessages.InvalidOrderItemQuantity); } await _unitOfWork.SaveChangesAsync(); return(_responsMessages.OrderItemQuantityUpdatedSuccessfully); }
public async Task <ActionResult <UpdateOrderItemResponseModel> > UpdateOrderItemAsync( string orderId, int orderItemId, UpdateOrderItemModel model) { if (model is null) { throw new ArgumentNullException(nameof(model)); } var order = await _orderRepository.GetOrderByIdAsync(orderId); if (order is null) { return(NotFound()); } var primaryOrganisationId = User.GetPrimaryOrganisationId(); if (primaryOrganisationId != order.OrganisationId) { return(Forbid()); } var orderItem = order.OrderItems.FirstOrDefault( item => orderItemId.Equals(item.OrderItemId) && CatalogueItemType.Solution.Equals(item.CatalogueItemType)); if (orderItem is null) { return(NotFound()); } var result = await _updateOrderItemService.UpdateAsync( new UpdateOrderItemRequest( model.DeliveryDate, model.EstimationPeriod, order, orderItemId, model.Price, model.Quantity)); if (result.IsSuccess) { return(NoContent()); } var updateOrderItemResponse = new UpdateOrderItemResponseModel { Errors = result.Errors.Select(x => new ErrorModel(x.Id, x.Field)) }; return(BadRequest(updateOrderItemResponse)); }
public async Task <IActionResult> UpdateTicketCount(int raffleItemId, [FromBody] UpdateOrderItemModel model) { var raffleItems = raffleItemRepository.GetAll().ToList(); if (HttpContext.Request.Cookies.ContainsKey(CookieKeys.RaffleOrderId)) { var orderId = int.Parse(HttpContext.Request.Cookies[CookieKeys.RaffleOrderId]); var order = await mediator.Send(new GetRaffleOrderQuery { OrderId = orderId }); if (order == null) { logger.LogWarning($"No order found for RaffleOrderId: {orderId}"); return(Json(new { Success = false })); } var raffleItem = raffleItems.FirstOrDefault(x => x.Id == raffleItemId); if (raffleItem == null) { logger.LogWarning($"RaffleItemId: {raffleItemId} wasn't found to update count on order"); return(Json(new { Success = false })); } await mediator.Publish(new UpdateOrderCommand { OrderId = orderId, RaffleOrderItems = new List <UpdateOrderCommand.RaffleOrderItem> { new UpdateOrderCommand.RaffleOrderItem { RaffleItemId = raffleItemId, Name = $"#{raffleItem.ItemNumber} {raffleItem.Title}", Price = raffleItem.Cost, Count = model.Amount } } }); return(Json(new { Success = true })); } logger.LogWarning("No RaffleOrderId cookie exists"); return(Json(new { Success = false })); }
public ErrorModel UpdateOrderItemStatus(UpdateOrderItemModel updateModel) { var errors = new ErrorModel(); if (updateModel == null) { errors.Messages.Add("Invalid data. Please try again!"); return(errors); } try { DbContext.UpdateOrderItemStatus(updateModel.OrderId, updateModel.DishId, updateModel.ProviderId, updateModel.TargetStatus); } catch (Exception ex) { errors.Messages.Add(ex.Message); } return(errors); }
public async Task <ActionResult> Update(Guid id, [FromBody] UpdateOrderItemModel request) { return(await IOrderItemService.Update(id, request)); }
public ErrorModel UpdateOrderItemStatus(UpdateOrderItemModel updateModel) { return(Service.UpdateOrderItemStatus(updateModel)); }