Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void Register(HttpConfiguration config)
- {
- config.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{id}",
- defaults: new { id = RouteParameter.Optional }
- );
- config.Routes.MapHttpRoute(
- name: "DefaultApiGet",
- routeTemplate: "api/{controller}/{action}/{regionId}",
- defaults: new { action = "Get" },
- constraints: new { httpMethod = new HttpMethodConstraint("GET") });
- var json = config.Formatters.JsonFormatter;
- json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
- config.Formatters.Remove(config.Formatters.XmlFormatter);
- namespace CallCOP.Controllers
- {
- public class DepartmentController : Controller
- {
- HttpClient client = new HttpClient();
- HttpResponseMessage response = new HttpResponseMessage();
- Uri contactUri = null;
- public DepartmentController()
- {
- // set base address of WebAPI depending on your current environment
- client.BaseAddress = new Uri(ConfigurationManager.AppSettings[string.Format("APIEnvBaseAddress-{0}", CallCOP.Helpers.ConfigHelper.COPApplEnv)]);
- // Add an Accept header for JSON format.
- client.DefaultRequestHeaders.Accept.Add(
- new MediaTypeWithQualityHeaderValue("application/json"));
- }
- // need to only get departments that correspond to a Contact ID.
- // GET: /Department/?regionId={0}
- public ActionResult Index(int regionId)
- {
- response = client.GetAsync(string.Format("api/department/GetDeptsByRegionId/{0}", regionId)).Result;
- if (response.IsSuccessStatusCode)
- {
- var departments = response.Content.ReadAsAsync<IEnumerable<Department>>().Result;
- return View(departments);
- }
- else
- {
- LoggerHelper.GetLogger().InsertError(new Exception(string.Format(
- "Cannot retrieve the list of department records due to HTTP Response Status Code not being successful: {0}", response.StatusCode)));
- return RedirectToAction("Index");
- }
- }
- //
- // GET: /Department/Create
- public ActionResult Create(int regionId)
- {
- return View();
- }
- //
- // POST: /Department/Create
- [HttpPost]
- [ValidateAntiForgeryToken]
- public ActionResult Create(int regionId, Department department)
- {
- department.RegionId = regionId;
- response = client.PostAsJsonAsync("api/department", department).Result;
- if (response.IsSuccessStatusCode)
- {
- return RedirectToAction("Edit", "Region", new { id = regionId });
- }
- else
- {
- LoggerHelper.GetLogger().InsertError(new Exception(string.Format(
- "Cannot create a new department due to HTTP Response Status Code not being successful: {0}", response.StatusCode)));
- return RedirectToAction("Edit", "Region", new { id = regionId });
- }
- }
- //
- // GET: /Department/Edit/5
- public ActionResult Edit(int id = 0)
- {
- response = client.GetAsync(string.Format("api/department/{0}", id)).Result;
- Department department = response.Content.ReadAsAsync<Department>().Result;
- if (department == null)
- {
- return HttpNotFound();
- }
- return View(department);
- }
- //
- // POST: /Department/Edit/5
- [HttpPost]
- [ValidateAntiForgeryToken]
- public ActionResult Edit(int regionId, Department department)
- {
- response = client.GetAsync(string.Format("api/department/{0}", department.Id)).Result;
- contactUri = response.RequestMessage.RequestUri;
- response = client.PutAsJsonAsync(string.Format(contactUri.PathAndQuery), department).Result;
- if (response.IsSuccessStatusCode)
- {
- return RedirectToAction("Index", new { regionId = regionId });
- }
- else
- {
- LoggerHelper.GetLogger().InsertError(new Exception(string.Format(
- "Cannot edit the department record due to HTTP Response Status Code not being successful: {0}", response.StatusCode)));
- return RedirectToAction("Index", new { regionId = regionId });
- }
- }
- //
- // GET: /Department/Delete/5
- public ActionResult Delete(int id = 0)
- {
- response = client.GetAsync(string.Format("api/department/{0}", id)).Result;
- Department department = response.Content.ReadAsAsync<Department>().Result;
- if (department == null)
- {
- return HttpNotFound();
- }
- return View(department);
- }
- //
- // POST: /Department/Delete/5
- [HttpPost, ActionName("Delete")]
- [ValidateAntiForgeryToken]
- public ActionResult DeleteConfirmed(int regionId, int id)
- {
- response = client.GetAsync(string.Format("api/department/{0}", id)).Result;
- contactUri = response.RequestMessage.RequestUri;
- response = client.DeleteAsync(contactUri).Result;
- return RedirectToAction("Index", new { regionId = regionId });
- }
- }
- }
- namespace CallCOPAPI.Controllers
- {
- public class DepartmentController : ApiController
- {
- private CallCOPEntities db = new CallCOPEntities(HelperClasses.DBHelper.GetConnectionString());
- // GET api/department
- public IEnumerable<Department> Get()
- {
- return db.Departments.AsEnumerable();
- }
- // GET api/department/5
- public Department Get(int id)
- {
- Department dept = db.Departments.Find(id);
- if (dept == null)
- {
- throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
- }
- return dept;
- }
- // this should accept a contact id and return departments related to the particular contact record
- // GET api/department/5
- public IEnumerable<Department> GetDeptsByRegionId(int regionId)
- {
- IEnumerable<Department> depts = (from i in db.Departments
- where i.RegionId == regionId
- select i);
- return depts;
- }
- // POST api/department
- public HttpResponseMessage Post(Department department)
- {
- if (ModelState.IsValid)
- {
- db.Departments.Add(department);
- db.SaveChanges();
- HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, department);
- return response;
- }
- else
- {
- return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
- }
- }
- // PUT api/department/5
- public HttpResponseMessage Put(int id, Department department)
- {
- if (!ModelState.IsValid)
- {
- return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
- }
- if (id != department.Id)
- {
- return Request.CreateResponse(HttpStatusCode.BadRequest);
- }
- db.Entry(department).State = EntityState.Modified;
- try
- {
- db.SaveChanges();
- }
- catch (DbUpdateConcurrencyException ex)
- {
- return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
- }
- return Request.CreateResponse(HttpStatusCode.OK);
- }
- // DELETE api/department/5
- public HttpResponseMessage Delete(int id)
- {
- Department department = db.Departments.Find(id);
- if (department == null)
- {
- return Request.CreateResponse(HttpStatusCode.NotFound);
- }
- db.Departments.Remove(department);
- try
- {
- db.SaveChanges();
- }
- catch (DbUpdateConcurrencyException ex)
- {
- return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
- }
- return Request.CreateResponse(HttpStatusCode.OK, department);
- }
- }
- }
- <modules runAllManagedModulesForAllRequests="true">
- <remove name="WebDAVModule"/> <!-- add this -->
- </modules>
- <handlers>
- <remove name="WebDAV" />
- ...
- </handlers>
- <configuation>
- <system.webServer>
- <handlers>
- <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
- <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
- <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
- <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
- <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
- <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
- </handlers>
- </system.webServer>
- </configuration>
- PUT http://www.fluff.com/api/Fluff/123 HTTP/1.1
- Host: www.fluff.com
- Content-Length: 11
- {"Data":"1"}
- <system.webServer>
- <modules runAllManagedModulesForAllRequests="true">
- <remove name="WebDAVModule"/> <!-- add this -->
- </modules>
- <handlers>
- <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
- <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
- <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
- <remove name="WebDAV" />
- <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
- <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
- <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
- </handlers>
- </system.webServer>
- public async Task<IHttpActionResult> SetAmountOnEntry(string id, [FromBody]int amount)
- public async Task<IHttpActionResult> UpdateEntry(string id, MyEntry entry)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement