WeddingThankYou 1.0.0.0
결혼식 이후 감사 인사와 사진, 계좌 안내, 연락처를 모바일 페이지로 전달하는 감사장 서비스입니다.
로딩중...
검색중...
일치하는것 없음
WeddingThankYou.ViewModels.GuestbookViewModel 클래스 참조sealed
WeddingThankYou.ViewModels.GuestbookViewModel에 대한 협력 다이어그램:

Public 멤버 함수

 GuestbookViewModel (IGuestbookStorage storage)
void ApplyDefaultMessage ()
async Task InitializeAsync (string slug, CancellationToken ct=default)
async Task AddEntryAsync (string slug, CancellationToken ct=default)
async Task ReloadAsync (string slug, CancellationToken ct=default)

속성

string Name = string.Empty [get, set]
string Contact = string.Empty [get, set]
string Message = string.Empty [get, set]
string LastStatus = string.Empty [get, private set]
bool IsSaving [get, private set]
IReadOnlyList< GuestbookEntryViewEntriesView [get]

Private 속성

readonly IGuestbookStorage _storage
List< GuestbookEntry_entries = new()

정적 Private 속성

static readonly string[] DefaultMessages

상세한 설명

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

생성자 & 소멸자 문서화

◆ GuestbookViewModel()

WeddingThankYou.ViewModels.GuestbookViewModel.GuestbookViewModel ( IGuestbookStorage storage)
inline

DI 생성자.

매개변수
storagestorage에 사용할 IGuestbookStorage 값입니다.

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

56=> _storage = storage;

다음을 참조함 : _storage.

멤버 함수 문서화

◆ AddEntryAsync()

async Task WeddingThankYou.ViewModels.GuestbookViewModel.AddEntryAsync ( string slug,
CancellationToken ct = default )
inline

등록(추가) + 즉시 저장.

검증(공백 방지) → 메모리 목록 상단 삽입 → 전체 저장소에 저장.

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

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

228 {
229 if (IsSaving) return;
230 if (string.IsNullOrWhiteSpace(Name)) { LastStatus = "이름을 입력해주세요."; return; }
231 if (string.IsNullOrWhiteSpace(Message)) { LastStatus = "메시지를 입력해주세요."; return; }
232
233 var entry = new GuestbookEntry
234 {
235 Name = Name.Trim(),
236 Contact = Contact?.Trim() ?? string.Empty,
237 Message = Message.Trim(),
238 CreatedLocal = DateTime.Now
239 };
240
241 IsSaving = true;
242 try
243 {
244 var updated = new List<GuestbookEntry> { entry };
245 updated.AddRange(_entries);
246 await _storage.SaveAsync(slug, updated, ct).ConfigureAwait(false);
247 _entries = updated;
248 Name = string.Empty;
249 Contact = string.Empty;
250 Message = string.Empty;
251 LastStatus = "저장되었습니다. 감사합니다 🙏";
252 }
253 catch { LastStatus = "저장 중 오류가 발생했어요."; }
254 finally { IsSaving = false; }
255 }

다음을 참조함 : _entries, _storage, Contact, IsSaving, LastStatus, Message, Name.

◆ ApplyDefaultMessage()

void WeddingThankYou.ViewModels.GuestbookViewModel.ApplyDefaultMessage ( )
inline

메시지가 비어 있으면 추천 문구 중 하나를 랜덤으로 채웁니다.

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

114 {
115 if (string.IsNullOrEmpty(Message))
116 Message = DefaultMessages[Random.Shared.Next(DefaultMessages.Length)];
117 }

다음을 참조함 : DefaultMessages, Message.

◆ InitializeAsync()

async Task WeddingThankYou.ViewModels.GuestbookViewModel.InitializeAsync ( string slug,
CancellationToken ct = default )
inline

페이지 최초 로드시 슬러그별 저장소에서 목록 로드.

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

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

185 {
186 try
187 {
188 var list = await _storage.LoadAsync(slug, ct).ConfigureAwait(false);
189 _entries = list.ToList();
190 LastStatus = string.Empty;
191 }
192 catch { LastStatus = "방명록 데이터를 불러오는 중 오류가 발생했어요."; }
193 }

