using DamageAssesment.Api.Answers.Interfaces; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Any; namespace DamageAssesment.Api.Answers.Controllers { [Route("api")] [ApiController] public class AnswersController: ControllerBase { private IAnswersProvider answerProvider; public AnswersController(IAnswersProvider answersProvider) { this.answerProvider=answersProvider; } /// /// Get all answers /// [HttpGet("Answers")] public async Task GetAnswersAsync() { var result = await answerProvider.GetAnswersAsync(); if(result.IsSuccess) { return Ok(result.Answers); } return NoContent(); } /// /// Get an answer based on answerId. /// [HttpGet("Answers/{Id}")] public async Task GetAnswerByIdAsync(int Id) { var result = await answerProvider.GetAnswerByIdAsync(Id); if (result.IsSuccess) { return Ok(result.Answer); } return NotFound(); } /// /// Get all answers based on responseId. /// [HttpGet("AnswersByResponse/{ResponseId}")] public async Task GetAnswersByResponseId(int ResponseId) { var result = await this.answerProvider.GetAnswersAsync(ResponseId); if(result.IsSuccess) { return Ok(result.Answers); } return NoContent(); } /// /// Get all answers based on questionId. /// [HttpGet("AnswersByQuestion/{QuestionId}")] public async Task AnswersByQuestionId(int QuestionId) { var result = await this.answerProvider.GetAnswersByQuestionAsync(QuestionId); if (result.IsSuccess) { return Ok(result.Answers); } return NotFound(); } /// /// Update an existing answer. /// [HttpPut("Answers")] public async Task UpdateAnswer(Db.Answer answer) { if (answer != null) { var result = await this.answerProvider.UpdateAnswerAsync(answer); if (result.IsSuccess) { return Ok(result.Answer); } if (result.ErrorMessage == "Not Found") return NotFound(result.ErrorMessage); return BadRequest(result.ErrorMessage); } return NotFound(); } /// /// Save a new answer. /// [HttpPost("Answers")] public async Task CreateAnswer(Db.Answer answer) { if (answer != null) { var result = await this.answerProvider.PostAnswerAsync(answer); if (result.IsSuccess) { return Ok(result.Answer); } return BadRequest(result.ErrorMessage); } return CreatedAtRoute("DefaultApi", new { id = answer.Id }, answer); } /// /// Delete an existing answer. /// [HttpDelete("Answers/{id}")] public async Task DeleteAnswer(int id) { var result = await this.answerProvider.DeleteAnswerAsync(id); if (result.IsSuccess) { return Ok(result.Answer); } return NotFound(); } } }