|
// GET: api/Home
[HttpGet]
public object Get()
{
var queryString = HttpContext.Request.Query;
int skip = Convert.ToInt32(queryString["$skip"]); //paging
int take = Convert.ToInt32(queryString["$top"]);
string filter = queryString["$filter"]; // filtering query
string sort = queryString["$orderby"]; // sorting query
var data = OrdersDetails.GetAllRecords();
List<OrdersDetails> Datae = new List<OrdersDetails>();
List<OrdersDetails> Datase = new List<OrdersDetails>();
if (sort != null) //Sorting
{
switch (sort)
{
case "OrderID":
data = data.OrderBy(x => x.OrderID).ToList();
break;
case "OrderID desc":
data = data.OrderByDescending(x => x.OrderID).ToList();
break;
case "EmployeeID":
data = data.OrderBy(x => x.EmployeeID).ToList();
break;
case "EmployeeID desc":
data = data.OrderByDescending(x => x.EmployeeID).ToList();
break;
}
}
if (filter != null)
{
var newData = data;
var newfiltersplits = filter;
var multipleFilters = newfiltersplits.Split("and");
var count = 0;
while (count < multipleFilters.Length) {
multipleFilters[count] = (multipleFilters[count][0] == ' ') ? multipleFilters[count].Substring(1, multipleFilters[count].Length - 1) : multipleFilters[count];
multipleFilters[count] = (multipleFilters[count][multipleFilters[count].Length - 1] == ' ') ? multipleFilters[count].Substring(0, multipleFilters[count].Length - 1) : multipleFilters[count];
var filtersplits = multipleFilters[count].Split('(', ')', ' ');
var filterfield = filtersplits[1];
var filtervalue = filtersplits[3];
if (filtersplits.Length != 5)
{
filterfield = multipleFilters[count].Split('(', ')', '\'')[3];
filtervalue = multipleFilters[count].Split('(', ')', '\'')[5];
}
switch (filterfield)
{
case "OrderID":
Datae = (from cust in newData where cust.OrderID.ToString() == filtervalue.ToString() select cust).ToList();
break;
case "EmployeeID":
Datae = (from cust in newData cust.EmployeeID.ToString() == filtervalue.ToString() select cust).ToList();
break;
}
newData = Datae;
count++;
}
data = Datae;
}
return new
{
Items = data.Skip(skip).Take(take),
Count = data.Count()
};
} |