/// <summary> /// Gets the selection. /// </summary> /// <param name="controls">The controls.</param> /// <returns></returns> public override string GetSelection(System.Web.UI.Control[] controls) { var cblNoteTypes = controls.GetByName <RockListBox>(_CtlNoteTypes); var slidingDateRangePicker = controls.GetByName <SlidingDateRangePicker>(_CtlSlidingDateRangePicker); var settings = new CreatedNotesCountSelectSettings(); settings.NoteTypeIds.AddRange(cblNoteTypes.SelectedValuesAsInt); settings.DelimitedValues = slidingDateRangePicker.DelimitedValues; return(settings.ToSelectionString()); }
/// <summary> /// Sets the selection. /// </summary> /// <param name="controls">The controls.</param> /// <param name="selection">The selection.</param> public override void SetSelection(System.Web.UI.Control[] controls, string selection) { var cblNoteTypes = controls.GetByName <RockListBox>(_CtlNoteTypes); var slidingDateRangePicker = controls.GetByName <SlidingDateRangePicker>(_CtlSlidingDateRangePicker); var settings = new CreatedNotesCountSelectSettings(selection); if (!settings.IsValid) { return; } cblNoteTypes.SetValues(settings.NoteTypeIds); slidingDateRangePicker.DelimitedValues = settings.DelimitedValues.ToStringSafe(); }
/// <summary> /// Gets the expression. /// </summary> /// <param name="context">The context.</param> /// <param name="entityIdProperty">The entity identifier property.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(RockContext context, MemberExpression entityIdProperty, string selection) { var settings = new CreatedNotesCountSelectSettings(selection); if (settings != null) { var noteQry = new NoteService(context).Queryable().Where(x => x.CreatedByPersonAliasId.HasValue); if (settings.NoteTypeIds != null && settings.NoteTypeIds.Any()) { noteQry = noteQry.Where(xx => settings.NoteTypeIds.Contains(xx.NoteTypeId)); } if (settings.DelimitedValues.IsNotNullOrWhiteSpace()) { var dateRange = SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues(settings.DelimitedValues); if (dateRange.Start.HasValue) { noteQry = noteQry.Where(i => i.CreatedDateTime >= dateRange.Start.Value); } if (dateRange.End.HasValue) { noteQry = noteQry.Where(i => i.CreatedDateTime <= dateRange.End.Value); } } var qry = new PersonService(context).Queryable() .Select(p => noteQry.Where(l => l.CreatedByPersonAlias.PersonId == p.Id).Count()); var selectExpression = SelectExpressionExtractor.Extract(qry, entityIdProperty, "p"); return(selectExpression); } return(null); }