namespace Brizco.Repository.Handlers.Sections; public class DeleteSectionCommandHandler : IRequestHandler { private readonly IRepositoryWrapper _repositoryWrapper; public DeleteSectionCommandHandler(IRepositoryWrapper repositoryWrapper) { _repositoryWrapper = repositoryWrapper; } public async Task Handle(DeleteSectionCommand request, CancellationToken cancellationToken) { var section = await _repositoryWrapper.SetRepository
() .TableNoTracking .FirstOrDefaultAsync(s => s.Id == request.Id, cancellationToken); if (section == null) throw new AppException("Section not found", ApiResultStatusCode.NotFound); var positions = await _repositoryWrapper.SetRepository() .TableNoTracking .Where(p => p.SectionId == section.Id) .CountAsync(cancellationToken); if (positions > 0) throw new AppException("این سکشن پوزیشن فعال دارد ، نخست پوزیشن های سکشن را حذف کرده یا منتقل کنید"); _repositoryWrapper.SetRepository
() .Delete(section); await _repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } }