/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { RockContext rockContext = new RockContext(); var groupMemberScheduleTemplateService = new GroupMemberScheduleTemplateService(rockContext); GroupMemberScheduleTemplate groupMemberScheduleTemplate; int groupMemberScheduleTemplateId = hfGroupMemberScheduleTemplateId.Value.AsInteger(); if (groupMemberScheduleTemplateId == 0) { groupMemberScheduleTemplate = new GroupMemberScheduleTemplate(); groupMemberScheduleTemplateService.Add(groupMemberScheduleTemplate); } else { groupMemberScheduleTemplate = groupMemberScheduleTemplateService.Get(groupMemberScheduleTemplateId); } groupMemberScheduleTemplate.Name = tbName.Text; if (groupMemberScheduleTemplate.Schedule == null) { groupMemberScheduleTemplate.Schedule = new Schedule(); } groupMemberScheduleTemplate.Schedule.iCalendarContent = sbSchedule.iCalendarContent; rockContext.SaveChanges(); NavigateToParentPage(); }
public BlockActionResult SaveGroupMemberSchedule(Guid groupGuid, int?reminderOffset, Guid scheduleTemplateGuid, DateTimeOffset?startDate) { // Save the preference. For now this acts as a note to the scheduler and does not effect the list of assignments presented to the user. using (var rockContext = new RockContext()) { var groupId = new GroupService(rockContext).Get(groupGuid).Id; var groupMemberService = new GroupMemberService(rockContext); var groupMember = this.GetGroupMemberRecord(rockContext, groupId, this.CurrentPersonId); if (groupMember == null) { return(ActionNotFound()); } if (scheduleTemplateGuid != Guid.Empty) { var scheduleTemplate = new GroupMemberScheduleTemplateService(rockContext).GetNoTracking(scheduleTemplateGuid); groupMember.ScheduleTemplateId = scheduleTemplate.Id; rockContext.SaveChanges(); } groupMember.ScheduleStartDate = startDate.HasValue ? startDate.Value.DateTime : RockDateTime.Now.Date; groupMember.ScheduleReminderEmailOffsetDays = reminderOffset ?? 0; rockContext.SaveChanges(); } return(ActionOk()); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { RockContext rockContext = new RockContext(); var service = new GroupMemberScheduleTemplateService(rockContext); var qry = service.Queryable().OrderBy(a => a.Name); gList.SetLinqDataSource(qry); gList.DataBind(); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="groupMemberScheduleTemplateId">The group member schedule template identifier.</param> public void ShowDetail(int groupMemberScheduleTemplateId) { pnlDetails.Visible = true; // Load depending on Add(0) or Edit GroupMemberScheduleTemplate groupMemberScheduleTemplate = null; if (!groupMemberScheduleTemplateId.Equals(0)) { groupMemberScheduleTemplate = new GroupMemberScheduleTemplateService(new RockContext()).Get(groupMemberScheduleTemplateId); lActionTitle.Text = ActionTitle.Edit(GroupMemberScheduleTemplate.FriendlyTypeName).FormatAsHtmlTitle(); pdAuditDetails.SetEntity(groupMemberScheduleTemplate, ResolveRockUrl("~")); } if (groupMemberScheduleTemplate == null) { groupMemberScheduleTemplate = new GroupMemberScheduleTemplate { Id = 0 }; lActionTitle.Text = ActionTitle.Add(GroupMemberScheduleTemplate.FriendlyTypeName).FormatAsHtmlTitle(); // hide the panel drawer that show created and last modified dates pdAuditDetails.Visible = false; } hfGroupMemberScheduleTemplateId.Value = groupMemberScheduleTemplate.Id.ToString(); tbName.Text = groupMemberScheduleTemplate.Name; if (groupMemberScheduleTemplate.Schedule != null) { sbSchedule.iCalendarContent = groupMemberScheduleTemplate.Schedule.iCalendarContent; } else { sbSchedule.iCalendarContent = string.Empty; } // render UI based on Authorized and IsSystem bool readOnly = false; nbEditModeMessage.Text = string.Empty; if (!IsUserAuthorized(Authorization.EDIT)) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(GroupMemberScheduleTemplate.FriendlyTypeName); } if (readOnly) { lActionTitle.Text = ActionTitle.View(GroupMemberScheduleTemplate.FriendlyTypeName); btnCancel.Text = "Close"; } tbName.ReadOnly = readOnly; btnSave.Visible = !readOnly; }
/// <summary> /// Handles the DeleteClick event of the gList control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Rock.Web.UI.Controls.RowEventArgs"/> instance containing the event data.</param> protected void gList_DeleteClick(object sender, Rock.Web.UI.Controls.RowEventArgs e) { var rockContext = new RockContext(); GroupMemberScheduleTemplateService groupMemberScheduleTemplateService = new GroupMemberScheduleTemplateService(rockContext); GroupMemberScheduleTemplate groupMemberScheduleTemplate = groupMemberScheduleTemplateService.Get(e.RowKeyId); if (groupMemberScheduleTemplate != null) { string errorMessage; if (!groupMemberScheduleTemplateService.CanDelete(groupMemberScheduleTemplate, out errorMessage)) { mdGridWarning.Show(errorMessage, ModalAlertType.Information); return; } groupMemberScheduleTemplateService.Delete(groupMemberScheduleTemplate); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Gets the preference page content and view model. /// </summary> /// <param name="groupGuid"></param> /// <returns>A <see cref="PreferencePageContentBag"/> to be used when the preference page is displayed.</returns> private PreferencePageContentBag GetPreferenceTemplateContent(Guid groupGuid) { var rockContext = new RockContext(); var groupService = new GroupService(rockContext); // Get the group from the corresponding Guid. var group = groupService.Get(groupGuid); // Get the corresponding group member record. var groupMember = GetGroupMemberRecord(rockContext, group.Id, CurrentPersonId); // Get the reminder days offset. var selectedOffset = groupMember.ScheduleReminderEmailOffsetDays == null ? 0 : groupMember.ScheduleReminderEmailOffsetDays.Value; // Templates for all and this group type. var groupMemberScheduleTemplateService = new GroupMemberScheduleTemplateService(rockContext); var groupMemberScheduleTemplates = groupMemberScheduleTemplateService .Queryable() .AsNoTracking() .Where(x => x.GroupTypeId == null || x.GroupTypeId == group.GroupTypeId) .Select(x => new { Value = ( Guid? )x.Guid, Text = x.Name }) .ToList(); var scheduleListItems = new List <ListItemViewModel>(); foreach (var scheduleKey in groupMemberScheduleTemplates) { scheduleListItems.Add(new ListItemViewModel { Value = scheduleKey.Value.ToStringSafe(), Text = scheduleKey.Text }); } var selectedScheduleTemplate = groupMember.ScheduleTemplate != null ? groupMember.ScheduleTemplate.Guid : Guid.Empty; // The dictionary of merge fields. var mergeFields = RequestContext.GetCommonMergeFields(); mergeFields.AddOrReplace("Group", group); var assignmentScheduleList = GetAssignmentScheduleList(group.Id); DateTimeOffset?selectedStartDate = null; if (groupMember.ScheduleStartDate != null) { selectedStartDate = groupMember.ScheduleStartDate.Value.ToRockDateTimeOffset(); } // Return all of the necessary information to display on the preference page. return(new PreferencePageContentBag { SelectedOffset = selectedOffset, ListItems = scheduleListItems, SelectedSchedule = selectedScheduleTemplate, SelectedStartDate = selectedStartDate, AssignmentScheduleAndLocations = assignmentScheduleList }); }