private Order TranslateFromOrdersRowToOrderEntityWithDetails(OrdersManagementDataSet.OrdersRow ordersRow)
        {
            OrdersManagementDataSet.OrderDetailsRow[] detailRows = ordersRow.GetOrderDetailsRows();
            Order order = new Order();

            TranslateFromOrdersRowToOrderEntity(ordersRow, order);

            order.Details = new List <OrderDetail>(detailRows.Length);
            foreach (OrdersManagementDataSet.OrderDetailsRow detailRow in detailRows)
            {
                Product     product = _productService.GetProductById(detailRow.ProductId);
                OrderDetail detail  = new OrderDetail(detailRow.OrderId, detailRow.ProductId, detailRow.Quantity, product.UnitPrice.Value);
                order.Details.Add(detail);
            }
            return(order);
        }
        public void DeleteOrder(int orderId)
        {
            OrdersManagementDataSet.OrdersRow ordersRow = repository.Orders.FindByOrderId(orderId);
            if (ordersRow == null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.OrderIdNotExistsInRepository, orderId));
            }

            if (ordersRow.OrderStatus != (int)OrderStatusEnum.Draft)
            {
                throw new InvalidOperationException(Resources.OrderStatusInvalidForDeleteOrder);
            }

            OrdersRepository.Services.OrdersManagementDataSet.OrderDetailsRow[] details = ordersRow.GetOrderDetailsRows();
            foreach (OrdersRepository.Services.OrdersManagementDataSet.OrderDetailsRow detail in details)
            {
                repository.OrderDetails.RemoveOrderDetailsRow(detail);
            }

            repository.Orders.RemoveOrdersRow(ordersRow);
        }