WeddingPlatform.Web 1.0.0.0
지도, 갤러리, 방명록, 계좌 안내와 배경음악을 링크 하나에 담는 무료 모바일 청첩장 서비스입니다.
로딩중...
검색중...
일치하는것 없음
WeddingPlatform.ViewModels.WeddingSuperAdminViewModel 클래스 참조sealed

더 자세히 ...

WeddingPlatform.ViewModels.WeddingSuperAdminViewModel에 대한 협력 다이어그램:

Public 멤버 함수

 WeddingSuperAdminViewModel (ITenantStore tenants, WeddingOptions opts, IGlobalSettingsStore globalSettings, WeddingUserContext userContext, IMediaUsageQueryService mediaUsage, IMediaMigrationService mediaMigration, ISuperAdminSessionTokenService superAdminTokens)
async Task LoadGlobalSettingsAsync (CancellationToken ct=default)
async Task SaveGlobalSettingsAsync (CancellationToken ct=default)
Task< bool > LoginAsync ()
void RestoreSession ()
async Task LoadAsync (CancellationToken ct=default)
async Task RefreshMediaUsageAsync (CancellationToken ct=default)
async Task< bool > CreateTenantAsync (CancellationToken ct=default)
async Task SetDisplayAsync (string slug, bool showOnHome, int pinOrder, CancellationToken ct=default)
async Task DeleteTenantAsync (string slug, CancellationToken ct=default)
async Task SetMaxVideoSizeAsync (string slug, int? maxVideoSizeMb, CancellationToken ct=default)
async Task SetMaxVideoCountAsync (string slug, int? maxVideoCount, CancellationToken ct=default)
async Task SaveMediaOverrideAsync (TenantConfig tenant, CancellationToken ct=default)
async Task ResetMediaOverrideAsync (string slug, CancellationToken ct=default)
async Task QueueImageMigrationAsync (string slug, CancellationToken ct=default)
async Task RetryImageMigrationAsync (string slug, CancellationToken ct=default)
async Task SetUnlockedLayoutsAsync (string slug, IEnumerable< string > unlockedLayoutModes, CancellationToken ct=default)
async Task SetUnlockedThemesAsync (string slug, IEnumerable< string > unlockedThemeKeys, CancellationToken ct=default)

속성

int MaxVideoSizeMb = 50 [get, set]
int MaxVideoCount = 1 [get, set]
MediaPolicySettings MediaPolicy = MediaPolicySettings.CreateDefault() [get, set]
IReadOnlyDictionary< string, TenantMediaUsageSummaryMediaUsage [get, private set]
bool IsMediaUsageAccurate = new Dictionary<string, TenantMediaUsageSummary>(StringComparer.OrdinalIgnoreCase) [get, private set]
IReadOnlyDictionary< string, MediaMigrationTenantStatusMigrationStatuses [get, private set]
bool IsAuthenticated [get, private set]
string LoginPassword = "" [get, set]
string SuperAdminSessionToken = "" [get, private set]
IReadOnlyList< TenantConfigTenants = [] [get, private set]
string StatusMessage = "" [get, private set]
bool IsLoaded [get, private set]
string NewSlug = "" [get, set]
string NewCoupleName = "" [get, set]
string NewPassword = "" [get, set]
DateTime NewWeddingDate = DateTime.Today.AddMonths(3) [get, set]

Private 멤버 함수

async Task ReloadTenantsAsync (CancellationToken ct)
IReadOnlyDictionary< string, TenantMediaUsageSummaryBuildFastMediaUsage ()
MediaMigrationState ResolveMigrationState (TenantConfig tenant)

정적 Private 멤버 함수

static List< string > NormalizeUnlockedLayoutKeys (IEnumerable< string > unlockedLayoutModes)
static List< string > NormalizeUnlockedThemeKeys (IEnumerable< string > unlockedThemeKeys)
static ? int NormalizeNullableNonNegative (int? value)
static ? MediaPolicyOverride NormalizeOverride (MediaPolicyOverride? value)

Private 속성

readonly ITenantStore _tenants
readonly WeddingOptions _opts
readonly IGlobalSettingsStore _globalSettings
readonly WeddingUserContext _userContext
readonly IMediaUsageQueryService _mediaUsage
readonly IMediaMigrationService _mediaMigration
readonly ISuperAdminSessionTokenService _superAdminTokens

상세한 설명

Wedding Super Admin View Model 기능과 관련 상태를 캡슐화합니다.

WeddingSuperAdminViewModel.cs 파일의 17 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ WeddingSuperAdminViewModel()

WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.WeddingSuperAdminViewModel ( ITenantStore tenants,
WeddingOptions opts,
IGlobalSettingsStore globalSettings,
WeddingUserContext userContext,
IMediaUsageQueryService mediaUsage,
IMediaMigrationService mediaMigration,
ISuperAdminSessionTokenService superAdminTokens )
inline

지정한 설정으로 WeddingSuperAdminViewModel 클래스의 새 인스턴스를 초기화합니다.

매개변수
tenantstenants에 사용할 ITenantStore 값입니다.
optsopts에 사용할 WeddingOptions 값입니다.
globalSettingsglobal Settings에 사용할 IGlobalSettingsStore 값입니다.
userContextuser Context에 사용할 WeddingUserContext 값입니다.
mediaUsagemedia Usage에 사용할 IMediaUsageQueryService 값입니다.
mediaMigrationmedia Migration에 사용할 IMediaMigrationService 값입니다.
superAdminTokenssuper Admin Tokens에 사용할 ISuperAdminSessionTokenService 값입니다.

WeddingSuperAdminViewModel.cs 파일의 147 번째 라인에서 정의되었습니다.

155 {
156 _tenants = tenants;
157 _opts = opts;
158 _globalSettings = globalSettings;
159 _userContext = userContext;
160 _mediaUsage = mediaUsage;
161 _mediaMigration = mediaMigration;
162 _superAdminTokens = superAdminTokens;
163 }

다음을 참조함 : _globalSettings, _mediaMigration, _mediaUsage, _opts, _superAdminTokens, _tenants, _userContext.

멤버 함수 문서화

◆ BuildFastMediaUsage()

IReadOnlyDictionary< string, TenantMediaUsageSummary > WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.BuildFastMediaUsage ( )
inlineprivate

Fast Media Usage 값을 구성합니다.

반환값
Build Fast Media Usage 작업에서 생성한 IReadOnlyDictionary<string, TenantMediaUsageSummary> 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 541 번째 라인에서 정의되었습니다.

542 {
543 var result = new Dictionary<string, TenantMediaUsageSummary>(StringComparer.OrdinalIgnoreCase);
544 foreach (var tenant in Tenants)
545 {
546 if (MediaUsage.TryGetValue(tenant.Slug, out var existing))
547 {
548 existing.ImageCount = tenant.GalleryFileNames.Count;
549 existing.VideoCount = tenant.VideoFileNames.Count;
550 existing.MigrationState = ResolveMigrationState(tenant);
551 result[tenant.Slug] = existing;
552 continue;
553 }
554
555 result[tenant.Slug] = new TenantMediaUsageSummary
556 {
557 Slug = tenant.Slug,
558 ImageCount = tenant.GalleryFileNames.Count,
559 VideoCount = tenant.VideoFileNames.Count,
560 MigrationState = ResolveMigrationState(tenant),
561 LastModified = tenant.CreatedAt
562 };
563 }
564
565 return result;
566 }

다음을 참조함 : MediaUsage, ResolveMigrationState(), Tenants.

다음에 의해서 참조됨 : LoadAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CreateTenantAsync()

async Task< bool > WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.CreateTenantAsync ( CancellationToken ct = default)
inline

Tenant Async 값을 생성합니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Create Tenant Async 작업에서 생성한 Task<bool> 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 629 번째 라인에서 정의되었습니다.

630 {
631 var slug = NewSlug.Trim().ToLowerInvariant();
632
633 if (string.IsNullOrWhiteSpace(slug))
634 { StatusMessage = "슬러그(URL ID)를 입력해주세요."; return false; }
635
636 if (string.IsNullOrWhiteSpace(NewCoupleName))
637 { StatusMessage = "커플 이름을 입력해주세요."; return false; }
638
639 if (string.IsNullOrWhiteSpace(NewPassword))
640 { StatusMessage = "어드민 비밀번호를 입력해주세요."; return false; }
641
642 if (NewPassword.Length < 8)
643 { StatusMessage = "어드민 비밀번호는 8자 이상이어야 합니다."; return false; }
644
645 if (slug == "admin")
646 { StatusMessage = "'admin'은 슬러그로 사용할 수 없습니다."; return false; }
647
648 if (await _tenants.ExistsAsync(slug, ct).ConfigureAwait(false))
649 { StatusMessage = $"이미 존재하는 슬러그입니다: {slug}"; return false; }
650
651 var user = await _userContext.GetCurrentAsync().ConfigureAwait(false);
652 var config = new TenantConfig
653 {
654 Slug = slug,
655 CoupleName = NewCoupleName.Trim(),
656 WeddingDate = NewWeddingDate,
657 PasswordHash = DreaminePasswordHasher.HashPassword(NewPassword),
658 Mode = WeddingSiteMode.Invite,
659 IsPublished = true
660 };
661
662 if (user.IsAuthenticated)
663 {
664 config.OwnerUserId = user.Id;
665 config.OwnerProvider = user.Provider;
666 config.OwnerEmail = user.Email;
667 config.OwnerDisplayName = user.DisplayName;
668 config.OwnerLinkedAt = DateTime.Now;
669 config.AdminUsers.Add(new WeddingAdminUser
670 {
671 UserId = user.Id,
672 Provider = user.Provider,
673 Email = user.Email,
674 DisplayName = user.DisplayName,
675 Role = "Owner",
676 AddedAt = DateTime.Now
677 });
678 }
679
680 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
681 await LoadAsync(ct).ConfigureAwait(false);
682
683 NewSlug = "";
684 NewCoupleName = "";
685 NewPassword = "";
686 NewWeddingDate = DateTime.Today.AddMonths(3);
687
688 StatusMessage = $"✅ '{slug}' 청첩장이 생성되었습니다.";
689 return true;
690 }

