54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
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<string> Permissions,
|
|
DateTimeOffset CreatedAt);
|
|
|
|
public record OrganizationDto(
|
|
Guid Id,
|
|
string Name,
|
|
string? LogoUrl,
|
|
Guid OwnerUserId,
|
|
IReadOnlyCollection<string> CurrentUserPermissions,
|
|
IReadOnlyCollection<OrganizationMemberDto> Members,
|
|
IReadOnlyCollection<WorkspaceDto> Workspaces,
|
|
OrganizationUsageDto? Usage,
|
|
DateTimeOffset CreatedAt)
|
|
{
|
|
public static OrganizationDto FromOrganization(
|
|
Organization organization,
|
|
IReadOnlyCollection<string> currentUserPermissions,
|
|
IReadOnlyCollection<OrganizationMemberDto>? members = null,
|
|
IReadOnlyCollection<WorkspaceDto>? 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<OrganizationUsageItemDto> Items);
|
|
|
|
public record OrganizationUsageItemDto(
|
|
string Key,
|
|
int Used,
|
|
int? Limit);
|