/
bluesman66
/
clean-arch-example
Обзор
Документация
Войти
/
bluesman66
/
clean-arch-example
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/GymManagement.Application/Subscriptions/Commands/DeleteSubscription/DeleteSubscriptionCommandHandler.cs
54 строки
2 KB
paklin
Entities
19 янв 2025, 19:25
19 янв 2025, 19:25
8cf5f77
Код
Авторство
О чём код?
namespace GymManagement.Application.Subscriptions.Commands.DeleteSubscription; using ErrorOr; using MediatR; public class DeleteSubscriptionCommandHandler : IRequestHandler<DeleteSubscriptionCommand, ErrorOr<Deleted>> { private readonly ISubscriptionsRepository _subscriptionsRepository; private readonly IAdminsRepository _adminsRepository; private readonly IGymsRepository _gymsRepository; private readonly IUnitOfWork _unitOfWork; public DeleteSubscriptionCommandHandler( IAdminsRepository adminsRepository, ISubscriptionsRepository subscriptionsRepository, IUnitOfWork unitOfWork, IGymsRepository gymsRepository) { _adminsRepository = adminsRepository; _subscriptionsRepository = subscriptionsRepository; _unitOfWork = unitOfWork; _gymsRepository = gymsRepository; } public async Task<ErrorOr<Deleted>> Handle(DeleteSubscriptionCommand command, CancellationToken cancellationToken) { var subscription = await _subscriptionsRepository.GetByIdAsync(command.SubscriptionId); if (subscription is null) { return Error.NotFound(description: "Subscription not found"); } var admin = await _adminsRepository.GetByIdAsync(subscription.AdminId); if (admin is null) { return Error.Unexpected(description: "Admin not found"); } admin.DeleteSubscription(command.SubscriptionId); var gymsToDelete = await _gymsRepository.ListBySubscriptionIdAsync(command.SubscriptionId); await _adminsRepository.UpdateAsync(admin); await _subscriptionsRepository.RemoveSubscriptionAsync(subscription); await _gymsRepository.RemoveRangeAsync(gymsToDelete); await _unitOfWork.CommitChangesAsync(); return Result.Deleted; } }