public List <OrgRole> ListRolesForOrganization(string accessToken, int organizationID) { var query = new ListRolesForOrganization_Q { OrganizationID = organizationID }; var result = _queryDispatcher.Dispatch <ListRolesForOrganization_Q, List <OrgRole> >(accessToken, query); return(result); }
public List <OrgRole> Handle(string accessTokenID, ListRolesForOrganization_Q query) { Dictionary <int, OrgRole> xRoles = new Dictionary <int, OrgRole>(); Dictionary <int, HashSet <PayGrade> > xRolesPayGrades = new Dictionary <int, HashSet <PayGrade> >(); using (var connection = _connFactory.GetConnection()) { connection.Open(); var sql = @" select r.ID ,r.OrganizationID ,r.RoleName ,r.RoleDisplayName ,r.RoleType ,r.RoleOrderBy ,r.IsActive ,r.IsHidden ,g.ID ,g.PayGradeName ,g.PayGradeDisplayName ,g.PayGradeOrderBy ,g.PayGradeGroup ,g.IsActive from Organizations.Roles r join Organizations.PayGradeOrgRoleMap m on m.OrgRoleID = r.ID join People.PayGrades g on g.ID = m.PayGradeID where r.OrganizationID = @OrganizationID "; var res = connection.Query <OrgRole, PayGrade, OrgRole>(sql, (role, paygrade) => { if (!xRoles.ContainsKey(role.ID)) { xRoles[role.ID] = role; } if (paygrade != null) { if (!xRolesPayGrades.ContainsKey(role.ID)) { xRolesPayGrades[role.ID] = new HashSet <PayGrade>(); } xRolesPayGrades[role.ID].Add(new PayGrade { ID = paygrade.ID, PayGradeName = paygrade.PayGradeName, PayGradeDisplayName = paygrade.PayGradeDisplayName, PayGradeOrderBy = paygrade.PayGradeOrderBy, PayGradeGroup = paygrade.PayGradeGroup, IsActive = paygrade.IsActive }); } return(role); }, new { OrganizationID = query.OrganizationID }).ToList(); foreach (var r in xRoles.Values) { HashSet <PayGrade> payGrades = null; xRolesPayGrades.TryGetValue(r.ID, out payGrades); if (payGrades != null) { r.SupportedPayGrades = payGrades.ToList(); } } return(xRoles.Values.ToList()); } }