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