public ActionResult _AjaxDelete(Settings item, [DataSourceRequest] DataSourceRequest request)
        {
            if (ModelState.IsValid)
            {
                if (_db.SettingsAll.Count() == 1)
                {
                    ModelState.AddModelError("", "Not deleted");
                    return(Json(new[] { item }.ToDataSourceResult(request, ModelState)));
                }
                _db.SettingsAll.Remove(_db.SettingsAll.First(r => r.ID == item.ID));

                //delete pages and elements
                foreach (AbstractPage item2 in _db.AbstractPages.Where(r => r.DomainID == item.ID).ToList())
                {
                    _db.Entry(item2).State = EntityState.Modified;
                }
                foreach (TextComponent item2 in _db.TextComponents.Where(r => r.DomainID == item.ID).ToList())
                {
                    _db.Entry(item2).State = EntityState.Modified;
                }
                foreach (Contact item2 in _db.Contacts.Where(r => r.DomainID == item.ID).ToList())
                {
                    _db.Entry(item2).State = EntityState.Modified;
                }
                foreach (Newsletter item2 in _db.Newsletters.Where(r => r.DomainID == item.ID).ToList())
                {
                    _db.Entry(item2).State = EntityState.Modified;
                }

                _db.SaveChanges();

                //delete folders
                System.IO.Directory.Delete(Server.MapPath("~/Content/UserFiles/" + item.ID), true);
                System.IO.Directory.Delete(Server.MapPath("~/App_Data/cache/images/" + item.ID), true);

                CleanCache.CleanOutputCache();
                CleanCache.CleanSettingsAllCache();
            }
            return(Json(new[] { item }.ToDataSourceResult(request, ModelState)));
        }
        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));
        }