Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
 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));
 }