Example #1
0
        //delete order
        public bool DeleteOrder(int orderId)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    Order            order      = _orderRepository.Get(x => x.Id == orderId).FirstOrDefault();
                    List <OrderItem> orderItems = _orderItemRepository.Get(x => x.OrderId == order.Id).ToList();

                    foreach (var orderItem in orderItems)
                    {
                        OrderItemProduct orderItemProduct = _orderItemProductRepository.Get(x => x.OrderItemId == orderItem.Id).FirstOrDefault();

                        //increment Quantity in Product table
                        _productService.IncrementProductQuentity(orderItemProduct.ProductId, orderItem.Quantity);
                        _orderItemProductRepository.Remove(orderItemProduct);
                        _orderItemProductRepository.Save();
                        _orderItemRepository.Remove(orderItem);
                        _orderItemRepository.Save();
                    }
                    _orderRepository.Remove(order);
                    _orderRepository.Save();
                    //Payment payment = _paymentRepository.Get(x=>x.OrderId==orderId).FirstOrDefault();
                    //_paymentRepository.Remove(payment);
                    //_paymentRepository.Save();
                    scope.Complete();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(new Exception(ex.Message));
                return(false);
            }
        }
Example #2
0
        //CreateNewOrder
        public OrderDto CreateNewOrder(OrderVM orderVM)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    OrderDto orderDto = new OrderDto()
                    {
                        CreatedAt         = DateTime.Now,
                        CustomerId        = orderVM.CustomerId,
                        CustomerLatitude  = orderVM.CustomerLatitude,
                        CustomerLongitude = orderVM.CustomerLongitude,
                        SellerId          = orderVM.SellerId,
                        Status            = orderVM.Status,
                    };

                    Order orderToAdd = Mapper.Map <Order>(orderDto);
                    _orderRepository.Add(orderToAdd);
                    bool orderResult = _orderRepository.Save();
                    bool x           = orderResult;
                    foreach (var orderItem in orderVM.Items)
                    {
                        OrderItemDto orderItemDto = new OrderItemDto()
                        {
                            OrderId  = Mapper.Map <Order>(orderToAdd).Id, //OrderId
                            Quantity = orderItem.Quantity
                        };

                        //Map
                        OrderItem orderItemToAdd = Mapper.Map <OrderItem>(orderItemDto);
                        _orderItemRepository.Add(orderItemToAdd);
                        _orderItemRepository.Save();

                        OrderItemProductDto orderItemProductDto = new OrderItemProductDto()
                        {
                            OrderItemId = Mapper.Map <OrderItem>(orderItemToAdd).Id,
                            ProductId   = orderItem.ProductId
                        };

                        //Map
                        OrderItemProduct orderItemProductToAdd = Mapper.Map <OrderItemProduct>(orderItemProductDto);
                        _orderItemProductRepository.Add(orderItemProductToAdd);
                        bool orderItemProductResult = _orderItemProductRepository.Save();

                        //reduce Quantity in Product table
                        _productService.ReduceProductQuentity(orderItem.ProductId, orderItem.Quantity);
                    }

                    //payment table create
                    double price = _paymentService.CalculateOrderPrice(orderToAdd.CustomerId, orderToAdd.Id);
                    _paymentService.CreateNewPayment(orderToAdd.Id, price);

                    scope.Complete();
                    return(Mapper.Map <OrderDto>(orderToAdd));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(new Exception(ex.Message));
                return(null);
            }
        }