WeddingThankYou
1.0.0.0
결혼식 이후 감사 인사와 사진, 계좌 안내, 연락처를 모바일 페이지로 전달하는 감사장 서비스입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
GuestbookViewModel.cs
이 파일의 문서화 페이지로 가기
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Linq;
4
using
System.Threading;
5
using
System.Threading.Tasks;
6
using
WeddingThankYou.Models
;
7
using
WeddingThankYou.Services
;
8
9
namespace
WeddingThankYou.ViewModels
10
{
19
public
sealed
class
GuestbookViewModel
20
{
29
private
readonly
IGuestbookStorage
_storage
;
38
private
List<GuestbookEntry>
_entries
=
new
();
39
56
public
GuestbookViewModel
(
IGuestbookStorage
storage) =>
_storage
= storage;
57
66
public
string
Name
{
get
;
set
; } =
string
.Empty;
67
76
public
string
Contact
{
get
;
set
; } =
string
.Empty;
77
86
public
string
Message
{
get
;
set
; } =
string
.Empty;
87
96
private
static
readonly
string
[]
DefaultMessages
=
97
{
98
"💖 두 분의 앞날에 사랑과 행복이 가득하시길 바랍니다 ✨"
,
99
"🎉 결혼을 진심으로 축하드립니다! 영원히 함께하세요 💍"
,
100
"🌸 오늘의 약속이 평생의 기쁨으로 이어지길 바랍니다 💕"
,
101
"🕊️ 늘 서로를 아끼고 존중하며 행복한 가정을 꾸리시길 🙏"
,
102
"🌈 두 분의 미래가 언제나 밝고 빛나길 바랍니다 ✨"
103
};
104
113
public
void
ApplyDefaultMessage
()
114
{
115
if
(
string
.IsNullOrEmpty(
Message
))
116
Message
=
DefaultMessages
[Random.Shared.Next(
DefaultMessages
.Length)];
117
}
118
127
public
string
LastStatus
{
get
;
private
set
; } =
string
.Empty;
128
137
public
bool
IsSaving
{
get
;
private
set
; }
138
147
public
IReadOnlyList<GuestbookEntryView>
EntriesView
=>
148
_entries
.OrderByDescending(e => e.CreatedLocal)
149
.Select(e =>
new
GuestbookEntryView
{
Name
= e.Name,
Message
= e.Message, CreatedLocal = e.CreatedLocal })
150
.ToList();
151
184
public
async Task
InitializeAsync
(
string
slug, CancellationToken ct =
default
)
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
}
194
227
public
async Task
AddEntryAsync
(
string
slug, CancellationToken ct =
default
)
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
}
256
289
public
async Task
ReloadAsync
(
string
slug, CancellationToken ct =
default
)
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
}
299
}
300
309
public
sealed
class
GuestbookEntryView
310
{
319
public
string
Name
{
get
; init; } =
string
.Empty;
328
public
string
Message
{
get
; init; } =
string
.Empty;
337
public
DateTime
CreatedLocal
{
get
; init; }
338
}
339
}
WeddingThankYou.Models
Definition
AccountInfo.cs:1
WeddingThankYou.Services
Definition
CsvGuestbookStorage.cs:12
WeddingThankYou.ViewModels
Definition
AdminViewModel.cs:11
WeddingThankYou.Models.GuestbookEntry
Definition
GuestbookEntry.cs:14
WeddingThankYou.Services.IGuestbookStorage
Definition
IGuestbookStorage.cs:17
WeddingThankYou.ViewModels.GuestbookViewModel.ReloadAsync
async Task ReloadAsync(string slug, CancellationToken ct=default)
Definition
GuestbookViewModel.cs:289
WeddingThankYou.ViewModels.GuestbookViewModel._storage
readonly IGuestbookStorage _storage
Definition
GuestbookViewModel.cs:29
WeddingThankYou.ViewModels.GuestbookViewModel.LastStatus
string LastStatus
Definition
GuestbookViewModel.cs:127
WeddingThankYou.ViewModels.GuestbookViewModel.EntriesView
IReadOnlyList< GuestbookEntryView > EntriesView
Definition
GuestbookViewModel.cs:147
WeddingThankYou.ViewModels.GuestbookViewModel.InitializeAsync
async Task InitializeAsync(string slug, CancellationToken ct=default)
Definition
GuestbookViewModel.cs:184
WeddingThankYou.ViewModels.GuestbookViewModel.Message
string Message
Definition
GuestbookViewModel.cs:86
WeddingThankYou.ViewModels.GuestbookViewModel.Contact
string Contact
Definition
GuestbookViewModel.cs:76
WeddingThankYou.ViewModels.GuestbookViewModel.GuestbookViewModel
GuestbookViewModel(IGuestbookStorage storage)
Definition
GuestbookViewModel.cs:56
WeddingThankYou.ViewModels.GuestbookViewModel.IsSaving
bool IsSaving
Definition
GuestbookViewModel.cs:137
WeddingThankYou.ViewModels.GuestbookViewModel._entries
List< GuestbookEntry > _entries
Definition
GuestbookViewModel.cs:38
WeddingThankYou.ViewModels.GuestbookViewModel.ApplyDefaultMessage
void ApplyDefaultMessage()
Definition
GuestbookViewModel.cs:113
WeddingThankYou.ViewModels.GuestbookViewModel.AddEntryAsync
async Task AddEntryAsync(string slug, CancellationToken ct=default)
Definition
GuestbookViewModel.cs:227
WeddingThankYou.ViewModels.GuestbookViewModel.DefaultMessages
static readonly string[] DefaultMessages
Definition
GuestbookViewModel.cs:96
WeddingThankYou.ViewModels.GuestbookViewModel.Name
string Name
Definition
GuestbookViewModel.cs:66
WeddingThankYou.ViewModels.GuestbookEntryView
Definition
GuestbookViewModel.cs:310
WeddingThankYou.ViewModels.GuestbookEntryView.Name
string Name
Definition
GuestbookViewModel.cs:319
WeddingThankYou.ViewModels.GuestbookEntryView.CreatedLocal
DateTime CreatedLocal
Definition
GuestbookViewModel.cs:337
WeddingThankYou.ViewModels.GuestbookEntryView.Message
string Message
Definition
GuestbookViewModel.cs:328
ViewModels
GuestbookViewModel.cs
다음에 의해 생성됨 :
1.17.0