PageRenderTime 55ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Server/DeviceHive.API/Controllers/EquipmentController.cs

https://github.com/oryol/devicehive-.net
C# | 106 lines | 61 code | 11 blank | 34 comment | 14 complexity | 84adbf1058511d951c513340dc16db1b MD5 | raw file
Possible License(s): MIT
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Web.Http;
  7. using DeviceHive.API.Filters;
  8. using DeviceHive.API.Mapping;
  9. using DeviceHive.Data.Model;
  10. using Newtonsoft.Json.Linq;
  11. namespace DeviceHive.API.Controllers
  12. {
  13. /// <resource cref="Equipment" />
  14. [AuthorizeUser(Roles = "Administrator")]
  15. public class EquipmentController : BaseController
  16. {
  17. public HttpResponseMessage Get(int deviceClassId)
  18. {
  19. return HttpResponse(HttpStatusCode.MethodNotAllowed, "The method is not allowed");
  20. }
  21. /// <name>get</name>
  22. /// <summary>
  23. /// Gets information about particular equipment of the device class.
  24. /// </summary>
  25. /// <param name="deviceClassId">Device class identifier.</param>
  26. /// <param name="id">Equipment identifier.</param>
  27. /// <returns cref="Equipment">If successful, this method returns an <see cref="Equipment"/> resource in the response body.</returns>
  28. public JObject Get(int deviceClassId, int id)
  29. {
  30. var equipment = DataContext.Equipment.Get(id);
  31. if (equipment == null || equipment.DeviceClassID != deviceClassId)
  32. ThrowHttpResponse(HttpStatusCode.NotFound, "Equipment not found!");
  33. return Mapper.Map(equipment);
  34. }
  35. /// <name>insert</name>
  36. /// <summary>
  37. /// Creates new equipment in the device class.
  38. /// </summary>
  39. /// <param name="deviceClassId">Device class identifier.</param>
  40. /// <param name="json" cref="Equipment">In the request body, supply an <see cref="Equipment"/> resource.</param>
  41. /// <returns cref="Equipment">If successful, this method returns an <see cref="Equipment"/> resource in the response body.</returns>
  42. [HttpCreatedResponse]
  43. public JObject Post(int deviceClassId, JObject json)
  44. {
  45. var deviceClass = DataContext.DeviceClass.Get(deviceClassId);
  46. if (deviceClass == null)
  47. ThrowHttpResponse(HttpStatusCode.NotFound, "Device class not found!");
  48. var equipment = Mapper.Map(json);
  49. equipment.DeviceClass = deviceClass;
  50. Validate(equipment);
  51. DataContext.Equipment.Save(equipment);
  52. return Mapper.Map(equipment);
  53. }
  54. /// <name>update</name>
  55. /// <summary>
  56. /// Updates an existing equipment in the device class.
  57. /// </summary>
  58. /// <param name="deviceClassId">Device class identifier.</param>
  59. /// <param name="id">Equipment identifier.</param>
  60. /// <param name="json" cref="Equipment">In the request body, supply an <see cref="Equipment"/> resource.</param>
  61. /// <returns cref="Equipment">If successful, this method returns an <see cref="Equipment"/> resource in the response body.</returns>
  62. /// <request>
  63. /// <parameter name="name" required="false" />
  64. /// <parameter name="code" required="false" />
  65. /// <parameter name="type" required="false" />
  66. /// </request>
  67. public JObject Put(int deviceClassId, int id, JObject json)
  68. {
  69. var equipment = DataContext.Equipment.Get(id);
  70. if (equipment == null || equipment.DeviceClassID != deviceClassId)
  71. ThrowHttpResponse(HttpStatusCode.NotFound, "Equipment not found!");
  72. Mapper.Apply(equipment, json);
  73. Validate(equipment);
  74. DataContext.Equipment.Save(equipment);
  75. return Mapper.Map(equipment);
  76. }
  77. /// <name>delete</name>
  78. /// <summary>
  79. /// Deletes an existing equipment in the device class.
  80. /// </summary>
  81. /// <param name="deviceClassId">Device class identifier.</param>
  82. /// <param name="id">Equipment identifier.</param>
  83. [HttpNoContentResponse]
  84. public void Delete(int deviceClassId, int id)
  85. {
  86. var equipment = DataContext.Equipment.Get(id);
  87. if (equipment != null && equipment.DeviceClassID == deviceClassId)
  88. DataContext.Equipment.Delete(id);
  89. }
  90. private IJsonMapper<Equipment> Mapper
  91. {
  92. get { return GetMapper<Equipment>(); }
  93. }
  94. }
  95. }