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