Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

UsersController.cs 3.6KB

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