protected bool _CheckRoutingParams(Schedule schedule, ICollection <Route> routes, ICollection <Order> orders)
        {
            bool isValid = false;

            // check orders count
            if (orders.Count < 1)
            {
                App.Current.Messenger.AddError((string)App.Current.FindResource("Error_InvalidOrdersNum"));
            }
            // check routes count
            else if (routes.Count < 1)
            {
                App.Current.Messenger.AddError((string)App.Current.FindResource("Error_InvalidRoutesNum"));
            }
            // validate objects
            else
            {
                List <DataObject> invalidObjects = new List <DataObject>();
                invalidObjects.AddRange(RoutingCmdHelpers.ValidateObjects <Order>(orders));
                invalidObjects.AddRange(RoutingCmdHelpers.ValidateObjects <Route>(routes));
                if (invalidObjects.Count > 0)
                {
                    _ShowSolveValidationResult(invalidObjects.ToArray());
                }
                else
                {
                    isValid = true;
                }
            }

            return((isValid) ? ConstraintViolationsChecker.Check(schedule, routes, orders) : false);
        }
        /// <summary>
        /// Method checks params of routing operation and show warning message with details if parameters are invalid
        /// </summary>
        /// <param name="schedule"></param>
        /// <param name="orders"></param>
        /// <param name="routes"></param>
        /// <returns></returns>
        private bool _CheckRoutingParams(Schedule schedule, ICollection <Order> orders, ICollection <Route> routes)
        {
            bool isValid = false;
            List <DataObject> invalidObjects = new List <DataObject>();

            invalidObjects.AddRange(RoutingCmdHelpers.ValidateObjects <Order>(orders));
            invalidObjects.AddRange(RoutingCmdHelpers.ValidateObjects <Route>(routes));
            if (invalidObjects.Count > 0)
            {
                RoutingSolveValidator       validator = new RoutingSolveValidator();
                ICollection <MessageDetail> details   = validator.GetValidateMessageDetail(invalidObjects.ToArray());
                string invalidOperationTitle          = ((string)App.Current.FindResource("SolveValidationOperationInvalid"));
                App.Current.Messenger.AddMessage(MessageType.Error, invalidOperationTitle, details);
            }
            else
            {
                isValid = true;
            }

            return(isValid);
        }