23 lines
1.1 KiB
C#
23 lines
1.1 KiB
C#
using MediatR;
|
|
using Modules.Library.Application.Gateways;
|
|
using Modules.Library.Application.Models;
|
|
|
|
namespace Modules.Library.Application.Commands.Anime.Title;
|
|
|
|
public class CreateAnimeTitleCommand : IRequest<Guid>
|
|
{
|
|
public string NameOriginal { get; set; } = default!;
|
|
public Guid NameOriginalLanguageId { get; set; }
|
|
public MediaInfo? Preview { get; set; }
|
|
}
|
|
|
|
public class CreateAnimtTitleCommandHandler(IAnimeTitleGateway titleGateway, ILanguageGateway languageGateway) : IRequestHandler<CreateAnimeTitleCommand, Guid>
|
|
{
|
|
public async Task<Guid> Handle(CreateAnimeTitleCommand request, CancellationToken cancellationToken)
|
|
{
|
|
var language = await languageGateway.GetLanguageById(request.NameOriginalLanguageId);
|
|
var animeTitle = new Domain.Entities.MediaContent.Items.Anime.AnimeTitle(language.Id, request.NameOriginal);
|
|
if (request.Preview != null) animeTitle.CommonProperties.SetPreview(request.Preview.Url, (Domain.Entities.MediaInfoType)request.Preview.Type);
|
|
return await titleGateway.Create(animeTitle);
|
|
}
|
|
} |