public BlockActionResult SaveSpecificAssignmentSchedule(Guid?groupGuid, Guid scheduleGuid, Guid?locationGuid) { using (var rockContext = new RockContext()) { // Get the group. var group = new GroupService(rockContext).GetNoTracking(groupGuid.Value); // Get the specific group member assignment. GroupMemberAssignmentService groupMemberAssignmentService = new GroupMemberAssignmentService(rockContext); var groupMember = GetGroupMemberRecord(rockContext, group.Id, this.CurrentPersonId); var schedule = new ScheduleService(rockContext).GetNoTracking(scheduleGuid); int?locationId = null; if (locationGuid != null) { var location = new LocationService(rockContext).GetNoTracking(locationGuid.Value); if (location != null) { locationId = location.Id; } } var groupMemberAssignment = groupMemberAssignmentService.GetByGroupMemberScheduleAndLocation(groupMember, schedule.Id, locationId); if (groupMemberAssignment == null) { groupMemberAssignment = new GroupMemberAssignment(); } // In case there is already a group member assignment. else { return(ActionBadRequest("You are already assigned to this schedule.")); } groupMemberAssignment.GroupMemberId = groupMember.Id; groupMemberAssignment.ScheduleId = schedule.Id; groupMemberAssignment.LocationId = locationId; groupMemberAssignmentService.Add(groupMemberAssignment); // Add the group member to the service. rockContext.SaveChanges(); return(ActionOk()); } }
public BlockActionResult DeleteSpecificAssignmentSchedule(Guid groupGuid, Guid scheduleGuid, Guid?locationGuid) { using (var rockContext = new RockContext()) { var groupMemberAssignmentService = new GroupMemberAssignmentService(rockContext); var group = new GroupService(rockContext).GetNoTracking(groupGuid); var groupMember = GetGroupMemberRecord(rockContext, group.Id, CurrentPersonId); var schedule = new ScheduleService(rockContext).GetNoTracking(scheduleGuid); int?locationId = null; if (locationGuid != null) { var location = new LocationService(rockContext).GetNoTracking(locationGuid.Value); if (location != null) { locationId = location.Id; } } var groupMemberAssignment = groupMemberAssignmentService.GetByGroupMemberScheduleAndLocation(groupMember, schedule.Id, locationId); if (groupMemberAssignment == null) { return(ActionNotFound()); } if (groupMemberAssignmentService.CanDelete(groupMemberAssignment, out var errorMessage)) { groupMemberAssignmentService.Delete(groupMemberAssignment); rockContext.SaveChanges(); return(ActionOk()); } return(ActionBadRequest()); } }