Beispiel #1
0
        public async Task <IActionResult> CreateAsync(OrderCreateViewModel orderModel)
        {
            var currUser = await _userManager.GetUserAsync(User);

            if (currUser.FirstName != orderModel.User.FirstName ||
                currUser.LastName != orderModel.User.LastName ||
                currUser.Email != orderModel.User.Email ||
                currUser.PhoneNumber != orderModel.User.PhoneNumber)
            {
                await _userManager.UpdateAsync(orderModel.User);
            }
            DateTime orderDate = DateTime.Now;
            var      order     = new Order
            {
                OrderDate = orderDate,
                Paid      = false,
                UserId    = currUser.Id,
            };

            _orderRepository.Add(order);
            _orderRepository.Commit();

            int orderId = _orderRepository.GetAll().First(n => n.UserId == currUser.Id && DateTime.Compare(n.OrderDate, orderDate) == 0).Id;

            var cart = _cartRepository.GetAll().Where(n => n.UserId == currUser.Id);

            foreach (var product in cart)
            {
                var productOrder = new ProductOrder
                {
                    OrderId   = orderId,
                    ProductId = product.ProductId,
                    Amount    = product.Amount,
                };
                _productOrderRepository.Add(productOrder);
            }
            _productOrderRepository.Commit();
            return(RedirectToAction("Index"));
        }
Beispiel #2
0
        public void MakeOrder(MakeOrder orderObj)
        {
            ProductOrder            productOrder;
            List <ProductOrderItem> productOrderItems;

            // Add order record.
            var order = new Order
            {
                CustomerId = orderObj.CustomerId,
                CreatedOn  = DateTime.UtcNow
            };

            _orderRepository.Add(order);

            // Add product order records.
            foreach (var op in orderObj.OrderedProducts)
            {
                productOrder = new ProductOrder
                {
                    Order     = order,
                    ProductId = op.ProductId
                };

                _productOrderRepository.Add(productOrder);

                // Add product order item records based on the needed count.
                List <ProductLineItem> availableItems = _orderRepository.GetAvailableItems(op.ProductId, op.Count);
                productOrderItems = availableItems.Select(a => new ProductOrderItem
                {
                    ProductLineItemId = a.Id,
                    ProductOrder      = productOrder
                }).ToList();

                _orderRepository.AddProductOrderItems(productOrderItems);
            }

            // Commit the changes to the database.
            _unitOfWork.Commit();
        }
Beispiel #3
0
 public void Insert(ProductOrder entity)
 {
     _productOrderRepository.Add(entity);
 }