using Netina.Core.CoreServices.Abstracts; namespace Netina.Api.Controller; public class SearchController : ICarterModule { public void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("Search").MapGroup("api/search"); group.MapGet("", SearchAsync) .WithDisplayName("Search Async") .HasApiVersion(1.0); group.MapGet("zarehbin", ZarehbinAsync) .WithDisplayName("Search Async") .HasApiVersion(1.0); } private async Task SearchAsync([FromQuery] string name, [FromServices] ISearchService searchService, CancellationToken cancellationToken) => TypedResults.Ok(await searchService.SearchAsync(name, cancellationToken)); private async Task ZarehbinAsync([FromQuery] string? product_id, [FromQuery] int? page, [FromServices] ISearchService searchService, CancellationToken cancellationToken) { if (product_id == null) { if (page == null) return TypedResults.Ok(await searchService.ZarehbinAsync(0, cancellationToken)); else return TypedResults.Ok(await searchService.ZarehbinAsync(page.Value, cancellationToken)); } else return TypedResults.Ok(await searchService.ZarehbinAsync(Guid.Parse(product_id), cancellationToken)); } }