Portfolio.Web 1.0.0.0
.NET, Blazor, WPF와 서비스 운영 경험을 프로젝트·이력·기술 스택 단위로 보여주는 개발자 포트폴리오입니다.
로딩중...
검색중...
일치하는것 없음
PortfolioApp.ViewModels.PortfolioHomeViewModel 클래스 참조

더 자세히 ...

PortfolioApp.ViewModels.PortfolioHomeViewModel에 대한 협력 다이어그램:

Public 멤버 함수

 PortfolioHomeViewModel (IPortfolioTenantStore tenants, IProjectStore projects, PortfolioOptions opts, PortfolioUserContext userContext)
async Task LoadAsync ()
async Task< bool > CreateTenantAsync ()
Task< bool > LoginAsync ()
async Task SaveTenantAsync (PortfolioConfig cfg)
async Task DeleteTenantAsync (string slug)

속성

List< PortfolioConfigTenants = [] [get, private set]
Dictionary< string, int > ProjectCounts = [] [get, private set]
string StatusMessage = "" [get, set]
bool IsAuthenticated [get, private set]
string LoginPassword = "" [get, set]
string NewSlug = "" [get, set]
string NewOwnerName = "" [get, set]
string NewPassword = "" [get, set]

Private 속성

readonly IPortfolioTenantStore _tenants
readonly IProjectStore _projects
readonly PortfolioOptions _opts
readonly PortfolioUserContext _userContext

상세한 설명

Portfolio Home View Model 기능과 관련 상태를 캡슐화합니다.

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

생성자 & 소멸자 문서화

◆ PortfolioHomeViewModel()

PortfolioApp.ViewModels.PortfolioHomeViewModel.PortfolioHomeViewModel ( IPortfolioTenantStore tenants,
IProjectStore projects,
PortfolioOptions opts,
PortfolioUserContext userContext )
inline

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

매개변수
tenantstenants에 사용할 IPortfolioTenantStore 값입니다.
projectsprojects에 사용할 IProjectStore 값입니다.
optsopts에 사용할 PortfolioOptions 값입니다.
userContextuser Context에 사용할 PortfolioUserContext 값입니다.

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

174 {
175 _tenants = tenants;
176 _projects = projects;
177 _opts = opts;
178 _userContext = userContext;
179 }

다음을 참조함 : _opts, _projects, _tenants, _userContext.

멤버 함수 문서화

◆ CreateTenantAsync()

async Task< bool > PortfolioApp.ViewModels.PortfolioHomeViewModel.CreateTenantAsync ( )
inline

Tenant Async 값을 생성합니다.

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

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

226 {
227 StatusMessage = "";
228 if (string.IsNullOrWhiteSpace(NewSlug)) { StatusMessage = "❌ URL 주소를 입력하세요."; return false; }
229 if (string.IsNullOrWhiteSpace(NewOwnerName)) { StatusMessage = "❌ 이름을 입력하세요."; return false; }
230 if (NewPassword.Length < 8) { StatusMessage = "❌ 비밀번호는 8자 이상이어야 합니다."; return false; }
231
232 var slug = NewSlug.Trim().ToLowerInvariant();
233 var existing = await _tenants.GetAsync(slug);
234 if (existing != null) { StatusMessage = "❌ 이미 사용 중인 주소입니다."; return false; }
235
236 var user = await _userContext.GetCurrentAsync().ConfigureAwait(false);
237 var cfg = new PortfolioConfig
238 {
239 Slug = slug,
240 OwnerName = NewOwnerName.Trim(),
241 Title = "개발자",
242 Bio = "",
243 ThemeName = "dark",
244 PasswordHash = DreaminePasswordHasher.HashPassword(NewPassword),
245 ShowOnHome = true,
246 CreatedAt = DateTime.Now,
247 };
248
249 if (user.IsAuthenticated)
250 {
251 cfg.OwnerUserId = user.Id;
252 cfg.OwnerProvider = user.Provider;
253 cfg.OwnerEmail = user.Email;
254 cfg.OwnerDisplayName = user.DisplayName;
255 cfg.OwnerLinkedAt = DateTime.Now;
256 cfg.AdminUsers.Add(new PortfolioAdminUser
257 {
258 UserId = user.Id,
259 Provider = user.Provider,
260 Email = user.Email,
261 DisplayName = user.DisplayName,
262 Role = "Owner",
263 AddedAt = DateTime.Now
264 });
265 }
266
267 await _tenants.SaveAsync(cfg);
268 StatusMessage = $"✅ '{slug}' 포트폴리오가 생성되었습니다!";
269 return true;
270 }

다음을 참조함 : _tenants, _userContext, NewOwnerName, NewPassword, NewSlug, StatusMessage.

