using DamageAssesment.Api.Answers.Interfaces; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace DamageAssesment.Api.Answers.Controllers { [ApiController] public class AnswersController: ControllerBase { private IAnswersProvider answerProvider; public AnswersController(IAnswersProvider answersProvider) { this.answerProvider=answersProvider; } /// /// Get all answers /// [Authorize(Roles = "admin")] [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. /// [Authorize(Roles = "admin")] [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. /// [Authorize(Roles = "admin")] [HttpGet("Answers/ByResponse/{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. /// [Authorize(Roles = "admin")] [HttpGet("Answers/ByQuestion/{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. /// [Authorize(Roles = "admin")] [HttpPut("Answers")] public async Task UpdateAnswer(Models.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. /// [Authorize(Roles = "admin")] [HttpPost("Answers")] public async Task CreateAnswer(Models.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. /// [Authorize(Roles = "admin")] [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(); } } }