44 using System . Net . Http ;
55 using System . Net . Http . Formatting ;
66 using System . Web . Http . Filters ;
7+ using JQDT . ActionFilters ;
78 using JQDT . Application ;
89 using JQDT . Exceptions ;
910 using JQDT . Models ;
1011
1112 /// <summary>
1213 /// Used to decorate the action that returns data table response
1314 /// </summary>
15+ /// <seealso cref="JQDT.ActionFilters.IJQDTActionFilter" />
1416 /// <seealso cref="System.Web.Http.Filters.ActionFilterAttribute" />
15- public class JQDataTableAttribute : ActionFilterAttribute
17+ public class JQDataTableAttribute : ActionFilterAttribute , IJQDTActionFilter
1618 {
1719 /// <summary>
1820 /// Occurs after the action method is invoked.
1921 /// </summary>
2022 /// <param name="actionExecutedContext">The action executed context.</param>
23+ /// <exception cref="JQDataTablesException">Unhandled JQDataTable exception</exception>
2124 public override void OnActionExecuted ( HttpActionExecutedContext actionExecutedContext )
2225 {
2326 try
@@ -42,6 +45,105 @@ public virtual void OnDataProcessed(ref object data, RequestInfoModel requestInf
4245 // No data processing logic by default;
4346 }
4447
48+ /// <summary>
49+ /// Called before all data processors execute.
50+ /// </summary>
51+ /// <param name="data">The data.</param>
52+ /// <param name="requestInfoModel">The request information model.</param>
53+ public void OnDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
54+ {
55+ }
56+
57+ /// <summary>
58+ /// Called before search data processor executes.
59+ /// </summary>
60+ /// <param name="data">The data.</param>
61+ /// <param name="requestInfoModel">The request information model.</param>
62+ public void OnSearchDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
63+ {
64+ }
65+
66+ /// <summary>
67+ /// Called after search data processor executes.
68+ /// </summary>
69+ /// <param name="data">The data.</param>
70+ /// <param name="requestInfoModel">The request information model.</param>
71+ public void OnSearchDataProcessed ( ref object data , RequestInfoModel requestInfoModel )
72+ {
73+ }
74+
75+ /// <summary>
76+ /// Called before custom filters data processor executes.
77+ /// </summary>
78+ /// <param name="data">The data.</param>
79+ /// <param name="requestInfoModel">The request information model.</param>
80+ public void OnCustomFiltersDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
81+ {
82+ }
83+
84+ /// <summary>
85+ /// Called after custom filters data processor executes.
86+ /// </summary>
87+ /// <param name="data">The data.</param>
88+ /// <param name="requestInfoModel">The request information model.</param>
89+ public void OnCustomFiltersDataProcessed ( ref object data , RequestInfoModel requestInfoModel )
90+ {
91+ }
92+
93+ /// <summary>
94+ /// Called before columns filters data processor executes.
95+ /// </summary>
96+ /// <param name="data">The data.</param>
97+ /// <param name="requestInfoModel">The request information model.</param>
98+ public void OnColumnsFilterDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
99+ {
100+ }
101+
102+ /// <summary>
103+ /// Called after columns filters data processor executes.
104+ /// </summary>
105+ /// <param name="data">The data.</param>
106+ /// <param name="requestInfoModel">The request information model.</param>
107+ public void OnColumnsFilterDataProcessed ( ref object data , RequestInfoModel requestInfoModel )
108+ {
109+ }
110+
111+ /// <summary>
112+ /// Called before sort data processor executes.
113+ /// </summary>
114+ /// <param name="data">The data.</param>
115+ /// <param name="requestInfoModel">The request information model.</param>
116+ public void OnSortDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
117+ {
118+ }
119+
120+ /// <summary>
121+ /// Called after sort data processor executes.
122+ /// </summary>
123+ /// <param name="data">The data.</param>
124+ /// <param name="requestInfoModel">The request information model.</param>
125+ public void OnSortDataProcessed ( ref object data , RequestInfoModel requestInfoModel )
126+ {
127+ }
128+
129+ /// <summary>
130+ /// Called before paging data processor executes.
131+ /// </summary>
132+ /// <param name="data">The data.</param>
133+ /// <param name="requestInfoModel">The request information model.</param>
134+ public void OnPagingDataProcessing ( ref object data , RequestInfoModel requestInfoModel )
135+ {
136+ }
137+
138+ /// <summary>
139+ /// Called after paging data processor executes.
140+ /// </summary>
141+ /// <param name="data">The data.</param>
142+ /// <param name="requestInfoModel">The request information model.</param>
143+ public void OnPagingDataProcessed ( ref object data , RequestInfoModel requestInfoModel )
144+ {
145+ }
146+
45147 private void PerformOnActionExecuted ( HttpActionExecutedContext actionExecutedContext )
46148 {
47149 var modelType = ( ( System . Net . Http . ObjectContent ) actionExecutedContext . Response . Content ) . ObjectType ;
@@ -55,9 +157,29 @@ private void PerformOnActionExecuted(HttpActionExecutedContext actionExecutedCon
55157 actionExecutedContext . Response . Content = new ObjectContent ( typeof ( object ) , formattedObjectResult , new JsonMediaTypeFormatter ( ) ) ;
56158 }
57159
160+ /// <summary>
161+ /// Subscribes to events.
162+ /// </summary>
163+ /// <param name="application">The application.</param>
58164 private void SubscribeToEvents ( IApplicationBase application )
59165 {
166+ application . OnDataProcessingEvent += this . OnDataProcessing ;
60167 application . OnDataProcessedEvent += this . OnDataProcessed ;
168+
169+ application . OnSearchDataProcessingEvent += this . OnSearchDataProcessing ;
170+ application . OnSearchDataProcessedEvent += this . OnSearchDataProcessed ;
171+
172+ application . OnCustomFiltersDataProcessingEvent += this . OnCustomFiltersDataProcessing ;
173+ application . OnCustomFiltersDataProcessedEvent += this . OnCustomFiltersDataProcessed ;
174+
175+ application . OnColumnsFilterDataProcessingEvent += this . OnColumnsFilterDataProcessing ;
176+ application . OnColumnsFilterDataProcessedEvent += this . OnColumnsFilterDataProcessed ;
177+
178+ application . OnSortDataProcessingEvent += this . OnSortDataProcessing ;
179+ application . OnSortDataProcessedEvent += this . OnSortDataProcessed ;
180+
181+ application . OnPagingDataProcessingEvent += this . OnPagingDataProcessing ;
182+ application . OnPagingDataProcessedEvent += this . OnPagingDataProcessed ;
61183 }
62184
63185 private object GetObjectResult ( ResultModel result )
0 commit comments