다음을 참조함 : _tenants, _userContext, LoadAsync(), NewCoupleName, NewPassword, NewSlug, NewWeddingDate, StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ DeleteTenantAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.DeleteTenantAsync ( string slug,
CancellationToken ct = default )
inline

Delete Tenant Async 작업을 수행합니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Delete Tenant Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 783 번째 라인에서 정의되었습니다.

784 {
785 try
786 {
787 await _tenants.DeleteAsync(slug, ct).ConfigureAwait(false);
788 await LoadAsync(ct).ConfigureAwait(false);
789 StatusMessage = $"🗑 '{slug}' 삭제 완료.";
790 }
791 catch (Exception ex)
792 {
793 StatusMessage = $"삭제 오류: {ex.Message}";
794 }
795 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ LoadAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.LoadAsync ( CancellationToken ct = default)
inline

Async 데이터를 불러옵니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Load Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 450 번째 라인에서 정의되었습니다.

451 {
452 await ReloadTenantsAsync(ct).ConfigureAwait(false);
453 await LoadGlobalSettingsAsync(ct).ConfigureAwait(false);
454 MigrationStatuses = await _mediaMigration.GetAllAsync(ct).ConfigureAwait(false);
455 MediaUsage = BuildFastMediaUsage();
456 IsMediaUsageAccurate = false;
457 IsLoaded = true;
458 StatusMessage = "";
459 }

다음을 참조함 : _mediaMigration, BuildFastMediaUsage(), IsLoaded, IsMediaUsageAccurate, LoadGlobalSettingsAsync(), MediaUsage, MigrationStatuses, ReloadTenantsAsync(), StatusMessage.

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), QueueImageMigrationAsync(), ResetMediaOverrideAsync(), RetryImageMigrationAsync(), SaveMediaOverrideAsync(), SetDisplayAsync(), SetMaxVideoCountAsync(), SetMaxVideoSizeAsync(), SetUnlockedLayoutsAsync(), SetUnlockedThemesAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoadGlobalSettingsAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.LoadGlobalSettingsAsync ( CancellationToken ct = default)
inline

Global Settings Async 데이터를 불러옵니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Load Global Settings Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 246 번째 라인에서 정의되었습니다.

247 {
248 var settings = await _globalSettings.GetAsync(ct).ConfigureAwait(false);
249 settings.Normalize();
250 MediaPolicy = settings.MediaPolicy;
251 MaxVideoSizeMb = MediaPolicy.FreeTier.VideoMaxFileSizeMb;
252 MaxVideoCount = MediaPolicy.FreeTier.VideoMaxCount;
253 }

다음을 참조함 : _globalSettings, MaxVideoCount, MaxVideoSizeMb, MediaPolicy.

다음에 의해서 참조됨 : LoadAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoginAsync()

Task< bool > WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.LoginAsync ( )
inline

Login Async 작업을 수행합니다.

반환값
Login Async 작업에서 생성한 Task<bool> 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 339 번째 라인에서 정의되었습니다.

340 {
341 IsAuthenticated = DreaminePasswordHasher.VerifyPassword(LoginPassword, _opts.SuperAdminPassword);
342 StatusMessage = IsAuthenticated ? "" : "비밀번호가 틀렸습니다.";
343 SuperAdminSessionToken = IsAuthenticated ? _superAdminTokens.CreateToken() : "";
344 return Task.FromResult(IsAuthenticated);
345 }

