public ActionResult CopyPermissions(CopyRolesViewModel vm) { if (ModelState.IsValid && vm.FromRoleId != vm.ToRoleId) { var RolesSites = new RolesSiteService(_unitOfWork).GetRolesSiteList(vm.FromRoleId); var ExistingRolesSites = new RolesSiteService(_unitOfWork).GetRolesSiteList(vm.ToRoleId); var PendingToUpdate = from p in RolesSites join t in ExistingRolesSites on p.RolesSiteId equals t.RolesSiteId into table from left in table.DefaultIfEmpty() where left == null select p; foreach (var item in PendingToUpdate) { RolesSite site = new RolesSite(); site.CreatedBy = User.Identity.Name; site.CreatedDate = DateTime.Now; site.ModifiedBy = User.Identity.Name; site.ModifiedDate = DateTime.Now; site.RoleId = vm.ToRoleId; site.SiteId = item.SiteId; site.ObjectState = Model.ObjectState.Added; new RolesSiteService(_unitOfWork).Create(site); } var RolesDivisions = new RolesDivisionService(_unitOfWork).GetRolesDivisionList(vm.FromRoleId); var ExistingRolesDivisions = new RolesDivisionService(_unitOfWork).GetRolesDivisionList(vm.ToRoleId); var PendingDivisionsToUpdate = from p in RolesDivisions join t in ExistingRolesDivisions on p.RolesDivisionId equals t.RolesDivisionId into table from left in table.DefaultIfEmpty() where left == null select p; foreach (var item in PendingDivisionsToUpdate) { RolesDivision division = new RolesDivision(); division.CreatedBy = User.Identity.Name; division.CreatedDate = DateTime.Now; division.DivisionId = item.DivisionId; division.ModifiedBy = User.Identity.Name; division.ModifiedDate = DateTime.Now; division.RoleId = vm.ToRoleId; division.ObjectState = Model.ObjectState.Added; new RolesDivisionService(_unitOfWork).Create(division); } var RolesMenus = new RolesMenuService(_unitOfWork).GetRolesMenuList(vm.FromRoleId); var ExistingRolesMenus = new RolesMenuService(_unitOfWork).GetRolesMenuList(vm.ToRoleId); var PendingMenusToUpDate = from p in RolesMenus join t in ExistingRolesMenus on p.RolesMenuId equals t.RolesMenuId into table from left in table.DefaultIfEmpty() where left == null select p; foreach (var item in PendingMenusToUpDate) { RolesMenu menu = new RolesMenu(); menu.CreatedBy = User.Identity.Name; menu.CreatedDate = DateTime.Now; menu.FullHeaderPermission = item.FullHeaderPermission; menu.FullLinePermission = item.FullLinePermission; menu.MenuId = item.MenuId; menu.ModifiedBy = User.Identity.Name; menu.ModifiedDate = DateTime.Now; menu.RoleId = vm.ToRoleId; menu.ObjectState = Model.ObjectState.Added; new RolesMenuService(_unitOfWork).Create(menu); } var RolesActions = new RolesControllerActionService(_unitOfWork).GetRolesControllerActionList(vm.FromRoleId); var ExistingRolesActions = new RolesControllerActionService(_unitOfWork).GetRolesControllerActionList(vm.ToRoleId); var PendingRolesActionsToUpdate = from p in RolesActions join t in ExistingRolesActions on p.RolesControllerActionId equals t.RolesControllerActionId into table from left in table.DefaultIfEmpty() where left == null select p; foreach (var item in PendingRolesActionsToUpdate) { RolesControllerAction Actions = new RolesControllerAction(); Actions.ControllerActionId = item.ControllerActionId; Actions.CreatedBy = User.Identity.Name; Actions.CreatedDate = DateTime.Now; Actions.ModifiedBy = User.Identity.Name; Actions.ModifiedDate = DateTime.Now; Actions.RoleId = vm.ToRoleId; Actions.ObjectState = Model.ObjectState.Added; new RolesControllerActionService(_unitOfWork).Create(Actions); } _unitOfWork.Save(); return(RedirectToAction("Module", "Menu")); } return(View(vm)); }
public ActionResult Roles(RoleSitePermissionViewModel vm) { List <int> NewDivisionIds = new List <int>(); List <int> NewSiteIds = new List <int>(); if (!string.IsNullOrEmpty(vm.DivisionId)) { NewDivisionIds = vm.DivisionId.Split(',').Select(Int32.Parse).ToList(); } if (!string.IsNullOrEmpty(vm.SiteId)) { NewSiteIds = vm.SiteId.Split(',').Select(Int32.Parse).ToList(); } var NewDivisionForRoles = from p in NewDivisionIds select new RolesDivisionViewModel { DivisionId = p, RoleId = vm.RoleId }; var NewSiteForRoles = from p in NewSiteIds select new RolesSiteViewModel { SiteId = p, RoleId = vm.RoleId }; var ExistingDivisionsForRoles = new RolesDivisionService(_unitOfWork).GetRolesDivisionList(vm.RoleId).ToList(); var ExistingSiteForRoles = new RolesSiteService(_unitOfWork).GetRolesSiteList(vm.RoleId).ToList(); var DivisionPendingToUpdate = (from p in NewDivisionForRoles join t in ExistingDivisionsForRoles on new { x = p.RoleId, y = p.DivisionId } equals new { x = t.RoleId, y = t.DivisionId } into table from left in table.DefaultIfEmpty() where left == null select p.DivisionId).ToList(); var DivisionPendingToDelete = (from p in ExistingDivisionsForRoles join t in NewDivisionForRoles on new { x = p.RoleId, y = p.DivisionId } equals new { x = t.RoleId, y = t.DivisionId } into table from right in table.DefaultIfEmpty() where right == null select p).ToList(); foreach (int item in DivisionPendingToUpdate) { RolesDivision temp = new RolesDivision(); temp.RoleId = vm.RoleId; temp.DivisionId = item; temp.CreatedBy = User.Identity.Name; temp.CreatedDate = DateTime.Now; temp.ModifiedBy = User.Identity.Name; temp.ModifiedDate = DateTime.Now; new RolesDivisionService(_unitOfWork).Create(temp); } foreach (var item in DivisionPendingToDelete) { new RolesDivisionService(_unitOfWork).Delete(item.RolesDivisionId); } var SitePendingToUpdate = (from p in NewSiteForRoles join t in ExistingSiteForRoles on new { x = p.RoleId, y = p.SiteId } equals new { x = t.RoleId, y = t.SiteId } into table from left in table.DefaultIfEmpty() where left == null select p.SiteId).ToList(); var SitePendingToDelete = (from p in ExistingSiteForRoles join t in NewSiteForRoles on new { x = p.RoleId, y = p.SiteId } equals new { x = t.RoleId, y = t.SiteId } into table from right in table.DefaultIfEmpty() where right == null select p).ToList(); foreach (int item in SitePendingToUpdate) { RolesSite temp = new RolesSite(); temp.RoleId = vm.RoleId; temp.SiteId = item; temp.CreatedBy = User.Identity.Name; temp.CreatedDate = DateTime.Now; temp.ModifiedBy = User.Identity.Name; temp.ModifiedDate = DateTime.Now; new RolesSiteService(_unitOfWork).Create(temp); } foreach (var item in SitePendingToDelete) { new RolesSiteService(_unitOfWork).Delete(item.RolesSiteId); } try { _unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); ModelState.AddModelError("", message); return(View("RolesSiteAndDivision", vm)); } TempData["Validation"] = "Valid"; return(RedirectToAction("UserPermissions", "Menu", new { RoleId = vm.RoleId })); }