Skip to content

Commit 9973988

Browse files
committed
separate data processors events exposed to mvc action filter
1 parent 49cae18 commit 9973988

File tree

4 files changed

+205
-17
lines changed

4 files changed

+205
-17
lines changed

src/Examples/Examples.Mvc/Controllers/CustomersController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public override void OnDataProcessed(ref object data, RequestInfoModel requestIn
5353
data = list.AsQueryable();
5454
}
5555

56-
public override void OnSearchnDataProcessing(ref object data, RequestInfoModel requestInfoModel)
56+
public override void OnSearchDataProcessing(ref object data, RequestInfoModel requestInfoModel)
5757
{
5858
var queryable = data as IOrderedQueryable<CustomerViewModel>;
5959
data = queryable.Where(x => x.CustomerID % 2 == 0);

src/JQDT.MVC/JQDataTableAttribute.cs

Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,92 @@ public virtual void OnDataProcessed(ref object data, RequestInfoModel requestInf
4545
// No data processing logic by default;
4646
}
4747

48-
public virtual void OnSearchnDataProcessing(ref object data, RequestInfoModel requestInfoModel)
48+
/// <summary>
49+
/// Called when [search data processing].
50+
/// </summary>
51+
/// <param name="data">The data.</param>
52+
/// <param name="requestInfoModel">The request information model.</param>
53+
public virtual void OnSearchDataProcessing(ref object data, RequestInfoModel requestInfoModel)
54+
{
55+
// No data processing logic by default;
56+
}
57+
58+
/// <summary>
59+
/// Called when [custom filters data processing].
60+
/// </summary>
61+
/// <param name="data">The data.</param>
62+
/// <param name="requestInfoModel">The request information model.</param>
63+
public virtual void OnCustomFiltersDataProcessing(ref object data, RequestInfoModel requestInfoModel)
64+
{
65+
// No data processing logic by default;
66+
}
67+
68+
/// <summary>
69+
/// Called when [custom filters data processed].
70+
/// </summary>
71+
/// <param name="data">The data.</param>
72+
/// <param name="requestInfoModel">The request information model.</param>
73+
public virtual void OnCustomFiltersDataProcessed(ref object data, RequestInfoModel requestInfoModel)
74+
{
75+
// No data processing logic by default;
76+
}
77+
78+
/// <summary>
79+
/// Called when [columns filter data processing].
80+
/// </summary>
81+
/// <param name="data">The data.</param>
82+
/// <param name="requestInfoModel">The request information model.</param>
83+
public virtual void OnColumnsFilterDataProcessing(ref object data, RequestInfoModel requestInfoModel)
84+
{
85+
// No data processing logic by default;
86+
}
87+
88+
/// <summary>
89+
/// Called when [columns filter data processed].
90+
/// </summary>
91+
/// <param name="data">The data.</param>
92+
/// <param name="requestInfoModel">The request information model.</param>
93+
public virtual void OnColumnsFilterDataProcessed(ref object data, RequestInfoModel requestInfoModel)
94+
{
95+
// No data processing logic by default;
96+
}
97+
98+
/// <summary>
99+
/// Called when [sort data processing].
100+
/// </summary>
101+
/// <param name="data">The data.</param>
102+
/// <param name="requestInfoModel">The request information model.</param>
103+
public virtual void OnSortDataProcessing(ref object data, RequestInfoModel requestInfoModel)
104+
{
105+
// No data processing logic by default;
106+
}
107+
108+
/// <summary>
109+
/// Called when [sort data processed].
110+
/// </summary>
111+
/// <param name="data">The data.</param>
112+
/// <param name="requestInfoModel">The request information model.</param>
113+
public virtual void OnSortDataProcessed(ref object data, RequestInfoModel requestInfoModel)
114+
{
115+
// No data processing logic by default;
116+
}
117+
118+
/// <summary>
119+
/// Called when [paging data processing].
120+
/// </summary>
121+
/// <param name="data">The data.</param>
122+
/// <param name="requestInfoModel">The request information model.</param>
123+
public virtual void OnPagingDataProcessing(ref object data, RequestInfoModel requestInfoModel)
124+
{
125+
// No data processing logic by default;
126+
}
127+
128+
/// <summary>
129+
/// Called when [paging data processed].
130+
/// </summary>
131+
/// <param name="data">The data.</param>
132+
/// <param name="requestInfoModel">The request information model.</param>
133+
public virtual void OnPagingDataProcessed(ref object data, RequestInfoModel requestInfoModel)
49134
{
50135
// No data processing logic by default;
51136
}
@@ -74,7 +159,19 @@ private void PerformOnActionExecuted(ActionExecutedContext filterContext)
74159
private void SubscribeToEvents(IApplicationBase application)
75160
{
76161
application.OnDataProcessedEvent += this.OnDataProcessed;
77-
application.OnSearchDataProcessingEvent += this.OnSearchnDataProcessing;
162+
application.OnSearchDataProcessingEvent += this.OnSearchDataProcessing;
163+
164+
application.OnCustomFiltersDataProcessingEvent += this.OnCustomFiltersDataProcessing;
165+
application.OnCustomFiltersDataProcessedEvent += this.OnCustomFiltersDataProcessed;
166+
167+
application.OnColumnsFilterDataProcessingEvent += this.OnColumnsFilterDataProcessing;
168+
application.OnColumnsFilterDataProcessedEvent += this.OnColumnsFilterDataProcessed;
169+
170+
application.OnSortDataProcessingEvent += this.OnSortDataProcessing;
171+
application.OnSortDataProcessedEvent += this.OnSortDataProcessed;
172+
173+
application.OnPagingDataProcessingEvent += this.OnPagingDataProcessing;
174+
application.OnPagingDataProcessedEvent += this.OnPagingDataProcessed;
78175
}
79176

80177
private ActionResult FormatResult(object resultModel)

src/JQDT/Application/ApplicationBase.cs

Lines changed: 65 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,51 @@ public ApplicationBase(IDependencyResolver dependencyResolver)
3838
/// </summary>
3939
public event DataProcessorEventHandler OnSearchDataProcessingEvent = delegate { };
4040

41+
/// <summary>
42+
/// Occurs when [on search data processed event].
43+
/// </summary>
44+
public event DataProcessorEventHandler OnSearchDataProcessedEvent = delegate { };
45+
46+
/// <summary>
47+
/// Occurs when [on custom filters data processing event].
48+
/// </summary>
49+
public event DataProcessorEventHandler OnCustomFiltersDataProcessingEvent = delegate { };
50+
51+
/// <summary>
52+
/// Occurs when [on custom filters data processed event].
53+
/// </summary>
54+
public event DataProcessorEventHandler OnCustomFiltersDataProcessedEvent = delegate { };
55+
56+
/// <summary>
57+
/// Occurs when [on columns filter data processing event].
58+
/// </summary>
59+
public event DataProcessorEventHandler OnColumnsFilterDataProcessingEvent = delegate { };
60+
61+
/// <summary>
62+
/// Occurs when [on columns filter data processed event].
63+
/// </summary>
64+
public event DataProcessorEventHandler OnColumnsFilterDataProcessedEvent = delegate { };
65+
66+
/// <summary>
67+
/// Occurs when [on sort data processing event].
68+
/// </summary>
69+
public event DataProcessorEventHandler OnSortDataProcessingEvent = delegate { };
70+
71+
/// <summary>
72+
/// Occurs when [on sort data processed event].
73+
/// </summary>
74+
public event DataProcessorEventHandler OnSortDataProcessedEvent = delegate { };
75+
76+
/// <summary>
77+
/// Occurs when [on paging data processing event].
78+
/// </summary>
79+
public event DataProcessorEventHandler OnPagingDataProcessingEvent = delegate { };
80+
81+
/// <summary>
82+
/// Occurs when [on paging data processed event].
83+
/// </summary>
84+
public event DataProcessorEventHandler OnPagingDataProcessedEvent = delegate { };
85+
4186
/// <summary>
4287
/// Application entry point method. Executes all data processors.
4388
/// </summary>
@@ -123,25 +168,31 @@ private IDataProcess<T> GetDataProcessChain(Type dataCollectionType)
123168
var dataProcessChain = new DataProcessChain<T>();
124169

125170
var searchDataProcessor = this.dependencyResolver.GetSearchDataProcessor<T>();
126-
this.AttachEventsToDataprocessor((DataProcessBase<T>)searchDataProcessor);
171+
((DataProcessBase<T>)searchDataProcessor).OnDataProcessingEvent += this.OnSearchDataProcessingEvent;
172+
((DataProcessBase<T>)searchDataProcessor).OnDataProcessedEvent += this.OnSearchDataProcessedEvent;
127173
dataProcessChain.AddDataProcessor(searchDataProcessor);
128174

129-
dataProcessChain.AddDataProcessor(this.dependencyResolver.GetCustomFiltersDataProcessor<T>());
130-
dataProcessChain.AddDataProcessor(this.dependencyResolver.GetColumnsFilterDataProcessor<T>());
131-
dataProcessChain.AddDataProcessor(this.dependencyResolver.GetSortDataProcessor<T>());
132-
dataProcessChain.AddDataProcessor(this.dependencyResolver.GetPagingDataProcessor<T>());
175+
var customFiltersDataProcessor = this.dependencyResolver.GetCustomFiltersDataProcessor<T>();
176+
((DataProcessBase<T>)customFiltersDataProcessor).OnDataProcessingEvent += this.OnCustomFiltersDataProcessingEvent;
177+
((DataProcessBase<T>)customFiltersDataProcessor).OnDataProcessedEvent += this.OnCustomFiltersDataProcessedEvent;
178+
dataProcessChain.AddDataProcessor(customFiltersDataProcessor);
133179

134-
return dataProcessChain;
135-
}
180+
var columnsFilterDataProcessor = this.dependencyResolver.GetColumnsFilterDataProcessor<T>();
181+
((DataProcessBase<T>)columnsFilterDataProcessor).OnDataProcessingEvent += this.OnColumnsFilterDataProcessingEvent;
182+
((DataProcessBase<T>)columnsFilterDataProcessor).OnDataProcessedEvent += this.OnColumnsFilterDataProcessedEvent;
183+
dataProcessChain.AddDataProcessor(columnsFilterDataProcessor);
136184

