Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /api/orders/{orderId}/status
- public class OrderStatusController : ApiController
- {
- private readonly IOrderStatusApiService _apiService;
- public OrderStatusController(IOrderStatusApiService apiService)
- {
- _apiService = apiService;
- }
- public OrderStatusModel Get(int orderId)
- {
- return _apiService.Get(orderId);
- }
- public OrderStatusModel Put(int orderId, [FromBody]OrderStatusModel orderStatus)
- {
- return _apiService.Update(orderId, orderStatus);
- }
- }
- public class OrderStatusModel
- {
- public string Note { get; set; }
- public OrderStatusEnum Status { get; set; }
- public DateTime TimeStamp { get; set; }
- public string ChangedBy { get; set; }
- }
- public enum OrderStatusEnum
- {
- Requested = 1,
- Processing = 2,
- //... others
- Done = 99
- }
- public interface IOrderStatusApiService
- {
- OrderStatusModel Get(int orderId);
- OrderStatusModel Update(int orderId, OrderStatusModel orderStatus);
- }
- public class OrderStatusApiService : IOrderStatusApiService
- {
- private readonly IOrderStatusAppService _appService;
- public OrderStatusApiService(IOrderStatusAppService appService)
- {
- _appService = appService;
- }
- public OrderStatusModel Get(int orderId)
- {
- return _appService.Get(orderId).ToResourceModel();
- }
- public OrderStatusModel Update(int orderId, OrderStatusModel order)
- {
- var currentState = _appService.Get(orderId).ToResourceModel();
- if (currentState.Status != order.Status)
- {
- return _appService
- .UpdateStatus(orderId, (OrderStatusEnumDto)order.Status, order.Note)
- .ToResourceModel();
- }
- return currentState;
- }
- }
- public interface IOrderStatusAppService
- {
- OrderStatusDto Get(int orderId);
- OrderStatusDto UpdateStatus(int orderId, OrderStatusEnum orderStatusStatus, string orderStatusNote);
- }
- public static class OrderStatusExtensions
- {
- public static OrderStatusModel ToResourceModel(this OrderStatusDto dto)
- {
- return new OrderStatusModel()
- {
- ChangedBy = dto.ChangedBy,
- Note = dto.Note,
- Status = dto.Status,
- TimeStamp = dto.TimeStamp
- };
- }
- }
- public class OrderStatusDto
- {
- public string Note { get; set; }
- public OrderStatusEnumDto Status { get; set; }
- public DateTime TimeStamp { get; set; }
- public string ChangedBy { get; set; }
- }
- public enum OrderStatusEnumDto
- {
- Requested = 1,
- Processing = 2,
- //... others
- Done = 99
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement