using System; using System.Threading; using System.Threading.Tasks; using ErsatzTV.Core; using ErsatzTV.Core.Domain.Filler; using ErsatzTV.Infrastructure.Data; using LanguageExt; using MediatR; using Microsoft.EntityFrameworkCore; using Unit = LanguageExt.Unit; namespace ErsatzTV.Application.Filler.Commands { public class CreateFillerPresetHandler : IRequestHandler> { private readonly IDbContextFactory _dbContextFactory; public CreateFillerPresetHandler(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; } public async Task> Handle(CreateFillerPreset request, CancellationToken cancellationToken) { try { await using TvContext dbContext = _dbContextFactory.CreateDbContext(); var fillerPreset = new FillerPreset { Name = request.Name, FillerKind = request.FillerKind, FillerMode = request.FillerMode, Duration = request.Duration, Count = request.Count, PadToNearestMinute = request.PadToNearestMinute, CollectionType = request.CollectionType, CollectionId = request.CollectionId, MediaItemId = request.MediaItemId, MultiCollectionId = request.MultiCollectionId, SmartCollectionId = request.SmartCollectionId }; await dbContext.FillerPresets.AddAsync(fillerPreset, cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); return Unit.Default; } catch (Exception ex) { return BaseError.New(ex.Message); } } } }