public OrderModel ReOrder(int orderId) { var entity = _orderRepository.AllIncluding(x => x.OrderPositions).SingleOrDefault(x => x.ID == orderId); if (entity != null) { // Copy from the existing order and then set the order date to today var newOrder = new Order(); newOrder.CopyFrom(entity); newOrder.OrderDate = DateTime.Now; newOrder.DeliveryDate = null; _orderRepository.Add(newOrder); _unitOfWork.Commit(); var orderModel = new OrderModel { OrderId = newOrder.ID, OrderDate = newOrder.OrderDate, CustomerNumber = newOrder.CustomerNumber, DeliveryDate = newOrder.DeliveryDate, TotalPrice = newOrder.TotalPrice }; if (newOrder.OrderPositions != null) { orderModel.OrderPositions = new List<OrderPositionModel>(); foreach (var positionEntity in newOrder.OrderPositions) { var positionModel = new OrderPositionModel { OrderId = positionEntity.OrderID, PositionOrderId = positionEntity.ID, PositionNumber = positionEntity.PositionNumber, Pieces = positionEntity.Pieces, Text = positionEntity.Text, Price = positionEntity.Price, }; orderModel.OrderPositions.Add(positionModel); } } return orderModel; } return null; }