Basic create command and handler for whiteboard
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
using System.Windows.Input;
|
||||||
|
using AipsCore.Application.Abstract.Command;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||||
|
|
||||||
|
namespace AipsCore.Application.Models.Whiteboard.Command.CreateWhiteboard;
|
||||||
|
|
||||||
|
public record CreateWhiteboardCommand(string OwnerId, string Title) : ICommand<WhiteboardId>;
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using AipsCore.Application.Abstract.Command;
|
||||||
|
using AipsCore.Domain.Abstract;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.External;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||||
|
|
||||||
|
namespace AipsCore.Application.Models.Whiteboard.Command.CreateWhiteboard;
|
||||||
|
|
||||||
|
public class CreateWhiteboardCommandHandler : ICommandHandler<CreateWhiteboardCommand, WhiteboardId>
|
||||||
|
{
|
||||||
|
private readonly IWhiteboardRepository _whiteboardRepository;
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public CreateWhiteboardCommandHandler(IWhiteboardRepository whiteboardRepository, IUnitOfWork unitOfWork)
|
||||||
|
{
|
||||||
|
_whiteboardRepository = whiteboardRepository;
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<WhiteboardId> Handle(CreateWhiteboardCommand command, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
WhiteboardCode whiteboardCode;
|
||||||
|
bool codeExists;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
whiteboardCode = GenerateUniqueWhiteboardCode();
|
||||||
|
|
||||||
|
codeExists = await _whiteboardRepository.WhiteboardCodeExists(whiteboardCode);
|
||||||
|
} while (codeExists);
|
||||||
|
|
||||||
|
var whiteboard = Domain.Models.Whiteboard.Whiteboard.Create(command.OwnerId, whiteboardCode.CodeValue, command.Title);
|
||||||
|
|
||||||
|
await _whiteboardRepository.Save(whiteboard, cancellationToken);
|
||||||
|
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
|
return whiteboard.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TRENUTNO SAMO, CE SE NAPRAVI KO SERVIS IL KAKO VEC KASNIJE
|
||||||
|
private static WhiteboardCode GenerateUniqueWhiteboardCode()
|
||||||
|
{
|
||||||
|
var rng = new Random();
|
||||||
|
char[] result = new char[8];
|
||||||
|
|
||||||
|
for (int i = 0; i < result.Length; i++)
|
||||||
|
{
|
||||||
|
result[i] = (char)('0' + rng.Next(0, 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new WhiteboardCode(new string(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user