namespace Diligent.WebAPI.Host.Controllers.V1
{
[ExcludeFromCodeCoverage]
[ApiVersion("1.0")]
[ApiController]
[Route("v{version:apiVersion}/insurance-companies")]
public class InsuranceCompaniesController : ControllerBase
{
private readonly IInsuranceCompaniesService _insuranceCompaniesService;
public InsuranceCompaniesController(IInsuranceCompaniesService insuranceCompaniesService)
{
_insuranceCompaniesService = insuranceCompaniesService;
}
///
/// Get list of all insurance companies
///
[HttpGet]
[ProducesResponseType(typeof(List), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)]
public async Task GetInsuranceCompanies()
{
return Ok(await _insuranceCompaniesService.GetInsuranceCompanies());
}
///
/// Get insurance company by id
///
[HttpGet("{id}")]
[ProducesResponseType(typeof(InsuranceCompanyViewDto), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task GetInsuranceCompany(long id)
{
return Ok(await _insuranceCompaniesService.GetInsuranceCompany(id));
}
///
/// Create insurance company
///
[HttpPost]
[ProducesResponseType(typeof(InsuranceCompanyViewDto), StatusCodes.Status201Created)]
[ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)]
public async Task CreateInsuranceCompany([FromBody] InsuranceCompanyCreateDto insuranceCompanyCreateDto)
{
await _insuranceCompaniesService.CreateInsuranceCompany(insuranceCompanyCreateDto);
return StatusCode((int)HttpStatusCode.Created);
}
///
/// Update insurance company
///
[HttpPut("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task UpdateInsuranceCompany(long id, [FromBody] InsuranceCompanyUpdateDto insuranceCompanyUpdateDto)
{
await _insuranceCompaniesService.UpdateInsuranceCompany(id, insuranceCompanyUpdateDto);
return Ok();
}
///
/// Delete the specific insurance company
///
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task DeleteInsuranceCompany(long id)
{
await _insuranceCompaniesService.DeleteInsuranceCompany(id);
return NoContent();
}
}
}