Merge pull request #2 from StewKI/feature-whiteboard
Feature whiteboard
This commit is contained in:
11
dotnet/AipsCore/Domain/Models/Whiteboard/External/IWhiteboardRepository.cs
vendored
Normal file
11
dotnet/AipsCore/Domain/Models/Whiteboard/External/IWhiteboardRepository.cs
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
using AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.External;
|
||||
|
||||
public interface IWhiteboardRepository
|
||||
{
|
||||
Task<Whiteboard?> Get(WhiteboardId whiteboardId, CancellationToken cancellationToken = default);
|
||||
Task Save(Whiteboard whiteboard, CancellationToken cancellationToken = default);
|
||||
Task<bool> WhiteboardCodeExists(WhiteboardCode whiteboardCode);
|
||||
|
||||
}
|
||||
@@ -3,9 +3,9 @@ using AipsCore.Utility.Text;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
public class WhitebordCodeCharsetRule : CharsetRule
|
||||
public class WhiteboardCodeCharsetRule : CharsetRule
|
||||
{
|
||||
public WhitebordCodeCharsetRule(string stringValue)
|
||||
public WhiteboardCodeCharsetRule(string stringValue)
|
||||
: base(stringValue, GetWhiteboardCodeCharset())
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using AipsCore.Domain.Common.Validation.Rules;
|
||||
using AipsCore.Utility.Text;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
public class WhiteboardTitleCharsetRule : CharsetRule
|
||||
{
|
||||
public WhiteboardTitleCharsetRule(string stringValue)
|
||||
: base(stringValue, GetWhiteboardTitleCharset())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private static char[] GetWhiteboardTitleCharset()
|
||||
{
|
||||
var alphanumericCharset = Charset.GetAlphanumericCharset();
|
||||
return [..alphanumericCharset, '_', ' ', '/'];
|
||||
}
|
||||
|
||||
protected override string ErrorCode => "whiteboard_title_charset";
|
||||
|
||||
protected override string ErrorMessage =>
|
||||
"Whiteboard title contains invalid characters, only alphanumeric characters, '_', ' ', '/' are allowed";
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
using AipsCore.Domain.Abstract;
|
||||
using AipsCore.Domain.Abstract.Rule;
|
||||
using AipsCore.Domain.Abstract.Rule;
|
||||
using AipsCore.Domain.Abstract.ValueObject;
|
||||
using AipsCore.Domain.Common.Validation;
|
||||
using AipsCore.Domain.Common.Validation.Rules;
|
||||
using AipsCore.Domain.Common.ValueObjects;
|
||||
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
@@ -25,7 +22,7 @@ public record WhiteboardCode : AbstractValueObject
|
||||
return
|
||||
[
|
||||
new ExactLength(CodeValue, CodeLength),
|
||||
new WhitebordCodeCharsetRule(CodeValue)
|
||||
new WhiteboardCodeCharsetRule(CodeValue)
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,4 +2,7 @@
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
|
||||
public record WhiteboardId(string IdValue) : DomainId(IdValue);
|
||||
public record WhiteboardId(string IdValue) : DomainId(IdValue)
|
||||
{
|
||||
public static WhiteboardId Any() => new(Guid.NewGuid().ToString());
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using AipsCore.Domain.Abstract.Rule;
|
||||
using AipsCore.Domain.Abstract.ValueObject;
|
||||
using AipsCore.Domain.Common.Validation.Rules;
|
||||
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
|
||||
public record WhiteboardTitle : AbstractValueObject
|
||||
{
|
||||
private const int MaxWhiteboardTitleLength = 32;
|
||||
private const int MinWhiteboardTitleLength = 3;
|
||||
|
||||
public string TitleValue { get; init; }
|
||||
|
||||
public WhiteboardTitle(string TitleValue)
|
||||
{
|
||||
this.TitleValue = TitleValue;
|
||||
Validate();
|
||||
}
|
||||
|
||||
protected override ICollection<IRule> GetValidationRules()
|
||||
{
|
||||
return [
|
||||
new MaxLengthRule(TitleValue, MaxWhiteboardTitleLength),
|
||||
new MinLengthRule(TitleValue, MinWhiteboardTitleLength),
|
||||
new WhiteboardTitleCharsetRule(TitleValue)
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -8,11 +8,41 @@ public class Whiteboard
|
||||
public WhiteboardId Id { get; private set; }
|
||||
public UserId WhiteboardOwnerId { get; private set; }
|
||||
public WhiteboardCode Code { get; private set; }
|
||||
public WhiteboardTitle Title { get; private set; }
|
||||
|
||||
public Whiteboard(WhiteboardId id, User.User whiteboardOwner, WhiteboardCode code)
|
||||
public Whiteboard(WhiteboardId id, User.User whiteboardOwner, WhiteboardCode code, WhiteboardTitle title)
|
||||
{
|
||||
Id = id;
|
||||
WhiteboardOwnerId = whiteboardOwner.Id;
|
||||
Code = code;
|
||||
Title = title;
|
||||
}
|
||||
|
||||
public Whiteboard(WhiteboardId id, UserId whiteboardOwnerId, WhiteboardCode code, WhiteboardTitle title)
|
||||
{
|
||||
Id = id;
|
||||
WhiteboardOwnerId = whiteboardOwnerId;
|
||||
Code = code;
|
||||
Title = title;
|
||||
}
|
||||
|
||||
public static Whiteboard Create(string id, string ownerId, string code, string title)
|
||||
{
|
||||
var whiteboardId = new WhiteboardId(id);
|
||||
var whiteboardOwnerId = new UserId(ownerId);
|
||||
var whiteboardCode = new WhiteboardCode(code);
|
||||
var whiteboardTitle = new WhiteboardTitle(title);
|
||||
|
||||
return new Whiteboard(whiteboardId, whiteboardOwnerId, whiteboardCode, whiteboardTitle);
|
||||
}
|
||||
|
||||
public static Whiteboard Create(string ownerId, string code, string title)
|
||||
{
|
||||
var whiteboardId = WhiteboardId.Any();
|
||||
var whiteboardOwnerId = new UserId(ownerId);
|
||||
var whiteboardCode = new WhiteboardCode(code);
|
||||
var whiteboardTitle = new WhiteboardTitle(title);
|
||||
|
||||
return new Whiteboard(whiteboardId, whiteboardOwnerId, whiteboardCode, whiteboardTitle);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user