/// <summary> /// Shared Ctor initialisation /// </summary> /// <param name="asyncWorker"></param> /// <param name="serverProvider"></param> /// <param name="environmentRepository"></param> /// <param name="eventAggregator"></param> /// <param name="connectControl"></param> /// <param name="deployStatsCalculator"></param> private void Initialize(IAsyncWorker asyncWorker, IEnvironmentModelProvider serverProvider, IEnvironmentRepository environmentRepository, IEventAggregator eventAggregator, IConnectControlSingleton connectControl, IDeployStatsCalculator deployStatsCalculator = null) { EnvironmentRepository = environmentRepository; _deployStatsCalculator = deployStatsCalculator ?? new DeployStatsCalculator(); _serverProvider = serverProvider; _servers = new ObservableCollection <IEnvironmentModel>(); _targetStats = new ObservableCollection <DeployStatsTO>(); _sourceStats = new ObservableCollection <DeployStatsTO>(); Target = new DeployNavigationViewModel(eventAggregator, asyncWorker, environmentRepository, StudioResourceRepository, true, connectControl); Source = new DeployNavigationViewModel(eventAggregator, asyncWorker, environmentRepository, StudioResourceRepository, false, connectControl); SetupPredicates(); SetupCommands(); LoadServers(); ExplorerItemModel.OnCheckedStateChangedAction += OnCheckedStateChangedAction; }
// ReSharper disable TooManyDependencies /// <summary> /// DI constructor /// </summary> /// <param name="asyncWorker"> async worker</param> /// <param name="serverProvider">server provider</param> /// <param name="environmentRepository"> environments </param> /// <param name="eventAggregator"> caliburn event handlers</param> /// <param name="studioResourceRepository"> studio repository </param> /// <param name="sourceConnectControlVm"> source server connect control</param> /// <param name="destinationConnectControlVm"> destination server connect control</param> /// <param name="deployStatsCalculator"> calculator for new overwritten totla resources</param> /// <param name="resourceID"> resource id</param> /// <param name="environmentID">environment id</param> /// <param name="connectControlSingleton">connect control</param> public DeployViewModel(IAsyncWorker asyncWorker, IEnvironmentModelProvider serverProvider, IEnvironmentRepository environmentRepository, IEventAggregator eventAggregator, IStudioResourceRepository studioResourceRepository, IConnectControlViewModel sourceConnectControlVm, IConnectControlViewModel destinationConnectControlVm, IDeployStatsCalculator deployStatsCalculator = null, Guid?resourceID = null, Guid?environmentID = null, IConnectControlSingleton connectControlSingleton = null) // ReSharper restore TooManyDependencies : base(eventAggregator) { VerifyArgument.IsNotNull("asyncWorker", asyncWorker); if (connectControlSingleton == null) { connectControlSingleton = ConnectControlSingleton.Instance; } if (environmentID.HasValue) { _initialItemEnvironmentID = environmentID.Value; } _initialItemResourceID = resourceID.GetValueOrDefault(Guid.Empty); DestinationServerHasDropped = false; StudioResourceRepository = studioResourceRepository; Initialize(asyncWorker, serverProvider, environmentRepository, eventAggregator, connectControlSingleton, deployStatsCalculator); SourceConnectControlViewModel = sourceConnectControlVm ?? new ConnectControlViewModel(ChangeSourceServer, "Source Server:", false); TargetConnectControlViewModel = destinationConnectControlVm ?? new ConnectControlViewModel(ChangeDestinationServer, "Destination Server:", false); TargetConnectControlViewModel.SetTargetEnvironment(); }