Пример #1
0
        public ActionResult Clone(int id)
        {
            RSMDataModelDataContext context = new RSMDataModelDataContext();

            JCLRoleRule source = (from j in context.JCLRoleRules
                                  where j.ID == id
                                  select j).Single();

            JCLRoleRule dest = new JCLRoleRule();
            JCLRole     newRole;

            dest.JobCode  = source.JobCode;
            dest.DeptID   = source.DeptID;
            dest.Location = source.Location;

            context.JCLRoleRules.InsertOnSubmit(dest);
            context.SubmitChanges();


            foreach (JCLRole role in source.JCLRoles)
            {
                newRole             = new JCLRole();
                newRole.RoleID      = role.RoleID;
                newRole.JCLRoleRule = dest;
                context.JCLRoles.InsertOnSubmit(newRole);
            }

            context.SubmitChanges();

            return(RedirectToAction("Edit", new { id = dest.ID, message = "You are now editing a new copy of your previous rule." }));
        }
Пример #2
0
        int UpdateRule(int id, string jobCode, string deptID, int location, List <GridDataRow> roles)
        {
            JCLRoleRule rule;
            var         context = new RSMDataModelDataContext();
            var         action  = "modified";

            if (id > 0)
            {
                rule = (from r in context.JCLRoleRules
                        where r.ID == id
                        select r).Single();
            }
            else
            {
                action = "created";
                rule   = new JCLRoleRule();
                context.JCLRoleRules.InsertOnSubmit(rule);
            }

            rule.JobCode  = jobCode;
            rule.DeptID   = deptID;
            rule.Location = location;

            var thisRuleRoles = from r in context.JCLRoles
                                where r.RuleID == id
                                select r;

            if (thisRuleRoles.Any())
            {
                context.JCLRoles.DeleteAllOnSubmit(thisRuleRoles);
            }

            context.SubmitChanges();

            foreach (var row in roles)
            {
                var role = new JCLRole {
                    RoleID = int.Parse(row.ID), RuleID = id
                };

                rule.JCLRoles.Add(role);
            }

            context.SubmitChanges();

            //bool reqApproval = bool.Parse( ConfigurationManager.AppSettings["RequireAccessApproval"]);
            var reqApproval = Settings.GetValueAsBool("R1SM", "RequireAccessApproval");

            var engine = new RoleAssignmentEngine(context);
            var count  = engine.FlagPeopleWithRule(rule.ID, reqApproval);

            //context.Syslog(RSMDataModelDataContext.LogSources.USER,
            //               RSMDataModelDataContext.LogSeverity.INFO,
            //               string.Format("{0} {1} rule for {2}, {3}, {4}",
            //                             User.Identity.Name,
            //                             action,
            //                             rule.Job.DisplayName,
            //                             rule.Departments.DisplayName,
            //                             rule.Locations.LocationName),
            //               string.Format("The {0} associates affected by last rule edit will be processed by the rule engine next pass.", count));

            var logger = new Logger();

            logger.LogUserActivity(Severity.Informational,
                                   string.Format("{0} {1} rule for {2}, {3}, {4}",
                                                 User.Identity.Name,
                                                 action,
                                                 rule.Job.DisplayName,
                                                 rule.Departments.DisplayName,
                                                 rule.Locations.LocationName),
                                   string.Format("The {0} associates affected by last rule edit will be processed by the rule engine next pass.", count));

            return(rule.ID);
        }