using Socialize.Api.Modules.Organizations.Data; using Socialize.Api.Modules.Workspaces.Handlers; namespace Socialize.Api.Modules.Organizations.Handlers; public record OrganizationMemberDto( Guid UserId, string DisplayName, string Email, string? PortraitUrl, string Role, IReadOnlyCollection Permissions, DateTimeOffset CreatedAt); public record OrganizationDto( Guid Id, string Name, string? LogoUrl, Guid OwnerUserId, IReadOnlyCollection CurrentUserPermissions, IReadOnlyCollection Members, IReadOnlyCollection Workspaces, OrganizationUsageDto? Usage, DateTimeOffset CreatedAt) { public static OrganizationDto FromOrganization( Organization organization, IReadOnlyCollection currentUserPermissions, IReadOnlyCollection? members = null, IReadOnlyCollection? workspaces = null, OrganizationUsageDto? usage = null) { return new OrganizationDto( organization.Id, organization.Name, organization.LogoUrl, organization.OwnerUserId, currentUserPermissions, members ?? [], workspaces ?? [], usage, organization.CreatedAt); } } public record OrganizationUsageDto( string PlanName, IReadOnlyCollection Items); public record OrganizationUsageItemDto( string Key, int Used, int? Limit);