using Microsoft.AspNetCore.Mvc; using GrossesMitainesAPI.Models; using System.Linq; using GrossesMitainesAPI.Data; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; namespace GrossesMitainesAPI.Controllers; [EnableCors("_myAllowSpecificOrigins")] [ApiController, Route("api/[controller]")] public class SearchController : Controller { private readonly ILogger _logger; private readonly InventoryContext _context; public SearchController(ILogger logger, InventoryContext context) { _logger = logger; _context = context; } [EnableCors("_myAllowSpecificOrigins")] [HttpPost(Name = "Search")] public IEnumerable Post(string query, bool? preview) { const int PREVIEW = 3; HashSet products = new(); query = query.Trim(); try { // Pour faire une liste priorisée. if (preview.HasValue && preview == true) products = _context.Products.Where(x => x.Title.Contains(query)).Take(PREVIEW).ToHashSet(); else { products.Concat(_context.Products.Where(x => x.Title.Contains(query)).ToHashSet()); products.Concat(_context.Products.Where(x => x.Category.Contains(query)).ToHashSet()); products.Concat(_context.Products.Where(x => x.Description.Contains(query)).ToHashSet()); } } catch (Exception e) { _logger.LogError(8, e.Message); } return products; } }