public static List<BuilderActor> GetRequestActors(int requestId) { List<BuilderActor> actorList = new List<BuilderActor>(); using (var db = new SNAPDatabaseDataContext()) { var query = from a in db.SNAP_Actors join sw in db.SNAP_Workflows on a.pkId equals sw.actorId join sws in db.SNAP_Workflow_States on sw.pkId equals sws.workflowId where sw.requestId == requestId group sw by new { a.userId, sw.requestId, sw.actorId } into wfGroup select new { ActorId = wfGroup.Key.actorId, UserId = wfGroup.Key.userId, WorkflowId = wfGroup.Max(sw => sw.pkId) }; foreach (var actor in query) { BuilderActor newActor = new BuilderActor(); newActor.ActorId = actor.ActorId; newActor.UserId = actor.UserId; newActor.WorkflowState = (WorkflowState)ApprovalWorkflow.GetWorkflowState(actor.WorkflowId); actorList.Add(newActor); } } return actorList; }
public static List<BuilderGroup> GetBuilderGroups() { List<BuilderGroup> groupList = new List<BuilderGroup>(); using (var db = new SNAPDatabaseDataContext()) { var query = from sa in db.SNAP_Actors join sag in db.SNAP_Actor_Groups on sa.actor_groupId equals sag.pkId where sa.isActive == true && sag.isActive == true && sag.actorGroupType < 2 orderby sag.actorGroupType, sag.groupName ascending select new { ActorId = sa.pkId, UserId = sa.userId, DisplayName = sa.displayName, IsDefault = sa.isDefault, IsLargeGroup = sag.isLargeGroup, GroupId = sag.pkId, GroupName = sag.groupName, Description = sag.description, ActorGroupType = sag.actorGroupType }; foreach (var actor in query) { List<BuilderActor> actorList = new List<BuilderActor>(); BuilderActor newActor = new BuilderActor(); newActor.ActorId = actor.ActorId; newActor.UserId = actor.UserId; newActor.DisplayName = actor.DisplayName; newActor.IsDefault = actor.IsDefault; newActor.ActorGroupType = (ActorGroupType)actor.ActorGroupType; BuilderGroup accessGroup = groupList.Find(delegate(BuilderGroup _grp) { if (_grp.GroupId == actor.GroupId) { // group exists return true; } // group doesn't exist return false; }); if (accessGroup != null) { actorList = accessGroup.AvailableActors; actorList.Add(newActor); accessGroup.AvailableActors = actorList; } else { BuilderGroup newGroup = new BuilderGroup(); actorList.Add(newActor); newGroup.GroupId = actor.GroupId; newGroup.GroupName = actor.GroupName; newGroup.Description = actor.Description; newGroup.ActorGroupType = (ActorGroupType)actor.ActorGroupType; newGroup.IsLargeGroup = (bool)actor.IsLargeGroup; newGroup.AvailableActors = actorList; newGroup.ActorGroupType = (ActorGroupType)actor.ActorGroupType; groupList.Add(newGroup); } } } return groupList; }