Advertisement
Guest User

Untitled

a guest
Aug 20th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. /api/orders/{orderId}/status
  2.  
  3. public class OrderStatusController : ApiController
  4. {
  5. private readonly IOrderStatusApiService _apiService;
  6.  
  7. public OrderStatusController(IOrderStatusApiService apiService)
  8. {
  9. _apiService = apiService;
  10. }
  11.  
  12. public OrderStatusModel Get(int orderId)
  13. {
  14. return _apiService.Get(orderId);
  15. }
  16.  
  17. public OrderStatusModel Put(int orderId, [FromBody]OrderStatusModel orderStatus)
  18. {
  19. return _apiService.Update(orderId, orderStatus);
  20. }
  21. }
  22.  
  23. public class OrderStatusModel
  24. {
  25. public string Note { get; set; }
  26.  
  27. public OrderStatusEnum Status { get; set; }
  28.  
  29. public DateTime TimeStamp { get; set; }
  30.  
  31. public string ChangedBy { get; set; }
  32. }
  33.  
  34. public enum OrderStatusEnum
  35. {
  36. Requested = 1,
  37.  
  38. Processing = 2,
  39.  
  40. //... others
  41.  
  42. Done = 99
  43. }
  44.  
  45. public interface IOrderStatusApiService
  46. {
  47. OrderStatusModel Get(int orderId);
  48.  
  49. OrderStatusModel Update(int orderId, OrderStatusModel orderStatus);
  50. }
  51.  
  52. public class OrderStatusApiService : IOrderStatusApiService
  53. {
  54. private readonly IOrderStatusAppService _appService;
  55.  
  56. public OrderStatusApiService(IOrderStatusAppService appService)
  57. {
  58. _appService = appService;
  59. }
  60.  
  61. public OrderStatusModel Get(int orderId)
  62. {
  63. return _appService.Get(orderId).ToResourceModel();
  64. }
  65.  
  66. public OrderStatusModel Update(int orderId, OrderStatusModel order)
  67. {
  68. var currentState = _appService.Get(orderId).ToResourceModel();
  69.  
  70. if (currentState.Status != order.Status)
  71. {
  72. return _appService
  73. .UpdateStatus(orderId, (OrderStatusEnumDto)order.Status, order.Note)
  74. .ToResourceModel();
  75. }
  76.  
  77. return currentState;
  78. }
  79. }
  80.  
  81. public interface IOrderStatusAppService
  82. {
  83. OrderStatusDto Get(int orderId);
  84.  
  85. OrderStatusDto UpdateStatus(int orderId, OrderStatusEnum orderStatusStatus, string orderStatusNote);
  86. }
  87.  
  88. public static class OrderStatusExtensions
  89. {
  90. public static OrderStatusModel ToResourceModel(this OrderStatusDto dto)
  91. {
  92. return new OrderStatusModel()
  93. {
  94. ChangedBy = dto.ChangedBy,
  95. Note = dto.Note,
  96. Status = dto.Status,
  97. TimeStamp = dto.TimeStamp
  98. };
  99. }
  100. }
  101.  
  102. public class OrderStatusDto
  103. {
  104. public string Note { get; set; }
  105.  
  106. public OrderStatusEnumDto Status { get; set; }
  107.  
  108. public DateTime TimeStamp { get; set; }
  109.  
  110. public string ChangedBy { get; set; }
  111. }
  112.  
  113. public enum OrderStatusEnumDto
  114. {
  115. Requested = 1,
  116.  
  117. Processing = 2,
  118.  
  119. //... others
  120.  
  121. Done = 99
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement