44
55namespace WebApiAdaptor . Server . Controllers
66{
7-
87 [ Route ( "api/[controller]" ) ]
98 [ ApiController ]
109 public class OrdersController : ControllerBase
1110 {
12- // GET: api/Orders
1311 [ HttpGet ]
14- // Action to retrieve orders
1512 public object Get ( )
1613 {
1714 var queryString = Request . Query ;
1815 var data = OrdersDetails . GetAllRecords ( ) . ToList ( ) ;
16+ string filter = queryString [ "$filter" ] ; // filtering params
17+ string sort = queryString [ "$orderby" ] ; //sorting params
1918
20- string ? sort = queryString [ "$orderby" ] ; // Get sorting parameter
21- string ? filter = queryString [ "$filter" ] ; // // Get filtering parameter
22-
23- //Peform sort operation
24- if ( ! string . IsNullOrEmpty ( sort ) )
25- {
26- var sortConditions = sort . Split ( ',' ) ;
27-
28- var orderedData = data . OrderBy ( x => 0 ) ; // Start with a stable sort
29-
30- foreach ( var sortCondition in sortConditions )
31- {
32- var sortParts = sortCondition . Trim ( ) . Split ( ' ' ) ;
33- var sortBy = sortParts [ 0 ] ;
34- var sortOrder = sortParts . Length > 1 && sortParts [ 1 ] . ToLower ( ) == "desc" ;
35-
36- switch ( sortBy )
37- {
38- case "OrderID" :
39- orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . OrderID ) : orderedData . ThenBy ( x => x . OrderID ) ;
40- break ;
41- case "CustomerID" :
42- orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . CustomerID ) : orderedData . ThenBy ( x => x . CustomerID ) ;
43- break ;
44- case "ShipCity" :
45- orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . ShipCity ) : orderedData . ThenBy ( x => x . ShipCity ) ;
46- break ;
47- }
48- }
49-
50- data = [ .. orderedData ] ;
51- }
5219 if ( filter != null )
5320 {
5421 var filters = filter . Split ( new string [ ] { " and " } , StringSplitOptions . RemoveEmptyEntries ) ;
@@ -57,22 +24,21 @@ public object Get()
5724 {
5825 if ( filterItem . Contains ( "substringof" ) )
5926 {
60- // Performing Search operation
61-
27+ // Perform searching operation
6228 var searchParts = filterItem . Split ( '(' , ')' , '\' ' ) ;
6329 var searchValue = searchParts [ 3 ] ;
6430
6531 // Apply the search value to all searchable fields
6632 data = data . Where ( cust =>
67- cust != null &&
68- ( ( cust . OrderID ? . ToString ( ) ? . Contains ( searchValue ) ?? false ) ||
69- ( cust . CustomerID ? . ToLower ( ) ? . Contains ( searchValue ) ?? false ) ||
70- ( cust . ShipCity ? . ToLower ( ) ? . Contains ( searchValue ) ?? false ) ) ) . ToList ( ) ;
33+ cust . OrderID . ToString ( ) . Contains ( searchValue ) ||
34+ cust . CustomerID . ToLower ( ) . Contains ( searchValue ) ||
35+ cust . ShipCity . ToLower ( ) . Contains ( searchValue )
36+ // Add conditions for other searchable fields as needed
37+ ) . ToList ( ) ;
7138 }
7239 else
7340 {
74- // Performing filter operation
75-
41+ // Perform filtering operation
7642 var filterfield = "" ;
7743 var filtervalue = "" ;
7844 var filterParts = filterItem . Split ( '(' , ')' , '\' ' ) ;
@@ -90,36 +56,64 @@ public object Get()
9056 switch ( filterfield )
9157 {
9258 case "OrderID" :
93- data = data . Where ( cust => cust != null && cust . OrderID ? . ToString ( ) == filtervalue . ToString ( ) ) . ToList ( ) ;
59+ data = ( from cust in data
60+ where cust . OrderID . ToString ( ) == filtervalue . ToString ( )
61+ select cust ) . ToList ( ) ;
9462 break ;
9563 case "CustomerID" :
96- data = data . Where ( cust => cust != null && cust . CustomerID ? . ToLower ( ) . StartsWith ( filtervalue . ToString ( ) ) == true ) . ToList ( ) ;
64+ data = ( from cust in data
65+ where cust . CustomerID . ToLower ( ) . StartsWith ( filtervalue . ToString ( ) )
66+ select cust ) . ToList ( ) ;
9767 break ;
9868 case "ShipCity" :
99- data = data . Where ( cust => cust != null && cust . ShipCity ? . ToLower ( ) . StartsWith ( filtervalue . ToString ( ) ) == true ) . ToList ( ) ;
69+ data = ( from cust in data
70+ where cust . ShipCity . ToLower ( ) . StartsWith ( filtervalue . ToString ( ) )
71+ select cust ) . ToList ( ) ;
10072 break ;
101- // Add more cases for other searchable fields if needed
10273 }
74+ }
75+ }
76+ }
10377
78+ // Perform sorting operation
79+ if ( ! string . IsNullOrEmpty ( sort ) )
80+ {
81+ var sortConditions = sort . Split ( ',' ) ;
82+ var orderedData = data . OrderBy ( x => 0 ) ; // Start with a stable sort
83+ foreach ( var sortCondition in sortConditions )
84+ {
85+ var sortParts = sortCondition . Trim ( ) . Split ( ' ' ) ;
86+ var sortBy = sortParts [ 0 ] ;
87+ var sortOrder = sortParts . Length > 1 && sortParts [ 1 ] . ToLower ( ) == "desc" ;
88+ switch ( sortBy )
89+ {
90+ case "OrderID" :
91+ orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . OrderID ) : orderedData . ThenBy ( x => x . OrderID ) ;
92+ break ;
93+ case "CustomerID" :
94+ orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . CustomerID ) : orderedData . ThenBy ( x => x . CustomerID ) ;
95+ break ;
96+ case "ShipCity" :
97+ orderedData = sortOrder ? orderedData . ThenByDescending ( x => x . ShipCity ) : orderedData . ThenBy ( x => x . ShipCity ) ;
98+ break ;
10499 }
105100 }
101+ data = orderedData . ToList ( ) ;
106102 }
107- //Perform page operation
108103
104+ // Perform Paging operation
109105 int skip = Convert . ToInt32 ( queryString [ "$skip" ] ) ;
110106 int take = Convert . ToInt32 ( queryString [ "$top" ] ) ;
111- int TotalRecordsCount = data . Count ;
112107
113- return take != 0 ? new { Items = data . Skip ( skip ) . Take ( take ) . ToList ( ) , Count = TotalRecordsCount } : new { Items = data , Count = TotalRecordsCount } ;
108+ return take != 0 ? new { Items = data . Skip ( skip ) . Take ( take ) . ToList ( ) , Count = data . Count ( ) } : new { Items = data , Count = data . Count ( ) } ;
114109 }
115110
116-
117111 // POST: api/Orders
118112 [ HttpPost ]
119113 /// <summary>
120114 /// Inserts a new data item into the data collection.
121115 /// </summary>
122- /// <param name="value ">It holds new record detail which is need to be inserted.</param>
116+ /// <param name="newRecord ">It holds new record detail which is need to be inserted.</param>
123117 /// <returns>Returns void</returns>
124118 public void Post ( [ FromBody ] OrdersDetails newRecord )
125119 {
@@ -144,10 +138,11 @@ public void Put(int id, [FromBody] OrdersDetails order)
144138 existingOrder . OrderID = order . OrderID ;
145139 existingOrder . CustomerID = order . CustomerID ;
146140 existingOrder . ShipCity = order . ShipCity ;
141+ existingOrder . ShipCountry = order . ShipCountry ;
147142 }
148143 }
149144
150- // DELETE: api/Orders/ 5
145+ // DELETE: api/5
151146 [ HttpDelete ( "{id}" ) ]
152147 /// <summary>
153148 /// Remove a specific data item from the data collection.
0 commit comments