using LiteCqrs; using Microsoft.EntityFrameworkCore; using TeleWave.Application.Common.Interfaces; using TeleWave.Application.Common.Models; namespace TeleWave.Application.Broadcast.Bumpers; public sealed class RemoveBumperTextVariantCommandHandler(IAppDbContext dbContext) : ICommandHandler { public async Task Handle( RemoveBumperTextVariantCommand command, CancellationToken cancellationToken ) { var channel = await dbContext .Channels.Include(c => c.BumperTemplates) .ThenInclude(t => t.Variants) .AsSplitQuery() .FirstOrDefaultAsync(c => c.Id == command.ChannelId, cancellationToken); if (channel is null) return Result.Failure(ChannelErrors.NotFound); var template = channel.FindBumperTemplate(command.TemplateId); if (template is null) return Result.Failure(ChannelErrors.BumperTemplateNotFound); if (template.FindVariant(command.VariantId) is null) return Result.Failure(ChannelErrors.BumperTextVariantNotFound); return template.RemoveVariant(command.VariantId) ? Result.Success() : Result.Failure(ChannelErrors.CannotRemoveLastBumperTextVariant); } }