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(); }
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); }
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; } }
private string GetIISName(Project project) { return String.Format(ProjectFormat, project.Name); }