using Microsoft.EntityFrameworkCore; using Netina.Common.Models.Api; using Netina.Common.Models.Exception; using Netina.Domain.CommandQueries.Queries; using Netina.Domain.Dtos.SmallDtos; using Netina.Domain.Entities.Warehouses; using Netina.Repository.Repositories.Base.Contracts; namespace Netina.Repository.Handlers.Warehouses; public class GetShippingQueryHandler : IRequestHandler { private readonly IRepositoryWrapper _repositoryWrapper; public GetShippingQueryHandler(IRepositoryWrapper repositoryWrapper) { _repositoryWrapper = repositoryWrapper; } public async Task Handle(GetShippingQuery request, CancellationToken cancellationToken) { var shippingMethod = await _repositoryWrapper.SetRepository().TableNoTracking.Where(b => b.Id == request.Id) .Select(ShippingMapper.ProjectToSDto) .FirstOrDefaultAsync(cancellationToken); if (shippingMethod == null) throw new AppException("Shipping method not found", ApiResultStatusCode.NotFound); return shippingMethod; } }