public static void ReassignAllTasksForUserChangingRoleFromAdmin(ApplicationDbContext db, Guid appUserId) { List <UserTaskAssignment> list = (from uta in db.UserTaskAssignments where uta.AppUserId == appUserId select uta).ToList(); List <Guid> taskGuidsFromList = (from l in list select l.UserTaskId).Distinct().ToList(); //Find current admins for the company List <AppUser> admins = AppUserHelpers.GetAdminAppUsersForCompany(db, BranchHelpers.GetBranch(db, AppUserHelpers.GetAppUser(db, appUserId).CurrentBranchId).CompanyId); //now match up admins to tasks and if any are missing add them foreach (Guid task in taskGuidsFromList) { foreach (AppUser admin in admins) { List <Guid> assignedToTask = (from l in list where l.UserTaskId == task select l.AppUserId).ToList(); Guid result = assignedToTask.Find(x => x == admin.AppUserId); if (result == Guid.Empty) { CopyTaskFromUserAToUserB(db, task, appUserId, admin.AppUserId); } } } }
public static List <UserActionAssignment> CreateActionAssignmentForGroupMembers(ApplicationDbContext db, Guid userActionId, Group group) { List <UserActionAssignment> list = new List <UserActionAssignment>(); //get list of members that are accepted within this group only List <GroupMember> groupMembers = (from gm in db.GroupMembers where gm.Status == GroupMemberStatusEnum.Accepted select gm).ToList(); //depdending on type of group will depend on the users we need to find, i.e. branch group = members are branches, therefore only find SuperAdmin, Admin or Manager for that branch to send this to foreach (GroupMember member in groupMembers) { switch (group.Type) { case LevelEnum.Company: List <AppUser> adminUsers = AppUserHelpers.GetAdminAppUsersForCompany(db, member.ReferenceId); foreach (AppUser adminUser in adminUsers) { UserActionAssignment adminUserAssignment = CreateActionAssignment(db, userActionId, adminUser.AppUserId); list.Add(adminUserAssignment); } break; case LevelEnum.Branch: List <AppUser> branchUsers = AppUserHelpers.GetManagerAppUsersForBranch(db, member.ReferenceId); foreach (AppUser branchUser in branchUsers) { UserActionAssignment branchUserAssignment = CreateActionAssignment(db, userActionId, branchUser.AppUserId); list.Add(branchUserAssignment); } //Note, Admin users can also approve these requests so list them in the assignment list also List <AppUser> adminUsersForBranchApproval = AppUserHelpers.GetAdminAppUsersForCompany(db, BranchHelpers.GetBranch(member.ReferenceId).CompanyId); foreach (AppUser adminUser in adminUsersForBranchApproval) { //Don't duplicate user entries if (GetActionAssignmentForActionAndUser(db, userActionId, adminUser.AppUserId) == null) { UserActionAssignment adminUserAssignment = CreateActionAssignment(db, userActionId, adminUser.AppUserId); list.Add(adminUserAssignment); } } break; case LevelEnum.User: UserActionAssignment assignment = CreateActionAssignment(db, userActionId, member.ReferenceId); list.Add(assignment); break; } } return(list); }
/// <summary> /// Adds all Admin users for the company of the new branch to the new branch /// </summary> /// <param name="db"></param> /// <param name="branchId">new branch id</param> public static void CreateBranchAdminUsersForNewBranch(ApplicationDbContext db, Branch branch, UserRoleEnum role) { List <AppUser> adminAppUsersForCompany = AppUserHelpers.GetAdminAppUsersForCompany(db, branch.CompanyId); foreach (AppUser adminUser in adminAppUsersForCompany) { BranchUser branchUser = BranchUserHelpers.GetBranchUser(db, adminUser.AppUserId, branch.BranchId, branch.CompanyId); //Only add if not already there if (branchUser == null) { BranchUserHelpers.CreateBranchUser(db, adminUser.AppUserId, branch.BranchId, branch.CompanyId, role, EntityStatusEnum.Active); } } }
/// <summary> /// Build the list of assignments for this Action. At user level there is the one, at Branch level there is the 'Manager' of the branch and the 'Admin' of the company, and at /// Admin level there is the 'Admin' of the company. There could be multiple for Branch and Admin levels /// </summary> /// <param name="db"></param> /// <param name="level">level of request, User, Branch, Company</param> /// <param name="ofReferenceId">id based on level, so AppUserId, BranchId, CompanyId</param> /// <param name="byReferenceId">id based on level, so AppUserId, BranchId, CompanyId</param> /// <returns></returns> public static List <UserActionAssignment> CreateUserAssignmentForAction(ApplicationDbContext db, Guid userActionId, LevelEnum level, Guid ofReferenceId, Guid byReferenceId) { List <UserActionAssignment> list = new List <UserActionAssignment>(); switch (level) { case LevelEnum.Company: List <AppUser> adminUsers = AppUserHelpers.GetAdminAppUsersForCompany(db, ofReferenceId); foreach (AppUser adminUser in adminUsers) { UserActionAssignment adminUserAssignment = CreateActionAssignment(db, userActionId, adminUser.AppUserId); list.Add(adminUserAssignment); } break; case LevelEnum.Branch: List <AppUser> branchUsers = AppUserHelpers.GetManagerAppUsersForBranch(db, ofReferenceId); foreach (AppUser branchUser in branchUsers) { UserActionAssignment branchUserAssignment = CreateActionAssignment(db, userActionId, branchUser.AppUserId); list.Add(branchUserAssignment); } //Note, Admin users can also approve these requests so list them in the assignment list also List <AppUser> adminUsersForBranchApproval = AppUserHelpers.GetAdminAppUsersForCompany(db, BranchHelpers.GetBranch(ofReferenceId).CompanyId); foreach (AppUser adminUser in adminUsersForBranchApproval) { //Don't duplicate user entries if (GetActionAssignmentForActionAndUser(db, userActionId, adminUser.AppUserId) == null) { UserActionAssignment adminUserAssignment = CreateActionAssignment(db, userActionId, adminUser.AppUserId); list.Add(adminUserAssignment); } } break; case LevelEnum.User: UserActionAssignment assignment = CreateActionAssignment(db, userActionId, ofReferenceId); list.Add(assignment); break; } return(list); }