using Microsoft.AspNetCore.Mvc; using BlackRock.Reporting.API.Mediator.DocumentMediator; using BlackRock.Reporting.API.Core.Models; namespace BlackRock.Reporting.API.Controllers { //[Authorize] [Route("api/[controller]")] public class DocumentsController : ControllerBase { private readonly IDocumentMediator mediator; public DocumentsController(IDocumentMediator mediator) { this.mediator = mediator ?? throw new ArgumentNullException(nameof(mediator)); } // GET: api/documents/Page=2&PageSize=25 [HttpGet("{id}")] public async Task GetDocumentById(int id) { var result = await mediator.GetDocument(id); if (!result.IsSuccess) return BadRequest(); if (result.Data == null) return NotFound("Id is not valid"); return Ok(result.Data); } // GET: api/documents [HttpGet] public async Task GetDocuments(SortFilter query) { var result = await mediator.GetDocuments(query); if (!result.IsSuccess) return BadRequest(); if (result.Data == null) return NotFound(); return Ok(result.Data); } // POST: api/documents [HttpPost] public async Task CreateDocument([FromBody] CreateDocumentForm form) { if (!ModelState.IsValid) return BadRequest(ModelState); var result = await mediator.CreateDocument(form); if (!result.IsSuccess) return BadRequest(result.Error); return Ok(result.Data); } // PUT: api/documents/{id} [HttpPut] public async Task UpdateDocument(int id, [FromBody] UpdateDocumentForm form) { if (!ModelState.IsValid) return BadRequest(ModelState); //form.Id = id; var result = await mediator.UpdateDocument(form); if (!result.IsSuccess) return BadRequest(result.Error); return Accepted(); } // DELETE: api/documents/{id} [HttpDelete] public async Task DeleteDocument(int id) { var result = await mediator.DeleteDocument(id); if (!result.IsSuccess) return BadRequest(result.Error); return NoContent(); } } }