public ActionResult Delete(RegionEditModel model) { String[] errors = proc.DeleteRegion(User.GetDbUser(db), model.Iid.Value); if (errors.Length > 0) { foreach (var s in errors) { ModelState.AddModelError(String.Empty, s); } return(View(model)); } else { return(RedirectToAction("Index", model.IidParent)); } }
// // GET: /Regions/Create public ActionResult Create(long?parent) { if (!User.IsInRole(db, RoleEnum.Admin, parent)) { return(RedirectToAction("Login", "Account", new { returnUrl = Url.Action("Create", "Regions", new { parent = parent }) })); } var regList = proc.GetAdministartorRegion(User.GetDbUser(db), parent); ViewBag.Regions = regList; var model = new RegionEditModel { IidParent = parent }; model.LoadUsers(db); return(View("Edit", model)); }
public ActionResult Edit(long id) { var model = db.Regions.Find(id); if (model == null) { return(HttpNotFound()); } if (!User.IsInRole(db, RoleEnum.Admin, model.IidParent)) { return(RedirectToAction("Login", "Account", new { returnUrl = Url.Action("Edit", "Regions", new { id = id }) })); } ViewBag.Regions = proc.GetAdministartorRegion(User.GetDbUser(db), model.IidParent); var editModel = new RegionEditModel(model); editModel.LoadUsers(db); return(View(editModel)); }
public ActionResult Save(RegionEditModel model) { ViewBag.Message = String.Empty; ViewBag.Regions = proc.GetAdministartorRegion(User.GetDbUser(db), model.IidParent); if (!ModelState.IsValid) { return(View("Edit", model)); } var errors = proc.SaveRegion(User.GetDbUser(db), model); if (errors.Length > 0) { foreach (var err in errors) { ModelState.AddModelError(err.Item1, err.Item2); } return(View("Edit", model)); } return(RedirectToAction("Index", new { id = model.IidParent })); }
public async Task <PageEditModel> GetById(Guid id) { var page = await _api.Pages.GetByIdAsync(id); if (page != null) { var type = App.PageTypes.GetById(page.TypeId); var model = new PageEditModel { Id = page.Id, SiteId = page.SiteId, ParentId = page.ParentId, SortOrder = page.SortOrder, TypeId = page.TypeId, Title = page.Title, NavigationTitle = page.NavigationTitle, Slug = page.Slug, MetaKeywords = page.MetaKeywords, MetaDescription = page.MetaDescription, Published = page.Published.HasValue ? page.Published.Value.ToString("yyyy-MM-dd HH:mm") : null }; foreach (var regionType in type.Regions) { var region = new RegionEditModel { Meta = new RegionMeta { Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)page.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemEditModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldEditModel { Type = appFieldType.TypeName, Meta = new FieldMeta { Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth) } }; if (regionType.Fields.Count > 1) { field.Model = (Extend.IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (Extend.IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } foreach (var block in page.Blocks) { var blockType = App.Blocks.GetByType(block.Type); if (block is Extend.BlockGroup) { var group = new BlockEditModel { Meta = new ContentMeta { Name = blockType.Name, Icon = blockType.Icon, Component = "block-group" } }; if (blockType.Display != BlockDisplayMode.MasterDetail) { group.Meta.Component = blockType.Display == BlockDisplayMode.Horizontal ? "block-group-horizontal" : "block-group-vertical"; } var groupItem = new BlockGroupEditModel { Type = block.Type }; foreach (var prop in block.GetType().GetProperties(App.PropertyBindings)) { if (typeof(Extend.IField).IsAssignableFrom(prop.PropertyType)) { var fieldType = App.Fields.GetByType(prop.PropertyType); groupItem.Fields.Add(new FieldEditModel { Type = fieldType.TypeName, Model = (Extend.IField)prop.GetValue(block), Meta = new FieldMeta { Name = prop.Name, Component = fieldType.Component, } }); } } bool firstChild = true; foreach (var child in ((Extend.BlockGroup)block).Items) { blockType = App.Blocks.GetByType(child.Type); groupItem.Items.Add(new BlockEditModel { IsActive = firstChild, Model = child, Meta = new ContentMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); firstChild = false; } group.Model = groupItem; model.Blocks.Add(group); } else { model.Blocks.Add(new BlockEditModel { Model = block, Meta = new ContentMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); } } return(model); } return(null); }
public ErrorTuple[] SaveRegion(UserProfileModel user, RegionEditModel model) { List <ErrorTuple> res = new List <ErrorTuple>(); if (!user.IsInRoleRegion(RoleEnum.Admin, model.IidParent)) { res.Add(new ErrorTuple("IidParent", "У вас нет прав для создания команд в выбранном регионе")); } RegionModel saveModel; if ((model.Iid ?? 0) > 0) { saveModel = db.Regions.Find(model.Iid); if (saveModel == null) { res.Add(new ErrorTuple(String.Empty, "Корректируемый регион был удален")); } else if (!user.IsInRoleRegion(RoleEnum.Admin, saveModel.IidParent)) { res.Add(new ErrorTuple(String.Empty, "У вас нет прав для корректировки выбранного региона")); } if (res.Count > 0) { return(res.ToArray()); } } else { if (res.Count > 0) { return(res.ToArray()); } saveModel = new RegionModel() { UserRoles = new List <UserRoleModel>() }; db.Regions.Add(saveModel); } saveModel.IidParent = model.IidParent; saveModel.Name = model.Name; String prefixCode; if (model.IidParent == null) { prefixCode = String.Empty; } else { var preg = db.Regions.Find(model.IidParent); prefixCode = preg == null ? String.Empty : (preg.SymCode ?? String.Empty); } saveModel.SymCode = prefixCode + model.SymCode; if (model.Users == null) { saveModel.UserRoles.Clear(); } else { var existingRoles = saveModel.UserRoles.ToList(); var rolesToDel = existingRoles.Where(r => r.CompID != null || r.RoleId < (int)RoleEnum.Admin).ToList(); foreach (var r in rolesToDel) { existingRoles.Remove(r); } rolesToDel.AddRange(existingRoles.Where(r => model.Users.Count(um => um.UserId == r.UserId && um.IsAdmin) < 1)); foreach (var r in rolesToDel) { existingRoles.Remove(r); } foreach (var um in model.Users.Where(um => um.IsAdmin && existingRoles.Count(r => r.UserId == um.UserId) < 1)) { saveModel.UserRoles.Add(new UserRoleModel { UserId = um.UserId, CompID = null, RoleId = (int)RoleEnum.Admin }); } foreach (var r in rolesToDel) { db.UserRoles.Remove(r); } } db.SaveChanges(); model.Iid = saveModel.Iid; return(new ErrorTuple[0]); }