137-
private void AttachEventsToDataprocessor(DataProcessBase<T> dataProcessor)
138-
{
139-
dataProcessor.OnDataProcessingEvent += this.OnSearchDataProcessing;
140-
}
185+
var sortDataProcessor = this.dependencyResolver.GetSortDataProcessor<T>();
186+
((DataProcessBase<T>)sortDataProcessor).OnDataProcessingEvent += this.OnSortDataProcessingEvent;
187+
((DataProcessBase<T>)sortDataProcessor).OnDataProcessedEvent += this.OnSortDataProcessedEvent;
188+
dataProcessChain.AddDataProcessor(sortDataProcessor);
141189

142-
public void OnSearchDataProcessing(ref object data, RequestInfoModel requestInfoModel)
143-
{
144-
this.OnSearchDataProcessingEvent(ref data, requestInfoModel);
190+
var pagingDataProcessor = this.dependencyResolver.GetPagingDataProcessor<T>();
191+
((DataProcessBase<T>)pagingDataProcessor).OnDataProcessingEvent += this.OnPagingDataProcessingEvent;
192+
((DataProcessBase<T>)pagingDataProcessor).OnDataProcessedEvent += this.OnPagingDataProcessedEvent;
193+
dataProcessChain.AddDataProcessor(pagingDataProcessor);
194+
195+
return dataProcessChain;
145196
}
146197
}
147198
}

