public async Task <ActionResult> OperationRoles(string id, FormCollection roleItems)
        {
            try
            {
                if (roleItems != null)
                {
                    Dictionary <string, object> roleItemValues = new Dictionary <string, object>();

                    List <string> operationRoles = null;

                    foreach (string key in roleItems.Keys)
                    {
                        if (key.ToLower() != "id")
                        {
                            roleItemValues.Add(key, roleItems.GetValues(key));
                        }
                    }

                    if (roleItemValues != null)
                    {
                        operationRoles = new List <string>();

                        foreach (var key in roleItemValues.Keys)
                        {
                            if ((roleItemValues[key] != null) && (roleItemValues[key] as string[]).Length >= 1)
                            {
                                if ((roleItemValues[key] as string[])[0].ToLower() == "true")
                                {
                                    operationRoles.Add(key);
                                }
                            }
                        }
                    }

                    using (AuthEntityModelContainer context = new AuthEntityModelContainer())
                    {
                        var roleOps = context.RoleOperations.Where(ro => (ro.OperationId.ToLower() == id.ToLower()));//context.RoleOperations.Where((ro => (ro.OperationId.ToLower() == id.ToLower()) && (!operationRoles.Contains(ro.OperationId))));

                        if (roleOps != null)
                        {
                            var roleOpArray = roleOps.ToArray();

                            var deletedRoleOpes = context.RoleOperations.RemoveRange(roleOpArray);

                            context.SaveChanges();
                        }
                    }

                    if (operationRoles != null)
                    {
                        var securityManager = Provider.SecurityManager();

                        List <object> setRoleResults = new List <object>();

                        foreach (var opRole in operationRoles)
                        {
                            setRoleResults.Add(securityManager.SetRoleOperation(opRole, id));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Provider.ExceptionHandler().HandleException(ex);
                return(View());
            }

            return(RedirectToAction("Details", new { id = id })); //RedirectToAction("Index");
        }
        public ActionResult RoleOperations(string id, FormCollection opItems)
        {
            try
            {
                var logger = Provider.Logger();

                if (opItems != null)
                {
                    Dictionary <string, object> opItemValues = new Dictionary <string, object>();

                    List <string> roleOperations = null;

                    foreach (string key in opItems.Keys)
                    {
                        if (key.ToLower() != "id")
                        {
                            opItemValues.Add(key, opItems.GetValues(key));
                        }
                    }

                    if (opItemValues != null)
                    {
                        roleOperations = new List <string>();

                        foreach (var key in opItemValues.Keys)
                        {
                            if ((opItemValues[key] != null) && (opItemValues[key] as string[]).Length >= 1)
                            {
                                if ((opItemValues[key] as string[])[0].ToLower() == "true")
                                {
                                    roleOperations.Add(key);
                                }
                            }
                        }
                    }

                    using (AuthEntityModelContainer context = new AuthEntityModelContainer())
                    {
                        var roleOps = context.RoleOperations.Where(ro => (ro.RoleId.ToLower() == id.ToLower()));

                        if (roleOps != null)
                        {
                            var roleOpArray = roleOps.ToArray();

                            var deletedRoleOpes = context.RoleOperations.RemoveRange(roleOpArray);

                            context.SaveChanges();
                        }
                    }

                    if (roleOperations != null)
                    {
                        var           securityManager = Provider.SecurityManager();
                        List <object> setRoleResults  = new List <object>();

                        foreach (var roleOp in roleOperations)
                        {
                            setRoleResults.Add(securityManager.SetRoleOperation(id, roleOp));
                        }

                        logger.LogUserOperation(ControllerContext.HttpContext.User.Identity.Name, String.Format("User \"{0}\" dispatched operation(s) to role \"{1}\".", ControllerContext.HttpContext.User.Identity.Name, id));
                    }
                }

                return(RedirectToAction("Details", new { id = id }));
            }
            catch (Exception ex)
            {
                Provider.ExceptionHandler().HandleException(ex);
                return(View());
            }
        }