/
OrdersController.cs
96 lines (80 loc) · 3.07 KB
/
OrdersController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using datagrid_webapi.Models;
using DevExtreme.AspNet.Data;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Web.Http;
using System.Web.Http.ModelBinding;
namespace datagrid_webapi.Controllers
{
public class OrdersController : ApiController
{
Northwind _db = new Northwind();
[HttpGet]
public HttpResponseMessage Get(DataSourceLoadOptions loadOptions)
{
loadOptions.PrimaryKey = new[] { "OrderID" };
var orders = from o in _db.Orders
select new
{
o.OrderID,
o.CustomerID,
CustomerName = o.Customer.ContactName,
o.EmployeeID,
EmployeeName = o.Employee.FirstName + " " + o.Employee.LastName,
o.OrderDate,
o.RequiredDate,
o.ShippedDate,
o.ShipVia,
ShipViaName = o.Shipper.CompanyName,
o.Freight,
o.ShipName,
o.ShipAddress,
o.ShipCity,
o.ShipRegion,
o.ShipPostalCode,
o.ShipCountry
};
return Request.CreateResponse(DataSourceLoader.Load(orders, loadOptions));
}
[HttpPut]
public HttpResponseMessage Put(FormDataCollection form)
{
var key = Convert.ToInt32(form.Get("key"));
var values = form.Get("values");
var order = _db.Orders.Find(key);
JsonConvert.PopulateObject(values, order);
Validate(order);
if (!ModelState.IsValid)
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState.GetFullErrorMessage());
_db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK);
}
[HttpPost]
public HttpResponseMessage Post(FormDataCollection form)
{
var values = form.Get("values");
var order = new Order();
JsonConvert.PopulateObject(values, order);
Validate(order);
if (!ModelState.IsValid)
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState.GetFullErrorMessage());
_db.Orders.Add(order);
_db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK);
}
[HttpDelete]
public HttpResponseMessage Delete(FormDataCollection form)
{
var key = Convert.ToInt32(form.Get("key"));
var order = _db.Orders.Find(key);
_db.Orders.Remove(order);
_db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK);
}
}
}