Files
AIPS/dotnet/AipsRT/Services/MessagingService.cs
2026-02-17 00:48:28 +01:00

103 lines
3.3 KiB
C#

using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Common.Message.AddArrow;
using AipsCore.Application.Common.Message.AddLine;
using AipsCore.Application.Common.Message.AddRectangle;
using AipsCore.Application.Common.Message.AddTextShape;
using AipsCore.Application.Common.Message.MoveShape;
using AipsCore.Application.Models.Shape.Command.CreateArrow;
using AipsCore.Application.Models.Shape.Command.CreateLine;
using AipsCore.Application.Models.Shape.Command.CreateRectangle;
using AipsCore.Application.Models.Shape.Command.CreateTextShape;
using AipsCore.Application.Models.Shape.Command.MoveShape;
using AipsRT.Model.Whiteboard.Shapes;
using AipsRT.Services.Interfaces;
namespace AipsRT.Services;
public class MessagingService : IMessagingService
{
private readonly IMessagePublisher _messagePublisher;
public MessagingService(IMessagePublisher messagePublisher)
{
_messagePublisher = messagePublisher;
}
public async Task CreatedRectangle(Guid whiteboardId, Rectangle rectangle)
{
var command = new CreateRectangleCommand(
rectangle.Id.ToString(),
whiteboardId.ToString(),
rectangle.OwnerId.ToString(),
rectangle.Position.X,
rectangle.Position.Y,
rectangle.Color,
rectangle.EndPosition.X,
rectangle.EndPosition.Y,
rectangle.BorderThickness
);
var message = new AddRectangleMessage(command);
await _messagePublisher.PublishAsync(message);
}
public async Task CreatedArrow(Guid whiteboardId, Arrow arrow)
{
var command = new CreateArrowCommand(
arrow.Id.ToString(),
whiteboardId.ToString(),
arrow.OwnerId.ToString(),
arrow.Position.X,
arrow.Position.Y,
arrow.Color,
arrow.EndPosition.X,
arrow.EndPosition.Y,
arrow.Thickness);
var message = new AddArrowMessage(command);
await _messagePublisher.PublishAsync(message);
}
public async Task CreateLine(Guid whiteboardId, Line line)
{
var command = new CreateLineCommand(
line.Id.ToString(),
whiteboardId.ToString(),
line.OwnerId.ToString(),
line.Position.X,
line.Position.Y,
line.Color,
line.EndPosition.X,
line.EndPosition.Y,
line.Thickness);
var message = new AddLineMessage(command);
await _messagePublisher.PublishAsync(message);
}
public async Task CreateTextShape(Guid whiteboardId, TextShape textShape)
{
var command = new CreateTextShapeCommand(
textShape.Id.ToString(),
whiteboardId.ToString(),
textShape.OwnerId.ToString(),
textShape.Position.X,
textShape.Position.Y,
textShape.Color,
textShape.TextValue,
textShape.TextSize);
var message = new AddTextShapeMessage(command);
await _messagePublisher.PublishAsync(message);
}
public async Task MoveShape(MoveShapeCommand moveShape)
{
var message = new MoveShapeMessage(moveShape);
await _messagePublisher.PublishAsync(message);
}
}