public static void InitDB() { if (ConfigurationManager.AppSettings["DbMigrations"].ToString() == "true") { Database.SetInitializer(new Uco.Models.Migrations.DbMigrationsInitializer()); using (Db _db = new Db()) { HttpContext.Current.Items["_EntityContext"] = _db; if (!_db.Database.Exists()) { _db.Database.Create(); } if (_db.SettingsAll.Count() == 0) { //create DomainPage DomainPage lp = new DomainPage(); lp.ID = 1; lp.ParentID = 0; lp.Title = "DomainPage"; lp.Visible = true; lp.ShowInSitemap = true; lp.ShowInMenu = true; lp.SeoUrlName = "1"; lp.ShowInAdminMenu = true; lp.DomainID = 1; lp.PermissionsView = SF.RolesListToString(new List <string>() { "Admin", "Anonymous" }); lp.PermissionsEdit = SF.RolesListToString(new List <string>() { "Admin" }); _db.DomainPages.Add(lp); _db.SaveChanges(); //create setting Settings SettingsAll = new Settings(); SettingsAll.DomainPageID = lp.ID; SettingsAll.Domain = "Default"; SettingsAll.AdminEmail = "*****@*****.**"; SettingsAll.LanguageCode = ((System.Web.Configuration.GlobalizationSection)ConfigurationManager.GetSection("system.web/globalization")).UICulture;; SettingsAll.Roles = SF.RolesStringAdd("", "Admin"); _db.SettingsAll.Add(SettingsAll); _db.SaveChanges(); //create roles _db.Roles.Add(new Role() { IsSystem = true, Title = "Admin" }); _db.Roles.Add(new Role() { IsSystem = true, Title = "Anonymous" }); _db.SaveChanges(); //update settings reference lp.DomainID = SettingsAll.ID; _db.SaveChanges(); //create UNIQUE INDEX on SeoUrlName _db.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX IX_AbstractPage_SeoUrlName ON AbstractPages (DomainID,RouteUrl,SeoUrlName)"); CleanCache.CleanOutputCache(); //create admin user SF.CreateUser("admin", "adminadmin", "*****@*****.**", new List <string>() { "Admin" }, "Admin"); } } } else { Database.SetInitializer <Db>(null); } }
public ActionResult Create(Settings item, List <string> Roles) { if (ModelState.IsValid) { if (_db.SettingsAll.Count(r => r.Domain == item.Domain) > 0) { ModelState.AddModelError("", "Domain + LanguageCode not unic. Please specify different Domain or LanguageCode"); return(View(item)); } string Title = ""; if (string.IsNullOrEmpty(item.Domain)) { Title = (_db.AbstractPages.Max(r => r.ID) + 1).ToString(); } else { Title = item.Domain; } DomainPage dp = new DomainPage(); dp.Title = Title; dp.ParentID = 0; dp.DomainID = 0; dp.SeoUrlName = (_db.AbstractPages.Max(r => r.ID) + 1).ToString(); dp.PermissionsView = SF.RolesListToString(new List <string>() { "Admin", "Anonymous" }); dp.PermissionsEdit = SF.RolesListToString(new List <string>() { "Admin" }); _db.DomainPages.Add(dp); _db.SaveChanges(); List <string> DomainRoles = SF.GetRoleObjectsList().Where(r => r.IsSystem == true).Select(r => r.Title).ToList(); if (Roles != null) { DomainRoles.AddRange(Roles); } item.Roles = SF.RolesListToString(DomainRoles); item.DomainPageID = dp.ID; if (string.IsNullOrEmpty(item.Domain)) { item.Domain = Title; } _db.SettingsAll.Add(item); _db.SaveChanges(); dp.DomainID = item.ID; _db.Entry(dp).State = EntityState.Modified; _db.SaveChanges(); System.IO.Directory.CreateDirectory(Server.MapPath("~/Content/UserFiles/" + item.ID)); System.IO.Directory.CreateDirectory(Server.MapPath("~/App_Data/cache/images/" + item.ID)); CleanCache.CleanOutputCache(); CleanCache.CleanSettingsAllCache(); return(RedirectToAction("Index")); } return(View(item)); }