Api/NetinaShop.Core/CoreServices/SearchService.cs

33 lines
1.3 KiB
C#

using NetinaShop.Domain.Entities.ProductCategories;
namespace NetinaShop.Core.CoreServices;
public class SearchService : ISearchService
{
private readonly IRepositoryWrapper _repositoryWrapper;
public SearchService(IRepositoryWrapper repositoryWrapper)
{
_repositoryWrapper = repositoryWrapper;
}
public async Task<SearchResponseDto> SearchAsync(string name, CancellationToken cancellationToken = default)
{
var products = await _repositoryWrapper.SetRepository<Product>()
.TableNoTracking
.Where(p => p.PersianName.Trim().ToLower().Contains(name.Trim().ToLower()))
.Select(ProductMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
var categories = await _repositoryWrapper.SetRepository<ProductCategory>()
.TableNoTracking
.Where(p => p.Name.Trim().ToLower().Contains(name.Trim().ToLower()))
.Select(ProductCategoryMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
return new SearchResponseDto
{
Products = products.Select(p => p.Adapt<SearchedProductResponseDto>()).ToList(),
Categories = categories.Select(c => c.Adapt<SearchedProductCategoryResponseDto>()).ToList()
};
}
}