コード例 #1
0
        public IActionResult UpdateOrder([FromBody] OrderDto orderDto)
        {
            try
            {
                var order = _mapper.Map <Order>(orderDto);

                if (order == null || orderDto.ProductsId == null)
                {
                    throw new AppException("Неверный данные!");
                }
                //order.Date = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Parse(orderDto.Date.ToString()), "Pacific Standard Time", "UTC");
                var userId = Convert.ToInt32(User.Claims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value);

                if (order.UserId != userId)
                {
                    throw new AppException("Вам нельзя обновить услугу!");
                }
                OrderPrepayment op = null;

                _logger.LogInformation($"User #{userId}, UpdateOrder #{order.Id}");


                if (orderDto.Prepay != 0)
                {
                    op = new OrderPrepayment
                    {
                        Total = orderDto.Prepay,
                        Date  = orderDto.DatePrepay//TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Parse(orderDto.DatePrepay.ToString()), "Pacific Standard Time", "UTC")
                    };
                    //order.Prepayment = op;
                }

                if (order.DiscountId == 0)
                {
                    order.DiscountId = null;
                }

                _orderService.Update(order, op, orderDto.ProductsId);

                return(Ok(new
                {
                    Message = "Заказ обновлен!"
                }));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                _logger.LogCritical($"{ex}");
                return(BadRequest("Service error!"));
            }
        }
コード例 #2
0
        /// <summary>
        /// Updating Order data
        /// </summary>
        /// <param name="order">Order</param>
        public void Update(Order order, OrderPrepayment op, IList <int> productsId)
        {
            //_repositoryPrepayment = _unitOfWork.EfRepository<OrderPrepayment>();
            _repository.Update(order);

            var toUpdate = _repository.Query(o => o.Id == order.Id)
                           .Include(p => p.Prepayment)
                           .Include(oi => oi.Items)
                           .ThenInclude(i => i.ProductInfo)
                           .SingleOrDefault();

            var newItems = new List <OrderItem>();

            //var duplicate = toUpdate.Items.Select(i => i.Id).Intersect(productsId);

            //var haveItems = toUpdate.Items.Where(oi => productsId.Contains(oi.Id));

            //var haveNot = haveItems.Select(oi => !productsId.Contains(oi.Id));

            //foreach (var item in toUpdate.Items)
            //{
            //  if (duplicate.Contains(item.Id))
            //    continue;
            //  else
            //    toUpdate.Items
            //}

            foreach (var id in productsId)
            {
                //if(toUpdate.Items.cou)
                newItems.Add(new OrderItem
                {
                    ProductId = id
                });
            }
            toUpdate.Items = newItems;

            //var prepayment = _repositoryPrepayment.Find(p=>p.OrderId == order.Id);
            if (toUpdate.Prepayment == null)
            {
                toUpdate.Prepayment = op;
                //_repositoryPrepayment.Add(op);
            }
            else
            {
                toUpdate.Prepayment.Total = op.Total;
                toUpdate.Prepayment.Date  = op.Date;
            }
            _repository.Save();
        }