Hi Developers,
I'm relatively new to LLBLGen Pro although I happen to know how powerful it is.
Here's my question:
I'm having 4 tables all 'related' by foreign keys:
[b]UserRole[/b]
PK UserID
PK, FK RoleID
[b]Role[/b]
PK RoleID
Description
[b]RolePermission[/b]
PK, FK RoleID
PK, FK PermissionID
[b]Permission[/b]
PK PermissionID
Description
(sorry..not sure how to upload an image.. image contains the relations diagram).
I need to pull out all the permissions for a particular UserID.
I AM able to get all the permissions for a given UserID, but I think I can do it in a better way. I guess I can do this by adding some relations and stuff like that.
Here's the code I'm currently using.
private void GetPermissions(string strObjectGUID)
{
IPredicateExpression urCollectionFilter = new PredicateExpression();
urCollectionFilter.Add(UserRoleFields.UserId==strObjectGUID);
UserRoleCollection urCollection = new UserRoleCollection();
urCollection.GetMulti(urCollectionFilter);
IPredicateExpression rCollectionFilter = new PredicateExpression();
for(int i=0; i<urCollection.Count; i++ )
{
UserRoleEntity urEntity = urCollection[i];
rCollectionFilter.AddWithOr(RoleFields.RoleId == urEntity.RoleId );
}
RoleCollection rCollection = new RoleCollection();
rCollection.GetMulti(rCollectionFilter);
IPredicateExpression rpCollectionFilter = new PredicateExpression();
for(int i=0; i<rCollection.Count; i++)
{
RoleEntity rEntity = rCollection[i];
rpCollectionFilter.AddWithOr(RolePermissionFields.RoleId == rEntity.RoleId);
}
RolePermissionCollection rpCollection = new RolePermissionCollection();
rpCollection.GetMulti(rpCollectionFilter);
IPredicateExpression pFilter = new PredicateExpression();
for(int i=0; i<rpCollection.Count; i++)
{
RolePermissionEntity rpEntity = rpCollection[i];
pFilter.AddWithOr(PermissionFields.PermissionId == rpEntity.PermissionId);
}
PermissionCollection pCollection = new PermissionCollection();
pCollection.GetMulti(pFilter);
StringBuilder sb = new StringBuilder();
sb.Append("<b>User has following permissions:</b><p/>");
for(int i=0; i<pCollection.Count; i++)
{
PermissionEntity pEntity = pCollection[i];
sb.Append(pEntity.Description);
sb.Append("<br>");
}
lblPermissions.Text = sb.ToString();
}
Please help me refine my code and learn to utilize LLBLGen Pro's abilities to the fullest.
I did make basic search in the forum before posting, but was not able to find things similar to my problem.
Thanks in advance for any help.
Arun