using Housewives.Api.Entities; using Housewives.Api.Extensions; using Housewives.Api.Repositories.Contracts; using Housewives.Models.Dtos; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Housewives.Api.Controllers { [Route("api/[controller]")] [ApiController] public class HousewifeController : ControllerBase { private readonly IHousewifeRepository housewifeRepository; public HousewifeController(IHousewifeRepository housewifeRepository) { this.housewifeRepository = housewifeRepository; } [HttpGet] public async Task>> GetHousewives() { try { var housewives = await this.housewifeRepository.GetHousewives(); var quotes = await this.housewifeRepository.GetQuotes(); if (housewives == null || quotes == null) { return NotFound(); } else { var housewifeDtos = housewives.ConvertToDto(); return Ok(housewifeDtos); } } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } [HttpGet] [Route(nameof(GetQuotes))] public async Task>> GetQuotes() { try { var housewives = await this.housewifeRepository.GetHousewives(); var quotes = await this.housewifeRepository.GetQuotes(); if (housewives == null || quotes == null) { return NotFound(); } else { var quoteDtos = quotes.ConvertToDto(); return Ok(quoteDtos); } } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } [HttpGet("GetQuotesByHousewife")] public async Task>> GetQuotesById(int housewifeId) { try { var quotes = await this.housewifeRepository.GetQuotesById(housewifeId); if (quotes == null) { return NotFound(); } else { var quoteDtos = quotes.ConvertToDto(); return Ok(quoteDtos); } } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } } }