Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

UsersController.cs 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using BlackRock.Reporting.API.Mediator;
  2. using BlackRock.Reporting.API.Mediator.Model;
  3. using MediatR;
  4. using Microsoft.AspNetCore.Mvc;
  5. namespace BlackRock.Reporting.API.Controllers
  6. {
  7. [Route("api/users")]
  8. public class UsersController : Controller
  9. {
  10. private readonly IMediator mediator;
  11. public UsersController(IMediator mediator)
  12. {
  13. this.mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
  14. }
  15. // GET: api/users/1
  16. [HttpGet]
  17. [Route("api/users/{id}")]
  18. public async Task<IActionResult> GetUser(int id)
  19. {
  20. var result = await mediator.Send(new GetUsersQuery(id));
  21. if (!result.IsSuccess)
  22. return BadRequest(result.Error);
  23. if (result.Data == null)
  24. return NotFound("Id is not valid");
  25. return Ok(result.Data);
  26. }
  27. // GET: api/users?Page=2&PageSize=25
  28. [HttpGet]
  29. [Route("api/users")]
  30. public async Task<IActionResult> GetAllUsers(GetAllUsersQuery query)
  31. {
  32. var result = await mediator.Send(query);
  33. if (!result.IsSuccess)
  34. return BadRequest(result.Error);
  35. if (result.Data == null)
  36. return NotFound("Id is not valid");
  37. return Ok(result.Data);
  38. }
  39. // POST: api/users
  40. [HttpPost]
  41. [Route("api/users")]
  42. public async Task<IActionResult> CreateUser([FromBody] CreateUsersCommand user)
  43. {
  44. if (!ModelState.IsValid)
  45. return BadRequest(ModelState);
  46. var result = await mediator.Send(user);
  47. if (!result.IsSuccess)
  48. return BadRequest(result.Error);
  49. // return Created(Url.Action(nameof(Get), result.Data), result.Data);
  50. return Ok(result.Data);
  51. }
  52. // PUT: api/users/1
  53. [HttpPut]
  54. [Route("api/users/{id}")]
  55. public async Task<IActionResult> UpdateAllUser(int id, [FromBody] UserCommand user)
  56. {
  57. if (!ModelState.IsValid)
  58. return BadRequest(ErrorResponse.Validation(ModelState));
  59. var result = await mediator.Send(new UpdateAllUsersCommand(id,user));
  60. if (!result.IsSuccess)
  61. return BadRequest(result.Error);
  62. return Accepted();
  63. }
  64. // PATCH: api/users/1/email
  65. [HttpPatch]
  66. [Route("api/users/{id}/email")]
  67. public async Task<IActionResult> UpdateUserEmail(int id, [FromBody] UserCommand user)
  68. {
  69. if (!ModelState.IsValid)
  70. return BadRequest(ErrorResponse.Validation(ModelState));
  71. var result = await mediator.Send(new UpdateEmailUsersCommand(id, user));
  72. if (!result.IsSuccess)
  73. return BadRequest(result.Error);
  74. return Accepted();
  75. }
  76. // DELETE: api/users/1
  77. [HttpDelete]
  78. [Route("api/users/{id}")]
  79. public async Task<IActionResult> DeleteUser(int id)
  80. {
  81. if (!ModelState.IsValid)
  82. return BadRequest(ErrorResponse.Validation(ModelState));
  83. var result = await mediator.Send(new DeleteUsersCommand(id));
  84. if (!result.IsSuccess)
  85. return BadRequest(result.Error);
  86. return NoContent();
  87. }
  88. }
  89. // I/O
  90. // Output: DTO : Entity wraper, Agregations
  91. // Input: Query / Form
  92. }