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();
}
}
}