namespace Diligent.WebAPI.Host.Controllers.V2
{
[ExcludeFromCodeCoverage]
[ApiVersion("2.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();
}
}
}