using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using QuotifyBE.Data; using QuotifyBE.Entities; namespace QuotifyBE.Controllers { [ApiController] [Route("controller")] public class QuotesController_2 : ControllerBase { private readonly ApplicationDbContext _db; public QuotesController_2(ApplicationDbContext db) { _db = db; } [HttpGet] [AllowAnonymous] public async Task GetRandomQuote() { var totalQuotes = await _db.Quotes.CountAsync(); if (totalQuotes == 0) return NotFound(new { status = "error", error_msg = "brak cytatow" }); var random = new Random(); var skip = random.Next(0, totalQuotes); var quote = await _db.Quotes .Include(q => q.QuoteCategories) .ThenInclude(qc => qc.Category) .Skip(skip) .Take(1) .FirstOrDefaultAsync(); if (quote == null) return NotFound(); Image? image = null; if (quote.ImageId != 0) { image = await _db.Images.FirstOrDefaultAsync(i => i.Id == quote.ImageId); } var dto = new RandomQuote { Text = quote.Text, Author = quote.Author, ImageUrl = image?.Url, Categories = quote.QuoteCategories? .Select(qc => qc.Category?.Name ?? "") .Where(name => !string.IsNullOrEmpty(name)) .ToList() ?? new List() }; return Ok(dto); } } }