◆ DeleteTenantAsync()

async Task PortfolioApp.ViewModels.PortfolioHomeViewModel.DeleteTenantAsync ( string slug)
inline

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

매개변수
slugslug에 사용할 string 값입니다.
반환값
Delete Tenant Async 작업에서 생성한 Task 결과입니다.

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

355 {
356 await _tenants.DeleteAsync(slug);
357 await LoadAsync();
358 StatusMessage = $"✅ '{slug}' 삭제 완료.";
359 }

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

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

◆ LoadAsync()

async Task PortfolioApp.ViewModels.PortfolioHomeViewModel.LoadAsync ( )
inline

Async 데이터를 불러옵니다.

반환값
Load Async 작업에서 생성한 Task 결과입니다.

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

198 {
199 Tenants = await _tenants.GetAllAsync();
200 var counts = new Dictionary<string, int>();
201 foreach (var t in Tenants)
202 {
203 var list = await _projects.GetAllAsync(t.Slug);
204 counts[t.Slug] = list.Count;
205 }
206 ProjectCounts = counts;
207 }

다음을 참조함 : _projects, _tenants, ProjectCounts, Tenants.

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

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

◆ LoginAsync()

Task< bool > PortfolioApp.ViewModels.PortfolioHomeViewModel.LoginAsync ( )
inline

Login Async 작업을 수행합니다.

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

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

289 {
290 if (DreaminePasswordHasher.VerifyPassword(LoginPassword, _opts.SuperAdminPassword))
291 {
292 IsAuthenticated = true;
293 StatusMessage = "";
294 return Task.FromResult(true);
295 }
296 StatusMessage = "❌ 비밀번호가 틀렸습니다.";
297 return Task.FromResult(false);
298 }

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

◆ SaveTenantAsync()

async Task PortfolioApp.ViewModels.PortfolioHomeViewModel.SaveTenantAsync ( PortfolioConfig cfg)
inline

Tenant Async 데이터를 저장합니다.

매개변수
cfgcfg에 사용할 PortfolioConfig 값입니다.
반환값
Save Tenant Async 작업에서 생성한 Task 결과입니다.

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

325 {
326 await _tenants.SaveAsync(cfg);
327 StatusMessage = $"✅ '{cfg.Slug}' 저장 완료.";
328 }

다음을 참조함 : _tenants, StatusMessage.

멤버 데이터 문서화

◆ _opts

readonly PortfolioOptions PortfolioApp.ViewModels.PortfolioHomeViewModel._opts
private

opts 값을 보관합니다.

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

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

◆ _projects

readonly IProjectStore PortfolioApp.ViewModels.PortfolioHomeViewModel._projects
private

projects 값을 보관합니다.

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

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

◆ _tenants

readonly IPortfolioTenantStore PortfolioApp.ViewModels.PortfolioHomeViewModel._tenants
private

tenants 값을 보관합니다.

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

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), LoadAsync(), PortfolioHomeViewModel(), SaveTenantAsync().

◆ _userContext

readonly PortfolioUserContext PortfolioApp.ViewModels.PortfolioHomeViewModel._userContext
private

user Context 값을 보관합니다.

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

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

속성 문서화

◆ IsAuthenticated

bool PortfolioApp.ViewModels.PortfolioHomeViewModel.IsAuthenticated
getprivate set

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

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

89{ get; private set; }

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

◆ LoginPassword

string PortfolioApp.ViewModels.PortfolioHomeViewModel.LoginPassword = ""
getset

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

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

98{ get; set; } = "";

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

◆ NewOwnerName

string PortfolioApp.ViewModels.PortfolioHomeViewModel.NewOwnerName = ""
getset

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

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

118{ get; set; } = "";

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

◆ NewPassword

string PortfolioApp.ViewModels.PortfolioHomeViewModel.NewPassword = ""
getset

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

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

127{ get; set; } = "";

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

◆ NewSlug

string PortfolioApp.ViewModels.PortfolioHomeViewModel.NewSlug = ""
getset

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

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

109{ get; set; } = "";

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

◆ ProjectCounts

Dictionary<string, int> PortfolioApp.ViewModels.PortfolioHomeViewModel.ProjectCounts = []
getprivate set

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

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

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

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

◆ StatusMessage

string PortfolioApp.ViewModels.PortfolioHomeViewModel.StatusMessage = ""
getset

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

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

80{ get; set; } = "";

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), LoginAsync(), SaveTenantAsync().

◆ Tenants

List<PortfolioConfig> PortfolioApp.ViewModels.PortfolioHomeViewModel.Tenants = []
getprivate set

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

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

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

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


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