using LiteCqrs; using Microsoft.EntityFrameworkCore; using TeleWave.Application.Common.Interfaces; using TeleWave.Application.Common.Models; namespace TeleWave.Application.Broadcast.Bumpers; public sealed class AddBumperTextVariantCommandHandler(IAppDbContext dbContext) : ICommandHandler> { public async Task> Handle( AddBumperTextVariantCommand 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); var name = string.IsNullOrWhiteSpace(command.Name) ? $"Текст {template.Variants.Count + 1}" : command.Name.Trim(); var variant = template.AddVariant(name); return Result.Success(variant.Id); } }