/// <summary> /// Initializes a new instance of the <see cref="DateTimePivotCollection<TCollection, T, TCategoryCollection, TCategory, TSubSummary>"/> class. /// </summary> /// <param name="categoryCollection">The category collection.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="func_GetEntityCollectionOfOneCategory">The func_ get entity collection of one category.</param> /// <param name="dateTimePivotSetting">The date time pivot setting.</param> /// <param name="func_GetEntityCollectionOfOneCriteria">The func_ get entity collection of one criteria.</param> /// <param name="func_CalculateSubSummary">The func_ calculate sub summary.</param> public DateTimePivotCollection( TCategoryCollection categoryCollection , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Func <TCategory, TCollection, TCollection> func_GetEntityCollectionOfOneCategory , Framework.EntityContracts.DateTimePivotEntities.DateTimePivotSetting dateTimePivotSetting , Func <Framework.EntityContracts.QuerySystemDateTimeRangeCriteria, TCollection, TCollection> func_GetEntityCollectionOfOneCriteria , Func <TCollection, TSubSummary> func_CalculateSubSummary ) { Framework.EntityContracts.QuerySystemDateTimeRangeCriteria[] _ConsecutiveDistributionCriteria = dateTimePivotSetting.CalculateConsecutiveDistributionCriteria(criteria); // some problems here. foreach (TCategory _Category in categoryCollection) { this.Add(_Category, func_GetEntityCollectionOfOneCategory(_Category, entityCollection), criteria, dateTimePivotSetting.DateTimeUnitOfInterval, dateTimePivotSetting.Interval); } foreach (var _OneItem in this) { List <TCollection> _Distributed = new List <TCollection>(); foreach (var _OneCriteria in _ConsecutiveDistributionCriteria) { _Distributed.Add(_OneItem.GetEntityCollectionOfOneCriteria(_OneCriteria, func_GetEntityCollectionOfOneCriteria)); } _OneItem.DistributedEntityCollection = _Distributed.ToArray(); _OneItem.SubSummary = _OneItem.CalculateSubSummary(func_CalculateSubSummary); } }
/// <summary> /// Gets the entity collection of one criteria. /// </summary> /// <param name="oneCriteria">The one criteria.</param> /// <param name="func_GetEntityCollectionOfOneCriteria">The func_ get entity collection of one criteria.</param> /// <returns>entity Collection meets criteria</returns> public virtual TCollection GetEntityCollectionOfOneCriteria( Framework.EntityContracts.QuerySystemDateTimeRangeCriteria oneCriteria , Func <Framework.EntityContracts.QuerySystemDateTimeRangeCriteria, TCollection, TCollection> func_GetEntityCollectionOfOneCriteria) { this.Func_GetEntityCollectionOfOneCriteria = func_GetEntityCollectionOfOneCriteria; return(this.GetEntityCollectionOfOneCriteria(oneCriteria)); }
/// <summary> /// Initializes a new instance of the <see cref="DateTimePivot<TCollection, T, TCategory, TSubSummary>"/> class. /// </summary> /// <param name="category">The category.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="dateTimePivotSetting">The date time pivot setting.</param> public DateTimePivot( TCategory category , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Framework.EntityContracts.DateTimePivotEntities.DateTimePivotSetting dateTimePivotSetting) : this(category, entityCollection, dateTimePivotSetting.CalculateConsecutiveDistributionCriteria(criteria)) { }
/// <summary> /// Adds the specified category. /// </summary> /// <param name="category">The category.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="criteria">The criteria.</param> protected void Add( TCategory category , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Framework.EntityContracts.Queries.DateTimeUnit dateTimeUnitOfInterval , int interval ) { if (category != null && criteria != null) { Framework.EntityContracts.DateTimePivotEntities.DateTimePivot <TCollection, T, TCategory, TSubSummary> _One = new Framework.EntityContracts.DateTimePivotEntities.DateTimePivot <TCollection, T, TCategory, TSubSummary>(category, entityCollection, (new DateTimePivotSetting(dateTimeUnitOfInterval, interval)).CalculateConsecutiveDistributionCriteria(criteria)); this.Add(_One); } }
/// <summary> /// Initializes a new instance of the <see cref="DateTimePivotContextByAlphabeticalOrderCategoryBase<TCollection, T, TSubSummary, TSummary>"/> class. /// </summary> /// <param name="categoryCollection">The category collection.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="criteria">The criteria.</param> /// <param name="func_GetEntityCollectionOfOneCategory">The func_ get entity collection of one category.</param> /// <param name="func_CalculateSummary">The func_ calculate summary.</param> /// <param name="func_GetEntityCollectionOfOneCriteria">The func_ get entity collection of one criteria.</param> /// <param name="func_CalculateSubSummary">The func_ calculate sub summary.</param> public DateTimePivotContextByAlphabeticalOrderCategoryBase( Framework.EntityContracts.AlphabeticalOrderCategoryCollection categoryCollection , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Func <Framework.EntityContracts.AlphabeticalOrderCategory, TCollection, TCollection> func_GetEntityCollectionOfOneCategory , Func <TCollection, TSummary> func_CalculateSummary , Func <Framework.EntityContracts.QuerySystemDateTimeRangeCriteria, TCollection, TCollection> func_GetEntityCollectionOfOneCriteria , Func <TCollection, TSubSummary> func_CalculateSubSummary ) : base( categoryCollection , entityCollection , criteria , func_GetEntityCollectionOfOneCategory , func_CalculateSummary , func_GetEntityCollectionOfOneCriteria , func_CalculateSubSummary) { }
/// <summary> /// Initializes a new instance of the <see cref="DateTimePivotContextByDateTimePivotSettingBase<TCollection, T, TSubSummary, TSummary>"/> class. /// </summary> /// <param name="dateTimePivotSetting">The date time pivot setting.</param> /// <param name="func_GetNameValueCollection">The func_ get name value collection.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="criteria">The criteria.</param> /// <param name="func_GetEntityCollectionOfOneCategory">The func_ get entity collection of one category.</param> /// <param name="func_CalculateSummary">The func_ calculate summary.</param> /// <param name="func_GetEntityCollectionOfOneCriteria">The func_ get entity collection of one criteria.</param> /// <param name="func_CalculateSubSummary">The func_ calculate sub summary.</param> protected DateTimePivotContextByDateTimePivotSettingBase( Framework.EntityContracts.DateTimePivotEntities.DateTimePivotSetting dateTimePivotSetting , Func <Framework.EntityContracts.DateTimePivotEntities.DateTimePivotSetting, Framework.NameValueCollection> func_GetNameValueCollection , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Func <Framework.NameValuePair, TCollection, TCollection> func_GetEntityCollectionOfOneCategory , Func <TCollection, TSummary> func_CalculateSummary , Func <Framework.EntityContracts.QuerySystemDateTimeRangeCriteria, TCollection, TCollection> func_GetEntityCollectionOfOneCriteria , Func <TCollection, TSubSummary> func_CalculateSubSummary ) : base( func_GetNameValueCollection(dateTimePivotSetting) , entityCollection , criteria , func_GetEntityCollectionOfOneCategory , func_CalculateSummary , func_GetEntityCollectionOfOneCriteria , func_CalculateSubSummary) { }
/// <summary> /// Initializes a new instance of the <see cref="DateTimePivotContextBase<TCollection, T, TCategoryCollection, TCategory, TSubSummary, TSummary>"/> class. /// </summary> /// <param name="categoryCollection">The category collection.</param> /// <param name="entityCollection">The entity collection.</param> /// <param name="dateTimePivotSetting">The date time pivot setting.</param> /// <param name="func_GetEntityCollectionOfOneCategory">The func_ get entity collection of one category.</param> /// <param name="func_CalculateSummary">The func_ calculate summary.</param> /// <param name="func_GetEntityCollectionOfOneCriteria">The func_ get entity collection of one criteria.</param> /// <param name="func_CalculateSubSummary">The func_ calculate sub summary.</param> protected DateTimePivotContextBase( TCategoryCollection categoryCollection , TCollection entityCollection , Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria , Func <TCategory, TCollection, TCollection> func_GetEntityCollectionOfOneCategory , Func <TCollection, TSummary> func_CalculateSummary , Func <Framework.EntityContracts.QuerySystemDateTimeRangeCriteria, TCollection, TCollection> func_GetEntityCollectionOfOneCriteria , Func <TCollection, TSubSummary> func_CalculateSubSummary ) { this.CategoryCollection = categoryCollection; this.EntityCollection = entityCollection; this.Criteria = criteria; this.Func_CalculateSubSummary = func_CalculateSubSummary; this.Func_CalculateSummary = func_CalculateSummary; this.Func_GetEntityCollectionOfOneCategory = func_GetEntityCollectionOfOneCategory; this.Func_GetEntityCollectionOfOneCriteria = func_GetEntityCollectionOfOneCriteria; this.Summary = this.Func_CalculateSummary(this.EntityCollection); }
/// <summary> /// Calculates the consecutive distribution criteria. /// </summary> /// <returns></returns> public Framework.EntityContracts.QuerySystemDateTimeRangeCriteria[] CalculateConsecutiveDistributionCriteria(Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteria) { return(criteria.CalculateConsecutiveDistributionCriteria(this.DateTimeUnitOfInterval, this.Interval)); }
/// <summary> /// Gets the entity collection of one criteria. /// </summary> /// <param name="oneCriteria">The one criteria.</param> /// <returns>entity Collection meets criteria</returns> public virtual TCollection GetEntityCollectionOfOneCriteria(Framework.EntityContracts.QuerySystemDateTimeRangeCriteria oneCriteria) { return(this.Func_GetEntityCollectionOfOneCriteria(oneCriteria, this.EntityCollection)); }