public static void UpdateOrderPosition(this OrderPosition entity, OrderPositionModel model)
 {
     entity.PositionNumber = model.PositionNumber;
     entity.Pieces = model.Pieces;
     entity.Text = model.Text;
     entity.Price = model.Price;
     entity.Total = model.PositionNumber * model.Price;
 }
        public OrderModel FindOrderBy(int orderId, bool includedPositions)
        {
            IQueryable<Order> entiryQuery = includedPositions ? _orderRepository.AllIncluding(x => x.OrderPositions) : _orderRepository.All;
            var entity = entiryQuery.SingleOrDefault(x => x.ID == orderId);
            if (entity != null)
            {
                var order = new OrderModel
                {
                    OrderId = entity.ID,
                    OrderDate = entity.OrderDate,
                    CustomerNumber = entity.CustomerNumber,
                    DeliveryDate = entity.DeliveryDate,
                    TotalPrice = entity.TotalPrice
                };

                if (entity.OrderPositions != null)
                {
                    order.OrderPositions = new List<OrderPositionModel>();
                    foreach (var positionEntity in entity.OrderPositions)
                    {
                        var positionModel = new OrderPositionModel
                        {
                            OrderId = positionEntity.OrderID,
                            PositionOrderId = positionEntity.ID,
                            PositionNumber = positionEntity.PositionNumber,
                            Pieces = positionEntity.Pieces,
                            Text = positionEntity.Text,
                            Price = positionEntity.Price,
                        };
                        order.OrderPositions.Add(positionModel);
                    }
                }

                return order;
            }
            return null;
        }
        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;
        }