implement
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using AipsCore.Domain.Abstract.Rule;
|
||||
using AipsCore.Domain.Abstract.ValueObject;
|
||||
using AipsCore.Domain.Common.Validation.Rules;
|
||||
using AipsCore.Domain.Models.Whiteboard.External;
|
||||
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
@@ -25,4 +26,32 @@ public record WhiteboardCode : AbstractValueObject
|
||||
new WhiteboardCodeCharsetRule(CodeValue)
|
||||
];
|
||||
}
|
||||
|
||||
public async static Task<WhiteboardCode> GenerateUniqueAsync(IWhiteboardRepository whiteboardRepository)
|
||||
{
|
||||
WhiteboardCode whiteboardCode;
|
||||
bool codeExists;
|
||||
|
||||
do
|
||||
{
|
||||
whiteboardCode = Generate();
|
||||
|
||||
codeExists = await whiteboardRepository.WhiteboardCodeExists(whiteboardCode);
|
||||
} while (codeExists);
|
||||
|
||||
return whiteboardCode;
|
||||
}
|
||||
|
||||
public static WhiteboardCode Generate()
|
||||
{
|
||||
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