namespace Diligent.WebAPI.Host.Controllers.V1 { [ExcludeFromCodeCoverage] [ApiVersion("1.0")] [ApiController] [Route("v{version:apiVersion}/insurance-policies")] public class InsurancePoliciesController : ControllerBase { private readonly IInsurancePoliciesService _insurancePoliciesService; private readonly IMapper _mapper; public InsurancePoliciesController(IInsurancePoliciesService insurancePoliciesService, IMapper mapper) { _insurancePoliciesService = insurancePoliciesService; _mapper = mapper; } /// /// Get list of all insurance policies /// [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] public async Task GetInsurancePolicies() { return Ok(await _insurancePoliciesService.GetInsurancePolicies()); } /// /// Get insurance policy by id /// [HttpGet("{id}")] [ProducesResponseType(typeof(InsurancePolicyViewDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> GetInsurancePolicy(long id) { return Ok(await _insurancePoliciesService.GetInsurancePolicy(id)); } /// /// Create insurance policy /// [HttpPost] [ProducesResponseType(StatusCodes.Status201Created)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] public async Task CreateInsurancePolicy(InsurancePolicyCreateDto InsurancePolicyCreateDto) { await _insurancePoliciesService.CreateInsurancePolicy(InsurancePolicyCreateDto); return StatusCode((int)HttpStatusCode.Created); } /// /// Update insurance policy /// [HttpPut("{id}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task UpdateInsurancePolicy(long id, InsurancePolicyUpdateDto insurancePolicyUpdateDTO) { await _insurancePoliciesService.UpdateInsurancePolicy(id, insurancePolicyUpdateDTO); return Ok(); } /// /// Delete the specific insurance policy /// [HttpDelete("{id}")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(typeof(ErrorResponseDto), StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task DeleteInsurancePolicy(long id) { await _insurancePoliciesService.DeleteInsurancePolicy(id); return NoContent(); } } }