/// <summary>
        /// Initializes a new instance of the RoutesManagementTaskBase class.
        /// </summary>
        /// <param name="workflowManagementStateTracker">Reference to the
        /// workflow management connection state tracking service.</param>
        /// <param name="solverStateTracker">Reference to the VRP solver state
        /// tracking service.</param>
        /// <param name="optimizeAndEditPage">Reference to the "Optimize And Edit"
        /// page object.</param>
        public RoutesManagementTaskBase(
            IStateTrackingService workflowManagementStateTracker,
            IStateTrackingService solverStateTracker,
            IOptimizeAndEditPage optimizeAndEditPage)
        {
            Debug.Assert(workflowManagementStateTracker != null);
            Debug.Assert(solverStateTracker != null);
            Debug.Assert(optimizeAndEditPage != null);

            _workflowManagementStateTracker = workflowManagementStateTracker;
            _workflowManagementStateTracker.StateChanged +=
                _WorkflowManagementStateTrackerStateChanged;
            _workflowManagementIsEnabled = _workflowManagementStateTracker.IsEnabled;

            _solverStateTracker = solverStateTracker;
            _solverStateTracker.StateChanged += _SolverStateTrackerStateChanged;
            _hasRoutingOperationInProgress    = !_solverStateTracker.IsEnabled;

            _optimizeAndEditPage = optimizeAndEditPage;
            _optimizeAndEditPage.CurrentScheduleChanged += (_s, _e) =>
                                                           _NotifyCurrentScheduleChanged(_optimizeAndEditPage.CurrentSchedule);
            _NotifyCurrentScheduleChanged(_optimizeAndEditPage.CurrentSchedule);

            this.UpdatedEnabledState();
        }
        /// <summary>
        /// Initializes a new instance of the RoutesManagementTaskBase class.
        /// </summary>
        /// <param name="workflowManagementStateTracker">Reference to the
        /// workflow management connection state tracking service.</param>
        /// <param name="solverStateTracker">Reference to the VRP solver state
        /// tracking service.</param>
        /// <param name="optimizeAndEditPage">Reference to the "Optimize And Edit"
        /// page object.</param>
        public RoutesManagementTaskBase(
            IStateTrackingService workflowManagementStateTracker,
            IStateTrackingService solverStateTracker,
            IOptimizeAndEditPage optimizeAndEditPage)
        {
            Debug.Assert(workflowManagementStateTracker != null);
            Debug.Assert(solverStateTracker != null);
            Debug.Assert(optimizeAndEditPage != null);

            _workflowManagementStateTracker = workflowManagementStateTracker;
            _workflowManagementStateTracker.StateChanged +=
                _WorkflowManagementStateTrackerStateChanged;
            _workflowManagementIsEnabled = _workflowManagementStateTracker.IsEnabled;

            _solverStateTracker = solverStateTracker;
            _solverStateTracker.StateChanged += _SolverStateTrackerStateChanged;
            _hasRoutingOperationInProgress = !_solverStateTracker.IsEnabled;

            _optimizeAndEditPage = optimizeAndEditPage;
            _optimizeAndEditPage.CurrentScheduleChanged += (_s, _e) =>
                _NotifyCurrentScheduleChanged(_optimizeAndEditPage.CurrentSchedule);
            _NotifyCurrentScheduleChanged(_optimizeAndEditPage.CurrentSchedule);

            this.UpdatedEnabledState();
        }
        /// <summary>
        /// Initializes a new instance of the SendRoutesTask class.
        /// </summary>
        /// <param name="workflowManagementStateTracker">Reference to the
        /// workflow management connection state tracking service.</param>
        /// <param name="solverStateTracker">Reference to the VRP solver state
        /// tracking service.</param>
        /// <param name="optimizeAndEditPage">Reference to the "Optimize And Edit"
        /// page object.</param>
        /// <param name="dateTimeProvider">The reference to the date time provider
        /// object.</param>
        /// <param name="routesSender">The reference to the routes sender object.</param>
        public SendRoutesTask(
            IStateTrackingService workflowManagementStateTracker,
            IStateTrackingService solverStateTracker,
            IOptimizeAndEditPage optimizeAndEditPage,
            ICurrentDateProvider dateTimeProvider,
            IRoutesSender routesSender)
            : base(workflowManagementStateTracker, solverStateTracker, optimizeAndEditPage)
        {
            Debug.Assert(dateTimeProvider != null);
            Debug.Assert(routesSender != null);

            _dateTimeProvider = dateTimeProvider;
            _routesSender     = routesSender;
        }
 public BattleshipController(IStateTrackingService stateTrackingService)
 {
     this.stateTrackingService = stateTrackingService;
 }