using Novelly.Api.Common.Validation; namespace Novelly.Api.Users; public record GrantAccessRequest(string Email, NovelRole NovelRole); public record NovelMemberResponse(Guid UserId, string Email, string DisplayName, NovelRole NovelRole, DateTimeOffset GrantedAt); public class GrantAccessRequestValidator : IModelValidator { public ValidationResult Validate(GrantAccessRequest model) { var result = new ValidationResult(); result.AddRequiredTextErrors("Email", "Email", model.Email, 256); return result; } } public static class NovelMemberMapping { public static NovelMemberResponse ToResponse(this NovelMember m) => new(m.UserId, m.User!.Email ?? string.Empty, m.User.DisplayName, m.NovelRole, m.GrantedAt); }