コード例 #1
0
        public IResult Order(OrderFromBasketDto dto)
        {
            var result = BusinessRules.Run(CreateNewOrder(dto));

            if (result != null)
            {
                return(new ErrorResult(result.Message));
            }

            int userId        = GetUserIdFromToken();
            int basketId      = _basketService.GetByUserIdActive(userId).Data.Id;
            var basketDetails = _basketDetailService.GetAllByBasketId(basketId).Data;

            foreach (var basketDto in basketDetails)
            {
                OrderDetail orderDetail = new OrderDetail
                {
                    ProductId  = basketDto.ProductId,
                    Count      = basketDto.Count,
                    OrderId    = GetOrderIdForUser(userId),
                    SalePrice  = GetSalePriceForProduct(basketDto.ProductId, basketDto.Count),
                    CreateDate = DateTime.Now,
                    Active     = true
                };

                _orderDetailService.Add(orderDetail);
            }

            _basketService.SetPassive(basketId);
            return(new SuccessResult(BusinessMessages.ProductsOrdered));
        }
コード例 #2
0
        public IActionResult Order(OrderFromBasketDto dto)
        {
            var result = _orderFromBasketService.Order(dto);

            if (result.Success)
            {
                return(Ok(result));
            }

            return(BadRequest(result));
        }
コード例 #3
0
        // Business Rules

        private IResult CreateNewOrder(OrderFromBasketDto dto)
        {
            int userId = GetUserIdFromToken();

            if (userId == 0)
            {
                return(new ErrorResult(SystemMessages.WrongTokenSent));
            }

            AddressDto addressDto = new AddressDto
            {
                UserId        = userId,
                CityId        = dto.CityId,
                AddressDetail = dto.AddressDetail,
                PostalCode    = dto.PostalCode
            };

            _orderService.AddAsDto(addressDto);
            return(new SuccessResult(BusinessMessages.OrderAdded));
        }