private async Task<bool> HasTaskEditPermissions(PrepOpsTask task) { ApplicationUser currentUser = await _userManager.GetCurrentUser(Context); IList<Claim> claims = await _userManager.GetClaimsForCurrentUser(Context); if (claims.IsUserType(UserType.SiteAdmin)) { return true; } if (claims.IsUserType(UserType.TenantAdmin)) { //TODO: Modify to check that user is tenant admin for tenant of task return true; } if (task.Activity != null && task.Activity.Organizer != null && task.Activity.Organizer.Id == currentUser.Id) { return true; } if (task.Activity != null && task.Activity.Campaign != null && task.Activity.Campaign.Organizer != null && task.Activity.Campaign.Organizer.Id == currentUser.Id) { return true; } return false; }
Task IPrepOpsDataAccess.AddTask(PrepOpsTask task) { if (task.Id == 0) { _dbContext.Add(task); return(_dbContext.SaveChangesAsync()); } else { throw new InvalidOperationException("Added task that already has Id"); } }
public TaskViewModel(PrepOpsTask task) { Id = task.Id; Name = task.Name; Description = task.Description; if (task.StartDateTimeUtc.HasValue) { DateTime startDateWithUtcKind = DateTime.SpecifyKind( DateTime.Parse(task.StartDateTimeUtc.Value.ToString()), DateTimeKind.Utc); StartDateTime = new DateTimeOffset(startDateWithUtcKind); } if (task.EndDateTimeUtc.HasValue) { DateTime endDateWithUtcKind = DateTime.SpecifyKind( DateTime.Parse(task.EndDateTimeUtc.Value.ToString()), DateTimeKind.Utc); EndDateTime = new DateTimeOffset(endDateWithUtcKind); } if (task.Activity != null) { ActivityId = task.Activity.Id; ActivityName = task.Activity.Name; } if (task.Activity != null && task.Activity.Campaign != null) { CampaignId = task.Activity.Campaign.Id; CampaignName = task.Activity.Campaign.Name; } if (task.Tenant != null) { TenantId = task.Tenant.Id; TenantName = task.Tenant.Name; } IsUserSignedUpForTask = false; if (task.AssignedVolunteers != null) { this.AssignedVolunteers = new List<TaskSignupViewModel>(); foreach (var t in task.AssignedVolunteers) { this.AssignedVolunteers.Add(new TaskSignupViewModel(t)); } } }
private async Task<bool> HasTaskSignupEditPermissions(PrepOpsTask task) { if (await HasTaskEditPermissions(task)) { return true; } else { ApplicationUser currentUser = await _userManager.GetCurrentUser(Context); if (task.AssignedVolunteers != null && task.AssignedVolunteers.FirstOrDefault(x => x.User.Id == currentUser.Id) != null) { return true; } else { return false; } } }
public TaskViewModel(PrepOpsTask task, bool isUserSignedupForTask) : this(task) { IsUserSignedUpForTask = isUserSignedupForTask; }
public static PrepOpsTask ToModel(this TaskViewModel task, IPrepOpsDataAccess dataAccess) { var activity = dataAccess.GetActivity(task.ActivityId); if (activity == null) return null; bool newTask = true; PrepOpsTask dbtask; if (task.Id == 0) { dbtask = new PrepOpsTask(); } else { dbtask = dataAccess.GetTask(task.Id); newTask = false; } // dbtask.Id = task.Id; dbtask.Description = task.Description; dbtask.Activity = activity; dbtask.EndDateTimeUtc = task.EndDateTime.HasValue ? task.EndDateTime.Value.UtcDateTime : new Nullable<DateTime>(); dbtask.StartDateTimeUtc = task.EndDateTime.HasValue ? task.StartDateTime.Value.UtcDateTime : new Nullable<DateTime>(); dbtask.Name = task.Name; // Workaround: POST is bringing in empty AssignedVolunteers. Clean this up. Discussing w/ Kiran Challa. // Workaround: the if statement is superflous, and should go away once we have the proper fix referenced above. if (task.AssignedVolunteers != null) { var bogusAssignedVolunteers = (from assignedVolunteer in task.AssignedVolunteers where string.IsNullOrEmpty(assignedVolunteer.UserId) select assignedVolunteer).ToList(); foreach (var bogus in bogusAssignedVolunteers) { task.AssignedVolunteers.Remove(bogus); } } // end workaround if (task.AssignedVolunteers != null && task.AssignedVolunteers.Count > 0) { var taskUsersList = task.AssignedVolunteers.Select(tvm => new TaskUsers { Task = dbtask, User = dataAccess.GetUser(tvm.UserId) }).ToList(); // We may be updating an existing task if (newTask || dbtask.AssignedVolunteers.Count == 0) { dbtask.AssignedVolunteers = taskUsersList; } else { // Can probably rewrite this more efficiently. foreach (TaskUsers taskUsers in taskUsersList) { if (!(from entry in dbtask.AssignedVolunteers where entry.User.Id == taskUsers.User.Id select entry).Any()) { dbtask.AssignedVolunteers.Add(taskUsers); } } } } return dbtask; }
Task IPrepOpsDataAccess.UpdateTask(PrepOpsTask value) { _dbContext.Tasks.Update(value); return _dbContext.SaveChangesAsync(); }
Task IPrepOpsDataAccess.AddTask(PrepOpsTask task) { if (task.Id == 0) { _dbContext.Add(task); return _dbContext.SaveChangesAsync(); } else throw new InvalidOperationException("Added task that already has Id"); }
Task IPrepOpsDataAccess.UpdateTask(PrepOpsTask value) { _dbContext.Tasks.Update(value); return(_dbContext.SaveChangesAsync()); }