public ConfigurationWizardViewModel(
			Project item,
			IRepositoryFactory<IProjectRepository> projectRepositoryFactory,
			IViewModelsFactory<IProjectLocationStepViewModel> projectLocationStepVmFactory,
			IViewModelsFactory<IDatabaseSettingsStepViewModel> databaseSettingsStepVmFactory,
			IViewModelsFactory<ISearchSettingsStepViewModel> searchSettingsStepVmFactory,
			IViewModelsFactory<IConfigurationViewModel> configurationVmFactory,
			IViewModelsFactory<IConfirmationStepViewModel> confirmationStepVmFactory,
			NavigationManager navigationManager
			)
		{
			_item = item;
			_projectRepositoryFactory = projectRepositoryFactory;
			_navigationManager = navigationManager;

			// initializing step instances
			_confirmationViewModel = confirmationStepVmFactory.GetViewModelInstance();
			var confirmParam = new KeyValuePair<string, object>("confirmationViewModel", _confirmationViewModel);

			_searchSettingsStepViewModel = searchSettingsStepVmFactory.GetViewModelInstance(confirmParam);
			var searchParam = new KeyValuePair<string, object>("searchViewModel", _searchSettingsStepViewModel);

			_databaseSettingsStepViewModel = databaseSettingsStepVmFactory.GetViewModelInstance(confirmParam);
			var dbParam = new KeyValuePair<string, object>("databaseViewModel", _databaseSettingsStepViewModel);

			_projectLocationStepViewModel = projectLocationStepVmFactory.GetViewModelInstance(confirmParam, searchParam, dbParam);
			var locationParam = new KeyValuePair<string, object>("projectLocationViewModel", _projectLocationStepViewModel);

			_configurationViewModel = configurationVmFactory.GetViewModelInstance(locationParam, dbParam, searchParam);

			Initialize();
			RegisterWizardSteps();
		}
Example #2
0
		public void StartSite(Project project)
		{
			EnsureConfiguration();

			// get existing or create new site
			var site = GetOrCreateSite(project);

			// start site on iisexpress
			IisExpress.Start(site.Name);

			var binding = site.Bindings[0];
			var url = String.Format("http://{0}:{1}", binding.Host, binding.EndPoint.Port);

			// open the browser
			Process.Start(url);

			// save the project IP and Port
			//if (createdNew)
			if (project.BrowseUrl != url)
			{
				var repo = _repository.GetRepositoryInstance();
				project.BrowseUrl = url;
				repo.Update(project);
				repo.UnitOfWork.Commit();
			}
		}
        public void Can_save_project()
        {
            var project = new Project()
            {
                Name = "Sample Project",
                Id = Guid.NewGuid(),
                BrowseUrl = "Click to resolve",
                Created = DateTime.Now,
                Version = "1.0.0.0"
            };

            project.Location = new ProjectLocation() { LocalPath = @"E:\Program Files (x86)\VirtoCommerce 1.0\Projects\Default2", Type = LocationType.FileSystem, Url = @"E:\Program Files (x86)\VirtoCommerce 1.0\Projects\Default2" };

            // serialize
            var xml = XmlSerializationService<Project>.Serialize(project);


            var repository = new ProjectsRepository();
            repository.Add(project);
            repository.UnitOfWork.Commit();

            repository = new ProjectsRepository();
            Assert.True(repository.Projects.Count() == 1);


            var project2 = new Project()
            {
                Name = "Sample Project 2",
                Id = Guid.NewGuid(),
                BrowseUrl = "Click to resolve",
                Created = DateTime.Now,
                Version = "1.0.0.0"
            };

            project2.Location = new ProjectLocation() { LocalPath = @"E:\Program Files (x86)\VirtoCommerce 1.0\Projects\Default2", Type = LocationType.FileSystem, Url = @"E:\Program Files (x86)\VirtoCommerce 1.0\Projects\Default2" };

            repository.Add(project2);
            repository.UnitOfWork.Commit();

            repository = new ProjectsRepository();
            Assert.True(repository.Projects.Count() == 2);

            repository.Remove(repository.Projects.ElementAt(0));
            repository.UnitOfWork.Commit();

            repository = new ProjectsRepository();
            Assert.True(repository.Projects.Count() == 1);
        }
Example #4
0
		private Site GetOrCreateSite(Project project)
		{
			var name = GetIISName(project);

			using (var mgr = new ServerManager())
			{
				// check if site already exists
				var site = mgr.Sites.SingleOrDefault(x => x.Name == name);

				if (site == null)
				{
					// create new site
					int port;
					bool exists;

					do
					{
						// generate port number
						port = new Random().Next(2000, 3000);
						exists = mgr.Sites.Any(x => x.Bindings.Any(y => y.EndPoint.Port == port));
					} while (exists);

					var binding = String.Format("*:{0}:localhost", port);
					site = mgr.Sites.Add(name, "http", binding, project.Location.LocalPath);
					mgr.CommitChanges();
				}
				else
				{
					var pathOld = site.Applications["/"].VirtualDirectories["/"].PhysicalPath.ToLower();
					if (pathOld != project.Location.LocalPath.ToLower())
					{
						// update PhysicalPath
						site.Applications["/"].VirtualDirectories["/"].PhysicalPath = project.Location.LocalPath;
						mgr.CommitChanges();
					}
				}

				return site;
			}
		}
Example #5
0
		private string GetIISName(Project project)
		{
			return String.Format(ProjectFormat, project.Name);
		}