다음을 참조함 : _opts, _superAdminTokens, IsAuthenticated, LoginPassword, StatusMessage, SuperAdminSessionToken.

◆ NormalizeNullableNonNegative()

? int WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NormalizeNullableNonNegative ( int? value)
inlinestaticprivate

Normalize Nullable Non Negative 작업을 수행합니다.

매개변수
value적용할 값입니다.
반환값
Normalize Nullable Non Negative 작업에서 생성한 int? 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1265 번째 라인에서 정의되었습니다.

1265 =>
1266 value.HasValue ? Math.Max(0, value.Value) : null;

다음에 의해서 참조됨 : NormalizeOverride(), SetMaxVideoCountAsync(), SetMaxVideoSizeAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NormalizeOverride()

? MediaPolicyOverride WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NormalizeOverride ( MediaPolicyOverride? value)
inlinestaticprivate

Normalize Override 작업을 수행합니다.

매개변수
value적용할 값입니다.
반환값
Normalize Override 작업에서 생성한 MediaPolicyOverride? 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1292 번째 라인에서 정의되었습니다.

1293 {
1294 if (value is null || value.IsEmpty)
1295 {
1296 return null;
1297 }
1298
1299 value.ImageMaxCount = NormalizeNullableNonNegative(value.ImageMaxCount);
1300 value.ImageOptimizedMaxStorageMb = NormalizeNullableNonNegative(value.ImageOptimizedMaxStorageMb);
1301 value.ImageOriginalMaxStorageMb = NormalizeNullableNonNegative(value.ImageOriginalMaxStorageMb);
1302 value.ImageMaxLongSidePx = NormalizeNullableNonNegative(value.ImageMaxLongSidePx);
1303 value.ImageQuality = value.ImageQuality.HasValue ? Math.Clamp(value.ImageQuality.Value, 1, 100) : null;
1304 value.VideoMaxFileSizeMb = NormalizeNullableNonNegative(value.VideoMaxFileSizeMb);
1305 value.VideoMaxCount = NormalizeNullableNonNegative(value.VideoMaxCount);
1306 value.VideoMaxStorageMb = NormalizeNullableNonNegative(value.VideoMaxStorageMb);
1307 value.ImageOutputFormat = string.IsNullOrWhiteSpace(value.ImageOutputFormat) ? null : value.ImageOutputFormat.Trim();
1308 return value.IsEmpty ? null : value;
1309 }

다음을 참조함 : WeddingPlatform.Models.MediaPolicyOverride.ImageMaxCount, WeddingPlatform.Models.MediaPolicyOverride.ImageMaxLongSidePx, WeddingPlatform.Models.MediaPolicyOverride.ImageOptimizedMaxStorageMb, WeddingPlatform.Models.MediaPolicyOverride.ImageOriginalMaxStorageMb, WeddingPlatform.Models.MediaPolicyOverride.ImageOutputFormat, WeddingPlatform.Models.MediaPolicyOverride.ImageQuality, WeddingPlatform.Models.MediaPolicyOverride.IsEmpty, NormalizeNullableNonNegative(), WeddingPlatform.Models.MediaPolicyOverride.VideoMaxCount, WeddingPlatform.Models.MediaPolicyOverride.VideoMaxFileSizeMb, WeddingPlatform.Models.MediaPolicyOverride.VideoMaxStorageMb.

다음에 의해서 참조됨 : SaveMediaOverrideAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NormalizeUnlockedLayoutKeys()

List< string > WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NormalizeUnlockedLayoutKeys ( IEnumerable< string > unlockedLayoutModes)
inlinestaticprivate

Normalize Unlocked Layout Keys 작업을 수행합니다.

매개변수
unlockedLayoutModesunlocked Layout Modes에 사용할 IEnumerable<string> 값입니다.
반환값
Normalize Unlocked Layout Keys 작업에서 생성한 List<string> 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1197 번째 라인에서 정의되었습니다.

1197 =>
1198 unlockedLayoutModes
1199 .Select(WeddingLayoutCatalog.FromLegacyKey)
1200 .Select(mode => WeddingLayoutCatalog.Instance.Find(mode))
1201 .Where(option => option is { Tier: WeddingLayoutTier.Premium })
1202 .Select(option => option!.Key)
1203 .Distinct(StringComparer.OrdinalIgnoreCase)
1204 .OrderBy(x => x)
1205 .ToList();

다음에 의해서 참조됨 : SetUnlockedLayoutsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NormalizeUnlockedThemeKeys()

List< string > WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NormalizeUnlockedThemeKeys ( IEnumerable< string > unlockedThemeKeys)
inlinestaticprivate