src/JQDT/Application/IApplicationBase.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,46 @@ public interface IApplicationBase
1818
/// </summary>
1919
event DataProcessorEventHandler OnSearchDataProcessingEvent;
2020

21+
/// <summary>
22+
/// Occurs when [on custom filters data processing event].
23+
/// </summary>
24+
event DataProcessorEventHandler OnCustomFiltersDataProcessingEvent;
25+
26+
/// <summary>
27+
/// Occurs when [on custom filters data processed event].
28+
/// </summary>
29+
event DataProcessorEventHandler OnCustomFiltersDataProcessedEvent;
30+
31+
/// <summary>
32+
/// Occurs when [on columns filter data processing event].
33+
/// </summary>
34+
event DataProcessorEventHandler OnColumnsFilterDataProcessingEvent;
35+
36+
/// <summary>
37+
/// Occurs when [on columns filter data processed event].
38+
/// </summary>
39+
event DataProcessorEventHandler OnColumnsFilterDataProcessedEvent;
40+
41+
/// <summary>
42+
/// Occurs when [on sort data processing event].
43+
/// </summary>
44+
event DataProcessorEventHandler OnSortDataProcessingEvent;
45+
46+
/// <summary>
47+
/// Occurs when [on sort data processed event].
48+
/// </summary>
49+
event DataProcessorEventHandler OnSortDataProcessedEvent;
50+
51+
/// <summary>
52+
/// Occurs when [on paging data processing event].
53+
/// </summary>
54+
event DataProcessorEventHandler OnPagingDataProcessingEvent;
55+
56+
/// <summary>
57+
/// Occurs when [on paging data processed event].
58+
/// </summary>
59+
event DataProcessorEventHandler OnPagingDataProcessedEvent;
60+
2161
/// <summary>
2262
/// Application entry point method. Executes all data processors.
2363
/// </summary>

0 commit comments

Comments
 (0)