From eda7804f9fa5ff467ee1037257c8a0899854c4b3 Mon Sep 17 00:00:00 2001 From: Veljko Tosic Date: Wed, 18 Feb 2026 20:21:05 +0100 Subject: [PATCH] For getting whiteboard info --- .../Query/GetWhiteboard/GetWhiteboardQuery.cs | 5 ++++ .../GetWhiteboardQueryHandler.cs | 23 +++++++++++++++++++ .../Controllers/WhiteboardController.cs | 15 +++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQuery.cs create mode 100644 dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQueryHandler.cs diff --git a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQuery.cs b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQuery.cs new file mode 100644 index 0000000..f7bf3e6 --- /dev/null +++ b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQuery.cs @@ -0,0 +1,5 @@ +using AipsCore.Application.Abstract.Query; + +namespace AipsCore.Application.Models.Whiteboard.Query.GetWhiteboard; + +public record GetWhiteboardQuery(string WhiteboardId) : IQuery; \ No newline at end of file diff --git a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQueryHandler.cs b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQueryHandler.cs new file mode 100644 index 0000000..af3cc85 --- /dev/null +++ b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetWhiteboard/GetWhiteboardQueryHandler.cs @@ -0,0 +1,23 @@ +using AipsCore.Application.Abstract.Query; +using AipsCore.Infrastructure.Persistence.Db; +using Microsoft.EntityFrameworkCore; + +namespace AipsCore.Application.Models.Whiteboard.Query.GetWhiteboard; + +public class GetWhiteboardQueryHandler + : IQueryHandler +{ + private readonly AipsDbContext _context; + + public GetWhiteboardQueryHandler(AipsDbContext context) + { + _context = context; + } + + public async Task Handle(GetWhiteboardQuery query, CancellationToken cancellationToken = default) + { + return await _context.Whiteboards + .Where(w => w.Id.ToString() == query.WhiteboardId) + .FirstOrDefaultAsync(cancellationToken); + } +} \ No newline at end of file diff --git a/dotnet/AipsWebApi/Controllers/WhiteboardController.cs b/dotnet/AipsWebApi/Controllers/WhiteboardController.cs index 44467bd..0bbc8d3 100644 --- a/dotnet/AipsWebApi/Controllers/WhiteboardController.cs +++ b/dotnet/AipsWebApi/Controllers/WhiteboardController.cs @@ -1,6 +1,7 @@ using AipsCore.Application.Abstract; using AipsCore.Application.Models.Whiteboard.Command.CreateWhiteboard; using AipsCore.Application.Models.Whiteboard.Query.GetRecentWhiteboards; +using AipsCore.Application.Models.Whiteboard.Query.GetWhiteboard; using AipsCore.Application.Models.Whiteboard.Query.GetWhiteboardHistory; using AipsCore.Application.Models.WhiteboardMembership.Command.CreateWhiteboardMembership; using Microsoft.AspNetCore.Authorization; @@ -22,11 +23,23 @@ public class WhiteboardController : ControllerBase [Authorize] [HttpPost] - public async Task> CreateWhiteboard(CreateWhiteboardCommand command, CancellationToken cancellationToken) + public async Task> CreateWhiteboard(CreateWhiteboardCommand command, CancellationToken cancellationToken) { var whiteboardId = await _dispatcher.Execute(command, cancellationToken); return Ok(whiteboardId.IdValue); } + + [Authorize] + [HttpGet("{whiteboardId}")] + public async Task> GetWhiteboardById([FromRoute] string whiteboardId, CancellationToken cancellationToken) + { + var whiteboard = await _dispatcher.Execute(new GetWhiteboardQuery(whiteboardId), cancellationToken); + if (whiteboard == null) + { + return NotFound(); + } + return Ok(whiteboard); + } [Authorize] [HttpGet("history")]