Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

UsersController.cs 3.5KB

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