| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using BlackRock.Reporting.API.Mediator;
- using BlackRock.Reporting.API.Models;
- using MediatR;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.ModelBinding;
-
- namespace BlackRock.Reporting.API.Controllers
- {
- [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("api/users/{id}")]
- public async Task<IActionResult> Get(Guid id)
- {
- var result = await mediator.Send(new GetUsersQuery(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]
- [Route("api/users")]
- public async Task<IActionResult> GetAll(UserQuery filter)
- {
- var result = await mediator.Send(new GetAllUsersQuery(filter));
-
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- if (result.Data == null)
- return NotFound("Id is not valid");
-
- return Ok(result.Data);
- }
- // POST: api/users
- [HttpPost]
- [Route("api/users")]
- public async Task<IActionResult> Post([FromBody] UserForm form)
- {
- if (!ModelState.IsValid)
- return BadRequest(ModelState);
-
- var result = await mediator.Send(new CreateUsersCommand(form));
-
- 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("api/users/{id}")]
- public async Task<IActionResult> Put(Guid id, [FromBody] UserForm form)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
-
- var result = await mediator.Send(new UpdateAllUsersCommand(id, form));
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return Accepted();
- }
- // PATCH: api/users/1/email
- [HttpPatch]
- [Route("api/users/{id}/email")]
- public async Task<IActionResult> UpdateEmail(Guid id, [FromBody] UserForm form)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
-
- var result = await mediator.Send(new UpdateEmailUsersCommand(id, form));
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return Accepted();
- }
- // DELETE: api/users/1
- [HttpDelete]
- [Route("api/users/{id}")]
- public async Task<IActionResult> Delete(Guid id)
- {
- if (!ModelState.IsValid)
- return BadRequest(ErrorResponse.Validation(ModelState));
-
- var result = await mediator.Send(new DeleteUsersCommand(id));
- if (!result.IsSuccess)
- return BadRequest(result.Error);
-
- return NoContent();
- }
- }
-
- public class ErrorResponse
- {
- public IEnumerable<string> Errors { get; set; }
- public Enum StatusCode { get; set; }
- public ModelStateDictionary Validations { get; set; }
-
- public static ErrorResponse Validation(ModelStateDictionary validations)
- {
- return new ErrorResponse
- {
- Validations = validations
- };
- }
- }
-
- // I/O
- // Output: DTO : Entity wraper, Agregations
- // Input: Query / Form
- }
|