public async Task<ActionResult> NewSite(NewSiteViewModel model) { ViewData["Title"] = "Create New Site"; if (!ModelState.IsValid) { return View(model); } bool addHostName = false; var newSite = new SiteSettings(); newSite.Id = Guid.NewGuid(); if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { if (string.IsNullOrEmpty(model.SiteFolderName)) { model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x, Value = x, Selected = model.TimeZoneId == x }); ModelState.AddModelError("foldererror", sr["Folder name is required."]); return View(model); } bool folderAvailable = await siteManager.FolderNameIsAvailable(newSite.Id, model.SiteFolderName); if (!folderAvailable) { model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x, Value = x, Selected = model.TimeZoneId == x }); ModelState.AddModelError("foldererror", sr["The selected folder name is already in use on another site."]); return View(model); } } else { ISiteHost host; if (!string.IsNullOrEmpty(model.HostName)) { model.HostName = model.HostName.Replace("https://", string.Empty).Replace("http://", string.Empty); host = await siteManager.GetSiteHost(model.HostName); if (host != null) { model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x, Value = x, Selected = model.TimeZoneId == x }); ModelState.AddModelError("hosterror", sr["The selected host/domain name is already in use on another site."]); return View(model); } addHostName = true; } } // only the first site created by setup page should be a server admin site newSite.IsServerAdminSite = false; newSite.SiteName = model.SiteName; var siteNumber = 1 + await siteManager.CountOtherSites(Guid.Empty); newSite.AliasId = $"s{siteNumber}"; if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { newSite.SiteFolderName = model.SiteFolderName; } else if (addHostName) { newSite.PreferredHostName = model.HostName; } newSite.SiteIsClosed = model.IsClosed; newSite.SiteIsClosedMessage = model.ClosedMessage; await siteManager.CreateNewSite(newSite); await siteManager.CreateRequiredRolesAndAdminUser( newSite, model.Email, model.LoginName, model.DisplayName, model.Password ); if (addHostName) { await siteManager.AddHost(newSite.Id, model.HostName); } this.AlertSuccess(string.Format(sr["Basic site settings for {0} were successfully created."], newSite.SiteName), true); return RedirectToAction("SiteList", new { pageNumber = model.ReturnPageNumber }); }
public ActionResult NewSite(int slp = 1) { ViewData["Title"] = sr["Create New Site"]; var model = new NewSiteViewModel(); model.ReturnPageNumber = slp; //site list return page model.SiteId = Guid.Empty; model.TimeZoneId = siteManager.CurrentSite.TimeZoneId; model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x, Value = x, Selected = model.TimeZoneId == x }); return View(model); }