public bool For(ClaimsPrincipal user, AllReadyTask task, UserManager<ApplicationUser> userManager) { var userId = userManager.GetUserId(user); if (user.IsUserType(UserType.SiteAdmin)) { return true; } if (user.IsUserType(UserType.OrgAdmin)) { //TODO: Modify to check that user is organization admin for organization of task return true; } if (task.Event?.Organizer != null && task.Event.Organizer.Id == userId) { return true; } if (task.Event?.Campaign?.Organizer != null && task.Event.Campaign.Organizer.Id == userId) { return true; } return false; }
public static EventViewModel WithUserInfo(this EventViewModel viewModel, Models.Event campaignEvent, ClaimsPrincipal user, IAllReadyDataAccess dataAccess, UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signedInManager) { if (signedInManager.IsSignedIn(user)) { var userId = userManager.GetUserId(user); var appUser = dataAccess.GetUser(userId); viewModel.UserId = userId; viewModel.UserSkills = appUser?.AssociatedSkills?.Select(us => new SkillViewModel(us.Skill)).ToList(); viewModel.IsUserVolunteeredForEvent = dataAccess.GetEventSignups(viewModel.Id, userId).Any(); var assignedTasks = campaignEvent.Tasks.Where(t => t.AssignedVolunteers.Any(au => au.User.Id == userId)).ToList(); viewModel.UserTasks = new List<TaskViewModel>(assignedTasks.Select(data => new TaskViewModel(data, userId)).OrderBy(task => task.StartDateTime)); var unassignedTasks = campaignEvent.Tasks.Where(t => t.AssignedVolunteers.All(au => au.User.Id != userId)).ToList(); viewModel.Tasks = new List<TaskViewModel>(unassignedTasks.Select(data => new TaskViewModel(data, userId)).OrderBy(task => task.StartDateTime)); viewModel.SignupModel = new EventSignupViewModel() { EventId = viewModel.Id, UserId = userId, Name = appUser.Name, PreferredEmail = appUser.Email, PreferredPhoneNumber = appUser.PhoneNumber }; } else { viewModel.UserTasks = new List<TaskViewModel>(); } return viewModel; }