Normalize Unlocked Theme Keys 작업을 수행합니다.

매개변수
unlockedThemeKeysunlocked Theme Keys에 사용할 IEnumerable<string> 값입니다.
반환값
Normalize Unlocked Theme Keys 작업에서 생성한 List<string> 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1231 번째 라인에서 정의되었습니다.

1231 =>
1232 unlockedThemeKeys
1233 .Select(WeddingThemeCatalog.NormalizeKey)
1234 .Select(key => WeddingThemeCatalog.Instance.Find(key))
1235 .Where(option => option is { Tier: WeddingThemeTier.Premium })
1236 .Select(option => option!.Key)
1237 .Distinct(StringComparer.OrdinalIgnoreCase)
1238 .OrderBy(x => x)
1239 .ToList();

다음에 의해서 참조됨 : SetUnlockedThemesAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ QueueImageMigrationAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.QueueImageMigrationAsync ( string slug,
CancellationToken ct = default )
inline

테넌트 이미지 최적화 마이그레이션을 백그라운드로 시작합니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Queue Image Migration Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1025 번째 라인에서 정의되었습니다.

1026 {
1027 await _mediaMigration.QueueTenantAsync(slug, ct).ConfigureAwait(false);
1028 await LoadAsync(ct).ConfigureAwait(false);
1029 StatusMessage = $"✅ '{slug}' 이미지 최적화 작업이 대기열에 등록되었습니다.";
1030 }

다음을 참조함 : _mediaMigration, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ RefreshMediaUsageAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.RefreshMediaUsageAsync ( CancellationToken ct = default)
inline

실제 파일 시스템을 스캔해 미디어 사용량을 갱신합니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Refresh Media Usage Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 485 번째 라인에서 정의되었습니다.

486 {
487 MigrationStatuses = await _mediaMigration.GetAllAsync(ct).ConfigureAwait(false);
488 MediaUsage = await _mediaUsage.GetTenantUsageAsync(Tenants, ct).ConfigureAwait(false);
489 IsMediaUsageAccurate = true;
490 }

다음을 참조함 : _mediaMigration, _mediaUsage, IsMediaUsageAccurate, MediaUsage, MigrationStatuses, Tenants.

◆ ReloadTenantsAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.ReloadTenantsAsync ( CancellationToken ct)
inlineprivate

Reload Tenants Async 작업을 수행합니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Reload Tenants Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 516 번째 라인에서 정의되었습니다.

517 {
518 Tenants = await _tenants.GetAllAsync(ct).ConfigureAwait(false);
519 foreach (var tenant in Tenants)
520 {
521 InvitationDesignCatalog.Normalize(tenant);
522 }
523 }

다음을 참조함 : _tenants, WeddingPlatform.Models.InvitationDesignCatalog.Normalize(), Tenants.

다음에 의해서 참조됨 : LoadAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ResetMediaOverrideAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.ResetMediaOverrideAsync ( string slug,
CancellationToken ct = default )
inline

계정별 미디어 정책 override를 제거해 등급 정책을 따르게 합니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Reset Media Override Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 979 번째 라인에서 정의되었습니다.

