namespace Diligent.WebAPI.Host.Controllers.V2 { [ApiVersion("2.0")] [ApiController] [Route("v{version:apiVersion}/insurers")] public class InsurersController : ControllerBase { private readonly IInsurersService _insurersService; public InsurersController(IInsurersService insurers) { _insurersService = insurers; } /// /// Get list of all insusers /// [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] public async Task GetInsurers() { return Ok(await _insurersService.GetInsurers()); } /// /// Get insurer by id /// [HttpGet("{id}")] [ProducesResponseType(typeof(InsurerViewDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task GetInsurer(long id) { return Ok(await _insurersService.GetInsurer(id)); } /// /// Create insurer /// [HttpPost] [ProducesResponseType(StatusCodes.Status201Created)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] public async Task CreateInsurer([FromBody] InsurerCreateDto insurerCreateDto) { await _insurersService.CreateInsurer(insurerCreateDto); return StatusCode((int)HttpStatusCode.Created); } /// /// Update insurer /// [HttpPut("{id}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task UpdateInsurer(long id, [FromBody] InsurerUpdateDto insurerUpdateDto) { await _insurersService.UpdateInsurer(id, insurerUpdateDto); return Ok(); } /// /// Delete insurer /// [HttpDelete("{id}")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task DeleteInsurer(long insurerId) { await _insurersService.DeleteInsurerAsync(insurerId); return NoContent(); } } }