30 lines
912 B
C#
30 lines
912 B
C#
using LiteCqrs;
|
|
using TeleWave.Application.Common.Interfaces;
|
|
using TeleWave.Application.Common.Models;
|
|
|
|
namespace TeleWave.Application.Programming.Templates.Junctions;
|
|
|
|
public sealed class RemoveJunctionElementCommandHandler(IAppDbContext dbContext)
|
|
: ICommandHandler<RemoveJunctionElementCommand, Result>
|
|
{
|
|
public async Task<Result> Handle(
|
|
RemoveJunctionElementCommand command,
|
|
CancellationToken cancellationToken
|
|
)
|
|
{
|
|
var junction = await JunctionLoader.LoadAsync(
|
|
dbContext,
|
|
command.JunctionId,
|
|
cancellationToken
|
|
);
|
|
if (junction is null || !junction.RemoveElement(command.ElementId))
|
|
return Result.Failure(TemplateErrors.JunctionElementNotFound);
|
|
|
|
return await JunctionLoader.MarkTemplateChangedAsync(
|
|
dbContext,
|
|
junction,
|
|
cancellationToken
|
|
);
|
|
}
|
|
}
|