다음을 참조함 : _entries, _storage, LastStatus.

◆ ReloadAsync()

async Task WeddingThankYou.ViewModels.GuestbookViewModel.ReloadAsync ( string slug,
CancellationToken ct = default )
inline

파일에서 다시 불러오기.

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

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

290 {
291 try
292 {
293 var list = await _storage.LoadAsync(slug, ct).ConfigureAwait(false);
294 _entries = list.ToList();
295 LastStatus = "새로고침 완료";
296 }
297 catch { LastStatus = "새로고침 중 오류가 발생했어요."; }
298 }

다음을 참조함 : _entries, _storage, LastStatus.

멤버 데이터 문서화

◆ _entries

List<GuestbookEntry> WeddingThankYou.ViewModels.GuestbookViewModel._entries = new()
private

entries 값을 보관합니다.

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

다음에 의해서 참조됨 : AddEntryAsync(), InitializeAsync(), ReloadAsync().

◆ _storage

readonly IGuestbookStorage WeddingThankYou.ViewModels.GuestbookViewModel._storage
private

storage 값을 보관합니다.

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

다음에 의해서 참조됨 : AddEntryAsync(), GuestbookViewModel(), InitializeAsync(), ReloadAsync().

◆ DefaultMessages

readonly string [] WeddingThankYou.ViewModels.GuestbookViewModel.DefaultMessages
staticprivate
초기값:
=
{
"💖 두 분의 앞날에 사랑과 행복이 가득하시길 바랍니다 ✨",
"🎉 결혼을 진심으로 축하드립니다! 영원히 함께하세요 💍",
"🌸 오늘의 약속이 평생의 기쁨으로 이어지길 바랍니다 💕",
"🕊️ 늘 서로를 아끼고 존중하며 행복한 가정을 꾸리시길 🙏",
"🌈 두 분의 미래가 언제나 밝고 빛나길 바랍니다 ✨"
}

Default Messages 값을 보관합니다.

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

96 {
97 "💖 두 분의 앞날에 사랑과 행복이 가득하시길 바랍니다 ✨",
98 "🎉 결혼을 진심으로 축하드립니다! 영원히 함께하세요 💍",
99 "🌸 오늘의 약속이 평생의 기쁨으로 이어지길 바랍니다 💕",
100 "🕊️ 늘 서로를 아끼고 존중하며 행복한 가정을 꾸리시길 🙏",
101 "🌈 두 분의 미래가 언제나 밝고 빛나길 바랍니다 ✨"
102 };

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

속성 문서화

◆ Contact

string WeddingThankYou.ViewModels.GuestbookViewModel.Contact = string.Empty
getset

입력: 연락처(저장만 함, 화면 미노출).

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

76{ get; set; } = string.Empty;

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

◆ EntriesView

IReadOnlyList<GuestbookEntryView> WeddingThankYou.ViewModels.GuestbookViewModel.EntriesView
get

화면 표시 전용 목록(이름/메시지/일시만 포함, 최신순).

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

◆ IsSaving

bool WeddingThankYou.ViewModels.GuestbookViewModel.IsSaving
getprivate set

저장 중 여부(더블탭 방지).

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

137{ get; private set; }

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

◆ LastStatus

string WeddingThankYou.ViewModels.GuestbookViewModel.LastStatus = string.Empty
getprivate set

상태 메시지(UI 알림).

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

127{ get; private set; } = string.Empty;

다음에 의해서 참조됨 : AddEntryAsync(), InitializeAsync(), ReloadAsync().

◆ Message

string WeddingThankYou.ViewModels.GuestbookViewModel.Message = string.Empty
getset

입력: 축하/감사 메시지.

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

86{ get; set; } = string.Empty;

다음에 의해서 참조됨 : AddEntryAsync(), ApplyDefaultMessage().

◆ Name

string WeddingThankYou.ViewModels.GuestbookViewModel.Name = string.Empty
getset

입력: 이름.

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

66{ get; set; } = string.Empty;

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


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