| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using BlackRock.Reporting.API.Controllers.Model;
- using BlackRock.Reporting.API.Mediator.UserMediator.Commands;
- using BlackRock.Reporting.API.Mediator.UserMediator.Queries;
- using MediatR;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
-
- namespace BlackRock.Reporting.API.Controllers
- {
- [Authorize]
- [Route("api/users")]
- public class UsersController : Controller
- {
- private readonly IMediator mediator;
-
- public UsersController(IMediator mediator)
- {
- this.mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
- }
-
- // GET: api/users/1
- [HttpGet]
- [Route("{id}")]
- public async Task<IActionResult> GetUser(int id)
- {
- var result = await mediator.Send(new GetUserQuery { Id = id });
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- if (result.Data == null)
- return NotFound("Id is not valid");
-
- return Ok(result.Data);
- }
- // GET: api/users?Page=2&PageSize=25
- [HttpGet]
- public async Task<IActionResult> GetAllUsers(GetAllUsersQuery query)
- {
- var result = await mediator.Send(query);
-
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- if (result.Data == null)
- return NotFound();
-
-
- return Ok(result.Data);
- }
- // POST: api/users
- [HttpPost]
- public async Task<IActionResult> CreateUser([FromBody] CreateUserCommand user)
- {
- if (!ModelState.IsValid)
- return BadRequest(ModelState);
-
- var result = await mediator.Send(user);
-
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- // return Created(Url.Action(nameof(Get), result.Data), result.Data);
- return Ok(result.Data);
- }
- // PUT: api/users/1
- [HttpPut]
- [Route("{id}")]
- public async Task<IActionResult> UpdateUser(int id, [FromBody] UpdateUserCommand user)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
- user.Id = id;
- var result = await mediator.Send(user);
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return Accepted();
- }
- // PATCH: api/users/1/email
- [HttpPatch]
- [Route("{id}/email")]
- public async Task<IActionResult> UpdateUserEmail(int id, [FromBody] UpdateUserEmailCommand user)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
-
- user.Id = id;
- var result = await mediator.Send(user);
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return Accepted();
- }
- // DELETE: api/users/1
- [HttpDelete]
- [Route("{id}")]
- public async Task<IActionResult> DeleteUser(int id)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
-
- var result = await mediator.Send(new DeleteUsersCommand { Id = id });
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return NoContent();
- }
- }
-
- // I/O
- // Output: DTO : Entity wraper, Agregations
- // Input: Query / Form
- }
|