980 {
981 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
982 if (config is null) return;
983
984 config.MediaPolicyOverride = null;
985 config.MaxVideoSizeMb = null;
986 config.MaxVideoCount = null;
987
988 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
989 await LoadAsync(ct).ConfigureAwait(false);
990 StatusMessage = $"✅ '{slug}' 계정별 미디어 override 초기화됨";
991 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ResolveMigrationState()

MediaMigrationState WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.ResolveMigrationState ( TenantConfig tenant)
inlineprivate

Resolve Migration State 작업을 수행합니다.

매개변수
tenanttenant에 사용할 TenantConfig 값입니다.
반환값
Resolve Migration State 작업에서 생성한 MediaMigrationState 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 592 번째 라인에서 정의되었습니다.

593 {
594 if (MigrationStatuses.TryGetValue(tenant.Slug, out var status))
595 {
596 return status.State;
597 }
598
599 if (tenant.GalleryFileNames.Count == 0) return MediaMigrationState.Skipped;
600 return tenant.GalleryFileNames.All(x => Path.GetExtension(x).Equals(".webp", StringComparison.OrdinalIgnoreCase))
601 ? MediaMigrationState.Completed
602 : MediaMigrationState.Pending;
603 }

다음을 참조함 : WeddingPlatform.Models.Completed, WeddingPlatform.Models.TenantConfig.GalleryFileNames, MigrationStatuses, WeddingPlatform.Models.TenantConfig.Slug.

다음에 의해서 참조됨 : BuildFastMediaUsage().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RestoreSession()

void WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.RestoreSession ( )
inline

Restore Session 작업을 수행합니다.

WeddingSuperAdminViewModel.cs 파일의 355 번째 라인에서 정의되었습니다.

356 {
357 IsAuthenticated = true;
358 StatusMessage = "";
359 }

다음을 참조함 : IsAuthenticated, StatusMessage.

◆ RetryImageMigrationAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.RetryImageMigrationAsync ( string slug,
CancellationToken ct = default )
inline

실패한 이미지 최적화 마이그레이션을 재시도합니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Retry Image Migration Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1064 번째 라인에서 정의되었습니다.

1065 {
1066 await _mediaMigration.RetryTenantAsync(slug, ct).ConfigureAwait(false);
1067 await LoadAsync(ct).ConfigureAwait(false);
1068 StatusMessage = $"✅ '{slug}' 이미지 최적화 실패 항목을 재시도합니다.";
1069 }

다음을 참조함 : _mediaMigration, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SaveGlobalSettingsAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SaveGlobalSettingsAsync ( CancellationToken ct = default)
inline

Global Settings Async 데이터를 저장합니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Save Global Settings Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 279 번째 라인에서 정의되었습니다.

280 {
281 MediaPolicy.Normalize();
282 MaxVideoSizeMb = MediaPolicy.FreeTier.VideoMaxFileSizeMb;
283 MaxVideoCount = MediaPolicy.FreeTier.VideoMaxCount;
284 await _globalSettings.SaveAsync(
285 new GlobalSettings
286 {
287 MaxVideoSizeMb = MaxVideoSizeMb,
288 MaxVideoCount = MaxVideoCount,
289 MediaPolicy = MediaPolicy
290 }, ct)
291 .ConfigureAwait(false);
292 StatusMessage = "✅ 전체 설정이 저장되었습니다.";
293 }

다음을 참조함 : _globalSettings, MaxVideoCount, MaxVideoSizeMb, MediaPolicy, StatusMessage.

◆ SaveMediaOverrideAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SaveMediaOverrideAsync ( TenantConfig tenant,
CancellationToken ct = default )
inline

계정별 미디어 정책 override를 저장합니다.

매개변수
tenanttenant에 사용할 TenantConfig 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Save Media Override Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 933 번째 라인에서 정의되었습니다.

934 {
935 var config = await _tenants.GetAsync(tenant.Slug, ct).ConfigureAwait(false);
936 if (config is null) return;
937
938 config.MediaPolicyOverride = NormalizeOverride(tenant.MediaPolicyOverride);
939 config.MaxVideoSizeMb = null;
940 config.MaxVideoCount = null;
941
942 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
943 await LoadAsync(ct).ConfigureAwait(false);
944 StatusMessage = $"✅ '{tenant.Slug}' 미디어 정책 override 저장됨";
945 }
MediaPolicyOverride? MediaPolicyOverride

다음을 참조함 : _tenants, LoadAsync(), WeddingPlatform.Models.TenantConfig.MediaPolicyOverride, NormalizeOverride(), WeddingPlatform.Models.TenantConfig.Slug, StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetDisplayAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SetDisplayAsync ( string slug,
bool showOnHome,
int pinOrder,
CancellationToken ct = default )
inline

Display Async 값을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
showOnHomeshow On Home에 사용할 bool 값입니다.
pinOrderpin Order에 사용할 int 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Display Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 740 번째 라인에서 정의되었습니다.

741 {
742 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
743 if (config is null) return;
744 config.ShowOnHome = showOnHome;
745 config.PinOrder = pinOrder;
746 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
747 await LoadAsync(ct).ConfigureAwait(false);
748 StatusMessage = $"✅ '{slug}' 노출 설정 저장됨";
749 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetMaxVideoCountAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SetMaxVideoCountAsync ( string slug,
int? maxVideoCount,
CancellationToken ct = default )
inline

계정(테넌트)별 동영상 업로드 최대 개수를 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
maxVideoCountnull이면 전체 설정값을 따름, 0이면 무제한, 그 외는 개수 제한.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Max Video Count Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 889 번째 라인에서 정의되었습니다.

890 {
891 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
892 if (config is null) return;
893 config.MediaPolicyOverride ??= new MediaPolicyOverride();
894 config.MediaPolicyOverride.VideoMaxCount = NormalizeNullableNonNegative(maxVideoCount);
895 config.MaxVideoCount = null;
896 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
897 await LoadAsync(ct).ConfigureAwait(false);
898 StatusMessage = $"✅ '{slug}' 동영상 개수 제한 저장됨";
899 }

다음을 참조함 : _tenants, LoadAsync(), NormalizeNullableNonNegative(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetMaxVideoSizeAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SetMaxVideoSizeAsync ( string slug,
int? maxVideoSizeMb,
CancellationToken ct = default )
inline

계정(테넌트)별 동영상 업로드 용량 제한을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
maxVideoSizeMbnull이면 전체 설정값을 따름, 0이면 무제한, 그 외는 MB 단위 제한.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Max Video Size Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 837 번째 라인에서 정의되었습니다.

838 {
839 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
840 if (config is null) return;
841 config.MediaPolicyOverride ??= new MediaPolicyOverride();
842 config.MediaPolicyOverride.VideoMaxFileSizeMb = NormalizeNullableNonNegative(maxVideoSizeMb);
843 config.MaxVideoSizeMb = null;
844 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
845 await LoadAsync(ct).ConfigureAwait(false);
846 StatusMessage = $"✅ '{slug}' 동영상 용량 제한 저장됨";
847 }

다음을 참조함 : _tenants, LoadAsync(), NormalizeNullableNonNegative(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetUnlockedLayoutsAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SetUnlockedLayoutsAsync ( string slug,
IEnumerable< string > unlockedLayoutModes,
CancellationToken ct = default )
inline

Unlocked Layouts Async 값을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
unlockedLayoutModesunlocked Layout Modes에 사용할 IEnumerable<string> 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Unlocked Layouts Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1111 번째 라인에서 정의되었습니다.

1112 {
1113 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
1114 if (config is null) return;
1115
1116 config.UnlockedLayoutModes = NormalizeUnlockedLayoutKeys(unlockedLayoutModes);
1117 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
1118 await LoadAsync(ct).ConfigureAwait(false);
1119 StatusMessage = $"✅ '{slug}' 레이아웃 권한 저장됨";
1120 }

다음을 참조함 : _tenants, LoadAsync(), NormalizeUnlockedLayoutKeys(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetUnlockedThemesAsync()

async Task WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SetUnlockedThemesAsync ( string slug,
IEnumerable< string > unlockedThemeKeys,
CancellationToken ct = default )
inline

Unlocked Themes Async 값을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
unlockedThemeKeysunlocked Theme Keys에 사용할 IEnumerable<string> 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Unlocked Themes Async 작업에서 생성한 Task 결과입니다.

WeddingSuperAdminViewModel.cs 파일의 1162 번째 라인에서 정의되었습니다.

1163 {
1164 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
1165 if (config is null) return;
1166
1167 config.UnlockedThemeKeys = NormalizeUnlockedThemeKeys(unlockedThemeKeys);
1168 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
1169 await LoadAsync(ct).ConfigureAwait(false);
1170 StatusMessage = $"✅ '{slug}' 테마 권한 저장됨";
1171 }

다음을 참조함 : _tenants, LoadAsync(), NormalizeUnlockedThemeKeys(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _globalSettings

readonly IGlobalSettingsStore WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._globalSettings
private

global Settings 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 45 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync(), WeddingSuperAdminViewModel().

◆ _mediaMigration

readonly IMediaMigrationService WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._mediaMigration
private

media Migration 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 72 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : LoadAsync(), QueueImageMigrationAsync(), RefreshMediaUsageAsync(), RetryImageMigrationAsync(), WeddingSuperAdminViewModel().

◆ _mediaUsage

readonly IMediaUsageQueryService WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._mediaUsage
private

media Usage 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 63 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : RefreshMediaUsageAsync(), WeddingSuperAdminViewModel().

◆ _opts

readonly WeddingOptions WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._opts
private

opts 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 36 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : LoginAsync(), WeddingSuperAdminViewModel().

◆ _superAdminTokens

readonly ISuperAdminSessionTokenService WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._superAdminTokens
private

super Admin Tokens 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 81 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : LoginAsync(), WeddingSuperAdminViewModel().

◆ _tenants

readonly ITenantStore WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._tenants
private

◆ _userContext

readonly WeddingUserContext WeddingPlatform.ViewModels.WeddingSuperAdminViewModel._userContext
private

user Context 값을 보관합니다.

WeddingSuperAdminViewModel.cs 파일의 54 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : CreateTenantAsync(), WeddingSuperAdminViewModel().

속성 문서화

◆ IsAuthenticated

bool WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.IsAuthenticated
getprivate set

Is Authenticated 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 303 번째 라인에서 정의되었습니다.

303{ get; private set; }

다음에 의해서 참조됨 : LoginAsync(), RestoreSession().

◆ IsLoaded

bool WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.IsLoaded
getprivate set

Is Loaded 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 387 번째 라인에서 정의되었습니다.

387{ get; private set; }

다음에 의해서 참조됨 : LoadAsync().

◆ IsMediaUsageAccurate

bool WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.IsMediaUsageAccurate = new Dictionary<string, TenantMediaUsageSummary>(StringComparer.OrdinalIgnoreCase)
getprivate set

현재 미디어 사용량이 실제 파일 시스템 스캔으로 갱신된 값인지 여부입니다.

WeddingSuperAdminViewModel.cs 파일의 210 번째 라인에서 정의되었습니다.

210{ get; private set; }

다음에 의해서 참조됨 : LoadAsync(), RefreshMediaUsageAsync().

◆ LoginPassword

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.LoginPassword = ""
getset

Login Password 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 312 번째 라인에서 정의되었습니다.

312{ get; set; } = "";

다음에 의해서 참조됨 : LoginAsync().

◆ MaxVideoCount

int WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.MaxVideoCount = 1
getset

계정당 동영상 업로드 최대 개수(기본값). 0이면 무제한.

WeddingSuperAdminViewModel.cs 파일의 182 번째 라인에서 정의되었습니다.

182{ get; set; } = 1;

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ MaxVideoSizeMb

int WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.MaxVideoSizeMb = 50
getset

동영상 업로드 최대 용량(MB). 0이면 무제한.

WeddingSuperAdminViewModel.cs 파일의 173 번째 라인에서 정의되었습니다.

173{ get; set; } = 50;

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ MediaPolicy

MediaPolicySettings WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.MediaPolicy = MediaPolicySettings.CreateDefault()
getset

전체/등급별 미디어 정책입니다.

WeddingSuperAdminViewModel.cs 파일의 191 번째 라인에서 정의되었습니다.

191{ get; set; } = MediaPolicySettings.CreateDefault();

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ MediaUsage

IReadOnlyDictionary<string, TenantMediaUsageSummary> WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.MediaUsage
getprivate set

테넌트별 미디어 사용량 요약입니다.

WeddingSuperAdminViewModel.cs 파일의 200 번째 라인에서 정의되었습니다.

200{ get; private set; }

다음에 의해서 참조됨 : BuildFastMediaUsage(), LoadAsync(), RefreshMediaUsageAsync().

◆ MigrationStatuses

IReadOnlyDictionary<string, MediaMigrationTenantStatus> WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.MigrationStatuses
getprivate set

테넌트별 이미지 최적화 마이그레이션 상태입니다.

WeddingSuperAdminViewModel.cs 파일의 219 번째 라인에서 정의되었습니다.

219{ get; private set; }

다음에 의해서 참조됨 : LoadAsync(), RefreshMediaUsageAsync(), ResolveMigrationState().

◆ NewCoupleName

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NewCoupleName = ""
getset

New Couple Name 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 406 번째 라인에서 정의되었습니다.

406{ get; set; } = "";

다음에 의해서 참조됨 : CreateTenantAsync().

◆ NewPassword

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NewPassword = ""
getset

New Password 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 415 번째 라인에서 정의되었습니다.

415{ get; set; } = "";

다음에 의해서 참조됨 : CreateTenantAsync().

◆ NewSlug

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NewSlug = ""
getset

New Slug 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 397 번째 라인에서 정의되었습니다.

397{ get; set; } = "";

다음에 의해서 참조됨 : CreateTenantAsync().

◆ NewWeddingDate

DateTime WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.NewWeddingDate = DateTime.Today.AddMonths(3)
getset

New Wedding Date 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 424 번째 라인에서 정의되었습니다.

424{ get; set; } = DateTime.Today.AddMonths(3);

다음에 의해서 참조됨 : CreateTenantAsync().

◆ StatusMessage

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.StatusMessage = ""
getprivate set

◆ SuperAdminSessionToken

string WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.SuperAdminSessionToken = ""
getprivate set

Super Admin Session Token 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 321 번째 라인에서 정의되었습니다.

321{ get; private set; } = "";

다음에 의해서 참조됨 : LoginAsync().

◆ Tenants

IReadOnlyList<TenantConfig> WeddingPlatform.ViewModels.WeddingSuperAdminViewModel.Tenants = []
getprivate set

Tenants 값을 가져오거나 설정합니다.

WeddingSuperAdminViewModel.cs 파일의 369 번째 라인에서 정의되었습니다.

369{ get; private set; } = [];

다음에 의해서 참조됨 : BuildFastMediaUsage(), RefreshMediaUsageAsync(), ReloadTenantsAsync().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: