public void AddApplication(string name) { if (_db.Applications.Any(a => a.Name == name)) { throw new SiteExistsFoundException(); } Site site = null; try { site = _siteManager.CreateSite(name); var newApp = new Application { Name = name, ServiceUrl = site.ServiceUrl, SiteUrl = site.SiteUrl }; _db.Applications.Add(newApp); _db.SaveChanges(); } catch { if (site != null) { _siteManager.DeleteSite(name); } throw; } }
public ActionResult Create(ApplicationViewModel appViewModel) { string slug = appViewModel.Name.GenerateSlug(); if (db.Applications.Any(a => a.Name == appViewModel.Name || a.Slug == slug)) { ModelState.AddModelError("Name", "Site already exists"); } if (ModelState.IsValid) { Site site = null; try { site = _siteManager.CreateSite(slug); var app = new Application { Name = appViewModel.Name, Slug = slug, ServiceUrl = site.ServiceUrl, SiteUrl = site.SiteUrl, SiteName = slug, Created = DateTime.Now, UniqueId = Guid.NewGuid() }; if (appViewModel.RepositoryType != RepositoryType.None) { IRepositoryManager repositoryManager = GetRepositoryManager(app); repositoryManager.CreateRepository(appViewModel.RepositoryType); } db.Applications.Add(app); db.SaveChanges(); return RedirectToAction("Details", new { slug = slug }); } catch (Exception ex) { if (site != null) { _siteManager.DeleteSite(slug); } ModelState.AddModelError("__FORM", ex.Message); } } PopulateRepositoryTypes(); return View(appViewModel); }
private SettingsViewModel GetSettingsViewModel(Application application) { var settingsManager = new RemoteDeploymentSettingsManager(application.ServiceUrl); ViewBag.slug = application.Slug; return new SettingsViewModel { AppSettings = settingsManager.GetAppSettings().ToList(), ConnectionStrings = settingsManager.GetConnectionStrings().ToList() }; }
private static IRepositoryManager GetRepositoryManager(Application application) { return new RemoteRepositoryManager(application.ServiceUrl + "scm"); }
private IRepositoryManager GetRepositoryManager(Application application) { var repositoryManager = new RemoteRepositoryManager(application.ServiceUrl + "live/scm"); repositoryManager.Credentials = _credentialProvider.GetCredentials(); return repositoryManager; }
private SettingsViewModel GetSettingsViewModel(Application application) { var settingsManager = new RemoteDeploymentSettingsManager(application.ServiceUrl); ViewBag.slug = application.Slug; try { return new SettingsViewModel { AppSettings = settingsManager.GetAppSettings().ToList(), ConnectionStrings = settingsManager.GetConnectionStrings().ToList() }; } catch (InvalidOperationException) { throw new InvalidOperationException("Settings API not available"); } }