Exemple #1
0
        /// <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();
        }
Exemple #4
0
        /// <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
            });
        }