public ActionResult Edit(int id)
        {
            if (!_permissionService.Authorize("ManagePermissions"))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionRecordModel();

            if (id == 0)
            {
                throw new Exception("Permission Id Missing");
            }

            var eve = _permissionService.GetPermissionById(id);

            if (eve != null)
            {
                model = new PermissionRecordModel
                {
                    Id              = id,
                    Name            = eve.Name,
                    IsActive        = eve.IsActive,
                    IsSystemDefined = eve.IsSystemDefined,
                    Category        = eve.Category
                };
            }

            return(View(model));
        }
        //
        // GET: /ManagePermissions/
        public ActionResult Index()
        {
            if (!PermissionService.Authorize(PermissionProvider.ManagePermissions))
            {
                return(AccessDeniedView());
            }

            var roles = _unitOfWork.RoleRepository.Get();

            ViewBag.Roles = roles;
            var permissionRecords       = _unitOfWork.PermissionRecordRepository.Get();
            var query1                  = new PagedList <PermissionRecord>(permissionRecords.ToList(), 0, 100);
            PermissionRecordModel model = new PermissionRecordModel();

            model.RoleId           = roles.FirstOrDefault().Id;
            model.PermissionRecord = new GridModel <PermissionRecordModel>
            {
                Data = query1.Select(g => new PermissionRecordModel()
                {
                    Id         = g.Id,
                    Name       = g.Name,
                    SystemName = g.SystemName,
                    Category   = g.Category,
                    Allow      = g.Roles.Any(x => x.Id == (model.RoleId)),
                    RoleId     = model.RoleId
                }),
                Total = permissionRecords.Count
            };
            return(View(model));
        }
        public ActionResult Create()
        {
            if (!_permissionService.Authorize("ManagePermissions"))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionRecordModel();

            return(View(model));
        }
        public ActionResult UpdatePermissionRecord(int id, PermissionRecordModel model)
        {
            var prs  = _unitOfWork.PermissionRecordRepository.GetSingle(x => x.Id == model.Id);
            var role = _unitOfWork.RoleRepository.GetSingle(x => x.Id == model.RoleId);

            if (model.Allow)
            {
                if (prs.Roles.FirstOrDefault(x => x.Id == model.RoleId) == null)
                {
                    prs.Roles.Add(role);
                    _unitOfWork.PermissionRecordRepository.Update(prs);
                    //DebugChangeTracker(id, _unitOfWork, "UpdatePermissions", "PermissionRecord");
                    _unitOfWork.Save();
                }
            }
            else
            {
                if (prs.Roles.FirstOrDefault(x => x.Id == model.RoleId) != null)
                {
                    prs.Roles.Remove(role);
                    _unitOfWork.PermissionRecordRepository.Update(prs);
                    //DebugChangeTracker(id, _unitOfWork, "UpdatePermissions", "PermissionRecord");
                    _unitOfWork.Save();
                }
            }
            IEnumerable <PermissionRecord> permissionRecords = null;

            permissionRecords = _unitOfWork.PermissionRecordRepository.Get();
            var enumerable = permissionRecords as List <PermissionRecord> ?? permissionRecords.ToList();
            var query1     = new PagedList <PermissionRecord>(enumerable.ToList(), 0, 10);
            PermissionRecordModel gridModel = new PermissionRecordModel();

            gridModel.PermissionRecord = new GridModel <PermissionRecordModel>
            {
                Data = query1.Select(g => new PermissionRecordModel()
                {
                    Id         = g.Id,
                    Name       = g.Name,
                    SystemName = g.SystemName,
                    Category   = g.Category,
                    Allow      = g.Roles.Any(x => x.Id == role.Id),
                    RoleId     = role.Id
                }),
                Total = enumerable.Count()
            };
            return(View(new GridModel(gridModel.PermissionRecord.Data)));
        }
        public ActionResult Create(PermissionRecordModel model)
        {
            if (!_permissionService.Authorize("ManagePermissions"))
            {
                return(AccessDeniedView());
            }

            // Check for duplicate permission, if any
            var permission = _permissionService.GetPermissionsByName(model.Name);

            if (permission != null)
            {
                ModelState.AddModelError("PermissionName", "A Permission with same name already exists. Please choose a different name.");
            }

            if (ModelState.IsValid)
            {
                var newPermission = new PermissionRecord()
                {
                    CreatedOn       = DateTime.Now,
                    IsSystemDefined = false,
                    ModifiedOn      = DateTime.Now,
                    SystemName      = model.SystemName,
                    Category        = model.Category,
                    IsDeleted       = false,
                    Name            = model.Name,
                    UserId          = _userContext.CurrentUser.Id,
                    IsActive        = model.IsActive
                };
                _permissionService.Insert(newPermission);
            }
            else
            {
                return(View(model));
            }

            SuccessNotification("Permission created successfully.");
            return(RedirectToAction("List"));
        }
        public ActionResult Index(GridCommand command, PermissionRecordModel model)
        {
            if (!PermissionService.Authorize(PermissionProvider.ManagePermissions))
            {
                return(AccessDeniedView());
            }

            try
            {
                var roles = _unitOfWork.RoleRepository.Get();
                ViewBag.Roles = roles;
                var permissionRecords = _unitOfWork.PermissionRecordRepository.Get();
                List <PermissionRecordModel> listPermissions = new List <PermissionRecordModel>();
                foreach (var item in permissionRecords)
                {
                    PermissionRecordModel newItem = new PermissionRecordModel();
                    newItem.Id         = item.Id;
                    newItem.Name       = item.Name;
                    newItem.SystemName = item.SystemName;
                    newItem.Category   = item.Category;
                    newItem.Allow      = item.Roles.Any(x => x.Id == (model.RoleId));
                    newItem.RoleId     = model.RoleId;
                    listPermissions.Add(newItem);
                }

                return(View(new GridModel <PermissionRecordModel>()
                {
                    Data = listPermissions, Total = permissionRecords.Count
                }));
            }
            catch (Exception exception)
            {
                Logger.LogException(exception);
                return(new JsonResult()
                {
                    Data = new PermissionRecordModel().PermissionRecord
                });
            }
        }
        public ActionResult Edit(PermissionRecordModel model)
        {
            if (!_permissionService.Authorize("ManagePermissions"))
            {
                return(AccessDeniedView());
            }

            // Check for duplicate permission, if any
            var permission = _permissionService.GetPermissionsByName(model.Name.Trim());

            if (permission != null && permission.Id != model.Id)
            {
                ModelState.AddModelError("PermissionName", "A Permission with the same name already exists. Please choose a different name.");
            }

            if (ModelState.IsValid)
            {
                var eve = _permissionService.GetPermissionById(model.Id);
                if (eve != null)
                {
                    eve.ModifiedOn = DateTime.Now;
                    eve.Name       = model.Name;
                    eve.IsActive   = model.IsActive;
                    eve.Category   = model.Category;
                    eve.SystemName = model.SystemName;
                    eve.UserId     = _userContext.CurrentUser.Id;
                    _permissionService.Update(eve);
                }
            }
            else
            {
                return(View(model));
            }

            SuccessNotification("Permission updated successfully.");
            return(RedirectToAction("List"));
        }
 public static PermissionRecord ToEntity(this PermissionRecordModel model, PermissionRecord destination)
 {
     return(model.MapTo(destination));
 }
 public static PermissionRecord ToEntity(this PermissionRecordModel model)
 {
     return(model.MapTo <PermissionRecordModel, PermissionRecord>());
 }