111 lines
3.4 KiB
C#
111 lines
3.4 KiB
C#
using Socialize.Api.Modules.Organizations.Data;
|
|
using Socialize.Api.Modules.Workspaces.Handlers;
|
|
|
|
namespace Socialize.Api.Modules.Organizations.Handlers;
|
|
|
|
internal record OrganizationMemberDto(
|
|
Guid UserId,
|
|
string DisplayName,
|
|
string Email,
|
|
string? PortraitUrl,
|
|
string Role,
|
|
IReadOnlyCollection<string> Permissions,
|
|
DateTimeOffset CreatedAt);
|
|
|
|
internal record OrganizationDto(
|
|
Guid Id,
|
|
string Name,
|
|
string? LogoUrl,
|
|
OrganizationGoogleDriveDamConfigurationDto GoogleDriveDam,
|
|
OrganizationMembershipTierDto? MembershipTier,
|
|
Guid OwnerUserId,
|
|
IReadOnlyCollection<string> CurrentUserPermissions,
|
|
IReadOnlyCollection<OrganizationMemberDto> Members,
|
|
IReadOnlyCollection<WorkspaceDto> Workspaces,
|
|
OrganizationUsageDto? Usage,
|
|
IReadOnlyCollection<OrganizationMembershipTierDto> AvailableMembershipTiers,
|
|
DateTimeOffset CreatedAt)
|
|
{
|
|
public static OrganizationDto FromOrganization(
|
|
Organization organization,
|
|
IReadOnlyCollection<string> currentUserPermissions,
|
|
OrganizationMembershipTierDto? membershipTier = null,
|
|
IReadOnlyCollection<OrganizationMemberDto>? members = null,
|
|
IReadOnlyCollection<WorkspaceDto>? workspaces = null,
|
|
OrganizationUsageDto? usage = null,
|
|
IReadOnlyCollection<OrganizationMembershipTierDto>? availableMembershipTiers = null)
|
|
{
|
|
return new OrganizationDto(
|
|
organization.Id,
|
|
organization.Name,
|
|
organization.LogoUrl,
|
|
OrganizationGoogleDriveDamConfigurationDto.FromOrganization(organization),
|
|
membershipTier,
|
|
organization.OwnerUserId,
|
|
currentUserPermissions,
|
|
members ?? [],
|
|
workspaces ?? [],
|
|
usage,
|
|
availableMembershipTiers ?? [],
|
|
organization.CreatedAt);
|
|
}
|
|
}
|
|
|
|
internal record OrganizationGoogleDriveDamConfigurationDto(
|
|
bool IsEnabled,
|
|
string? RootFolderId,
|
|
string? RootFolderName,
|
|
string? RootFolderUrl)
|
|
{
|
|
public static OrganizationGoogleDriveDamConfigurationDto FromOrganization(Organization organization)
|
|
{
|
|
return new OrganizationGoogleDriveDamConfigurationDto(
|
|
organization.IsGoogleDriveDamEnabled,
|
|
organization.GoogleDriveRootFolderId,
|
|
organization.GoogleDriveRootFolderName,
|
|
organization.GoogleDriveRootFolderUrl);
|
|
}
|
|
}
|
|
|
|
internal record OrganizationMembershipTierDto(
|
|
Guid Id,
|
|
string Key,
|
|
string Name,
|
|
string Description,
|
|
int? MonthlyPriceCents,
|
|
int? WorkspaceLimit,
|
|
int? ActiveContentLimit,
|
|
int? MemberLimit,
|
|
int? ExternalReviewerLimit,
|
|
bool IsCustom,
|
|
int SortOrder)
|
|
{
|
|
public static OrganizationMembershipTierDto FromTier(
|
|
OrganizationMembershipTier tier,
|
|
OrganizationMembershipTierTranslation translation)
|
|
{
|
|
return new OrganizationMembershipTierDto(
|
|
tier.Id,
|
|
tier.Key,
|
|
translation.Name,
|
|
translation.Description,
|
|
tier.MonthlyPriceCents,
|
|
tier.WorkspaceLimit,
|
|
tier.ActiveContentLimit,
|
|
tier.MemberLimit,
|
|
tier.ExternalReviewerLimit,
|
|
tier.IsCustom,
|
|
tier.SortOrder);
|
|
}
|
|
}
|
|
|
|
internal record OrganizationUsageDto(
|
|
string PlanKey,
|
|
string PlanName,
|
|
IReadOnlyCollection<OrganizationUsageItemDto> Items);
|
|
|
|
internal record OrganizationUsageItemDto(
|
|
string Key,
|
|
int Used,
|
|
int? Limit);
|