1
+ using Microsoft . AspNetCore . Mvc ;
2
+ using Syncfusion . EJ2 . Base ;
3
+ using WebMethodAdaptor . Models ;
4
+
5
+ namespace WebMethodAdaptor . Server . Controllers
6
+ {
7
+ public class GridController : Controller
8
+ {
9
+ // method to retrieve data
10
+ [ HttpGet ]
11
+ [ Route ( "api/[controller]" ) ]
12
+ public List < OrdersDetails > GetOrderData ( )
13
+ {
14
+ // Retrieve all records and convert to list
15
+ var data = OrdersDetails . GetAllRecords ( ) . ToList ( ) ;
16
+ return data ;
17
+ }
18
+
19
+ // POST method to handle incoming data manager requests
20
+ [ HttpPost ]
21
+ [ Route ( "api/[controller]" ) ]
22
+ public object Post ( [ FromBody ] DataManager DataManagerRequest )
23
+ {
24
+ // Retrieve data source and convert to queryable
25
+ IQueryable < OrdersDetails > DataSource = GetOrderData ( ) . AsQueryable ( ) ;
26
+
27
+ // Initialize QueryableOperation
28
+ QueryableOperation queryableOperation = new QueryableOperation ( ) ;
29
+
30
+ // Retrieve data manager value
31
+ DataManagerRequest dataManagerParams = DataManagerRequest . Value ;
32
+
33
+
34
+ // Perform filtering operation if filtering is provided
35
+ if ( dataManagerParams . Where != null && dataManagerParams . Where . Count > 0 )
36
+ {
37
+ DataSource = queryableOperation . PerformFiltering ( DataSource , dataManagerParams . Where , dataManagerParams . Where [ 0 ] . Operator ) ;
38
+ }
39
+
40
+ // Perform search operation if search is provided
41
+ if ( dataManagerParams . Search != null && dataManagerParams . Search . Count > 0 )
42
+ {
43
+ DataSource = queryableOperation . PerformSearching ( DataSource , dataManagerParams . Search ) ;
44
+ }
45
+
46
+ // Perform sorting operation if sorting is provided
47
+ if ( dataManagerParams . Sorted != null && dataManagerParams . Sorted . Count > 0 )
48
+ {
49
+ DataSource = queryableOperation . PerformSorting ( DataSource , dataManagerParams . Sorted ) ;
50
+ }
51
+
52
+ // Get total record count after applying filters
53
+ int totalRecordsCount = DataSource . Count ( ) ;
54
+
55
+ // Perform skip operation if skip value is provided
56
+ if ( dataManagerParams . Skip != 0 )
57
+ {
58
+ DataSource = queryableOperation . PerformSkip ( DataSource , dataManagerParams . Skip ) ;
59
+ }
60
+
61
+ // Perform take operation if take value is provided
62
+ if ( dataManagerParams . Take != 0 )
63
+ {
64
+ DataSource = queryableOperation . PerformTake ( DataSource , dataManagerParams . Take ) ;
65
+ }
66
+
67
+ // Return result and total record count
68
+ return new { result = DataSource , count = totalRecordsCount } ;
69
+ }
70
+
71
+ // POST method to handle record insertion
72
+ [ HttpPost ]
73
+ [ Route ( "api/[controller]/Insert" ) ]
74
+ public void Insert ( [ FromBody ] CRUDModel < OrdersDetails > newRecord )
75
+ {
76
+ // Check if new record is not null
77
+ if ( newRecord . value != null )
78
+ {
79
+ // Insert new record
80
+ OrdersDetails . GetAllRecords ( ) . Insert ( 0 , newRecord . value ) ;
81
+ }
82
+ }
83
+
84
+ // POST method to handle record updates
85
+ [ HttpPost ]
86
+ [ Route ( "api/[controller]/Update" ) ]
87
+ public void Update ( [ FromBody ] CRUDModel < OrdersDetails > updatedRecord )
88
+ {
89
+ // Retrieve updated order
90
+ var updatedOrder = updatedRecord . value ;
91
+ if ( updatedOrder != null )
92
+ {
93
+ // Find existing record
94
+ var data = OrdersDetails . GetAllRecords ( ) . FirstOrDefault ( or => or . OrderID == updatedOrder . OrderID ) ;
95
+ if ( data != null )
96
+ {
97
+ // Update existing record
98
+ data . OrderID = updatedOrder . OrderID ;
99
+ data . CustomerID = updatedOrder . CustomerID ;
100
+ data . ShipCity = updatedOrder . ShipCity ;
101
+ data . ShipCountry = updatedOrder . ShipCountry ;
102
+ // Update other properties similarly
103
+ }
104
+ }
105
+ }
106
+
107
+ // POST method to handle record removal
108
+ [ HttpPost ]
109
+ [ Route ( "api/[controller]/Remove" ) ]
110
+ public void Remove ( [ FromBody ] CRUDModel < OrdersDetails > deletedRecord )
111
+ {
112
+ // Retrieve order ID from deleted record
113
+ int orderId = int . Parse ( deletedRecord . key . ToString ( ) ) ;
114
+ // Find record to delete
115
+ var data = OrdersDetails . GetAllRecords ( ) . FirstOrDefault ( orderData => orderData . OrderID == orderId ) ;
116
+ if ( data != null )
117
+ {
118
+ // Remove record from data collection
119
+ OrdersDetails . GetAllRecords ( ) . Remove ( data ) ;
120
+ }
121
+ }
122
+
123
+ [ HttpPost ]
124
+ [ Route ( "api/[controller]/CrudUpdate" ) ]
125
+ public void CrudUpdate ( [ FromBody ] CRUDModel < OrdersDetails > request )
126
+ {
127
+ // perform update operation
128
+ if ( request . action == "update" )
129
+ {
130
+ var orderValue = request . value ;
131
+ OrdersDetails existingRecord = OrdersDetails . GetAllRecords ( ) . Where ( or => or . OrderID == orderValue . OrderID ) . FirstOrDefault ( ) ;
132
+ existingRecord . OrderID = orderValue . OrderID ;
133
+ existingRecord . CustomerID = orderValue . CustomerID ;
134
+ existingRecord . ShipCity = orderValue . ShipCity ;
135
+ }
136
+ // perform insert operation
137
+ else if ( request . action == "insert" )
138
+ {
139
+ OrdersDetails . GetAllRecords ( ) . Insert ( 0 , request . value ) ;
140
+ }
141
+ // perform remove operation
142
+ else if ( request . action == "remove" )
143
+ {
144
+ OrdersDetails . GetAllRecords ( ) . Remove ( OrdersDetails . GetAllRecords ( ) . Where ( or => or . OrderID == int . Parse ( request . key . ToString ( ) ) ) . FirstOrDefault ( ) ) ;
145
+ }
146
+ }
147
+ [ HttpPost ]
148
+ [ Route ( "api/[controller]/BatchUpdate" ) ]
149
+ public IActionResult BatchUpdate ( [ FromBody ] CRUDModel < OrdersDetails > batchOperation )
150
+ {
151
+ if ( batchOperation . added != null )
152
+ {
153
+ foreach ( var addedOrder in batchOperation . added )
154
+ {
155
+ OrdersDetails . GetAllRecords ( ) . Insert ( 0 , addedOrder ) ;
156
+ }
157
+ }
158
+ if ( batchOperation . changed != null )
159
+ {
160
+ foreach ( var changedOrder in batchOperation . changed )
161
+ {
162
+ var existingOrder = OrdersDetails . GetAllRecords ( ) . FirstOrDefault ( or => or . OrderID == changedOrder . OrderID ) ;
163
+ if ( existingOrder != null )
164
+ {
165
+ existingOrder . CustomerID = changedOrder . CustomerID ;
166
+ existingOrder . ShipCity = changedOrder . ShipCity ;
167
+ // Update other properties as needed
168
+ }
169
+ }
170
+ }
171
+ if ( batchOperation . deleted != null )
172
+ {
173
+ foreach ( var deletedOrder in batchOperation . deleted )
174
+ {
175
+ var orderToDelete = OrdersDetails . GetAllRecords ( ) . FirstOrDefault ( or => or . OrderID == deletedOrder . OrderID ) ;
176
+ if ( orderToDelete != null )
177
+ {
178
+ OrdersDetails . GetAllRecords ( ) . Remove ( orderToDelete ) ;
179
+ }
180
+ }
181
+ }
182
+ return Json ( batchOperation ) ;
183
+ }
184
+ // Model for handling data manager requests
185
+ public class DataManager
186
+ {
187
+ public required DataManagerRequest Value { get ; set ; }
188
+ }
189
+
190
+ // Model for handling CRUD operations
191
+ public class CRUDModel < T > where T : class
192
+ {
193
+ public string ? action { get ; set ; }
194
+ public string ? keyColumn { get ; set ; }
195
+ public object ? key { get ; set ; }
196
+ public T ? value { get ; set ; }
197
+ public List < T > ? added { get ; set ; }
198
+ public List < T > ? changed { get ; set ; }
199
+ public List < T > ? deleted { get ; set ; }
200
+ public IDictionary < string , object > ? @params { get ; set ; }
201
+ }
202
+
203
+ }
204
+ }
0 commit comments