public class OrdersController : Controller
{
// GET: api/Orders
[HttpGet]
public object Get() // triggered when perform paging, Sorting, Filtering etc.,
{
var queryString = Request.Query;
int skip = Convert.ToInt32(queryString["$skip"]);
int take = Convert.ToInt32(queryString["$top"]);
var data = OrdersDetails.GetAllRecords().ToList();
return take != 0 ? new { Items = data.Skip(skip).Take(take).ToList(), Count = data.Count() } : new { Items = data, Count = data.Count() }; // return the data in Items and Count format
}
// GET: api/Orders/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
return "value";
}
// POST: api/Orders
[HttpPost]
public object Post([FromBody]OrdersDetails value) // triggered when perform insert action
{
OrdersDetails.GetAllRecords().Insert(0, value);
return value;
}
// PUT: api/Orders/5
[HttpPut]
public object Put(int id, [FromBody]OrdersDetails value) // triggered when perform update action
{
var data = OrdersDetails.GetAllRecords().Where(or => or.OrderID == value.OrderID).FirstOrDefault();
if (data != null)
{
var ord = value;
OrdersDetails val = OrdersDetails.GetAllRecords().Where(or => or.OrderID == ord.OrderID).FirstOrDefault();
val.OrderID = ord.OrderID;
val.EmployeeID = ord.EmployeeID;
val.CustomerID = ord.CustomerID;
val.Freight = ord.Freight;
val.OrderDate = ord.OrderDate;
val.ShipCity = ord.ShipCity;
}
return value;
}
// DELETE: api/ApiWithActions/5
[HttpDelete("{id:int}")]
[Route("Orders/{id:int}")]
public void Delete(int id) // triggered when perform delete action
{
var data = OrdersDetails.GetAllRecords().Where(or => or.OrderID == id).FirstOrDefault();
OrdersDetails.GetAllRecords().Remove(data);
}
}
public class Data
{
public bool requiresCounts { get; set; }
public int skip { get; set; }
public int take { get; set; }
} |
public class OrderController : ApiController
{
// GET: api/Order
public object Get() // for every grid action (Paging, Sorting, Searching, etc.,) Get() method is called
{
var queryString = System.Web.HttpContext.Current.Request.QueryString; // get the current grid query
// perform the operation using the query
int skip = Convert.ToInt32(queryString["$skip"]); //paging
int take = Convert.ToInt32(queryString["$top"]);
string filter = queryString["$filter"]; // filtering
string sort = queryString["$orderby"]; // sorting
var data = OrdersDetails.GetAllRecords();
List<OrdersDetails> Datae = new List<OrdersDetails>();
List<OrdersDetails> Datase = new List<OrdersDetails>();
if (sort != null) //Sorting
{
switch (sort)
{
case "OrderID":
if (sort.Substring(sort.IndexOf(' ') + 1) != null)
data = data.OrderByDescending(x => x.OrderID).ToList();
else
data = data.OrderBy(x => x.OrderID).ToList();
break;
case "CustomerID":
if (sort.Substring(sort.IndexOf(' ') + 1) != null)
data = data.OrderByDescending(x => x.CustomerID).ToList();
else
data = data.OrderBy(x => x.CustomerID).ToList();
break;
. . .
}
}
if (filter != null) // to handle filter opertaion
{
if (filter.Contains("substring"))//searching
{
var key = filter.Split(new string[] { "'" }, StringSplitOptions.None)[1];
data = data.Where(fil => fil.CustomerID.ToString().Contains(key.ToUpper())
|| fil.EmployeeID.ToString().Contains(key)
|| fil.Freight.ToString().Contains(key)
|| fil.OrderID.ToString().Contains(key));
}
else
{
var newfiltersplits = filter;
var filtersplits = newfiltersplits.Split('(', ')', ' ');
var filterfield = "";
var filtervalue = "";
if (filtersplits.Length == 7)
{
filterfield = filtersplits[1];
filtervalue = filtersplits[3];
if (filtersplits[2] == "tolower")
{
filterfield = filter.Split('(', ')', '\'')[3];
filtervalue = filter.Split('(', ')', '\'')[5];
}
}
. .
. .
. .
switch (filterfield)
{
case "CustomerID":
data = (from cust in data
where cust.CustomerID.ToLower().StartsWith(filtervalue.ToString())
select cust);
break;
. .
. .
}
// return the data with Items and Count pair
return new
{
Items = data.Skip(skip).Take(take),
Count = data.Count()
// return order;
};
} |
public class OrderController : ApiController
{
// GET: api/Order
public PageResult<OrdersDetails> Get(ODataQueryOptions opts)
{
var results = OrdersDetails.GetAllRecords().AsQueryable();
var count = results.Count();
if (opts.OrderBy != null)
results = opts.OrderBy.ApplyTo(results);
if (opts.Filter != null)
{
results = opts.Filter.ApplyTo(results, new ODataQuerySettings()).Cast<OrdersDetails>();
}
if (opts.InlineCount != null)
count = results.Count();
if (opts.Skip != null)
results = opts.Skip.ApplyTo(results, new ODataQuerySettings());
if (opts.Top != null)
results = opts.Top.ApplyTo(results, new ODataQuerySettings());
return new PageResult<OrdersDetails>(results, null, count);
} |