Files
taxbaik/TaxBaik.Application/Services/InquiryStatusMapper.cs
kjh2064 79492184d0
TaxBaik CI/CD / build-and-deploy (push) Successful in 55s
TaxBaik Browser E2E / browser-e2e (push) Failing after 1m53s
feat: CRM Phase 1-2 완성 + 시즌 시뮬레이터 + 개인정보처리방침/이용약관
- WBS-CRM-02: 상담 이력 (consultations 테이블 V008, ClientDetail.razor)
- WBS-CRM-03: 문의→고객 전환 (V009 client_id FK, InquiryDetail 고객등록 버튼)
- WBS-CRM-04: 신고 일정 캘린더 (tax_filings 테이블 V010, TaxFilingList.razor)
- WBS-CRM-05: 문의 상태 5단계 확장 (V011, InquiryStatus enum, InquiryList 탭)
- WBS-MKT-04: 시즌 시뮬레이터 어드민 페이지 (SeasonSimulator.razor)
- WBS-UX-04: 개인정보처리방침 /taxbaik/privacy, 이용약관 /taxbaik/terms
- Dashboard.razor 마감 임박 신고 위젯 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 00:01:16 +09:00

41 lines
1.3 KiB
C#

namespace TaxBaik.Application.Services;
using TaxBaik.Domain.Enums;
public static class InquiryStatusMapper
{
public static readonly Dictionary<string, string> Labels = new()
{
["new"] = "신규",
["consulting"] = "상담중",
["contracted"] = "계약완료",
["rejected"] = "거절",
["closed"] = "종결",
};
public static string ToStorageValue(InquiryStatus status) => status switch
{
InquiryStatus.New => "new",
InquiryStatus.Consulting => "consulting",
InquiryStatus.Contracted => "contracted",
InquiryStatus.Rejected => "rejected",
InquiryStatus.Closed => "closed",
_ => throw new ArgumentOutOfRangeException(nameof(status), status, null)
};
public static bool TryParse(string? value, out InquiryStatus status)
{
var key = value?.Trim().ToLowerInvariant();
status = key switch
{
"new" => InquiryStatus.New,
"consulting" => InquiryStatus.Consulting,
"contracted" => InquiryStatus.Contracted,
"rejected" => InquiryStatus.Rejected,
"closed" => InquiryStatus.Closed,
_ => default
};
return key is "new" or "consulting" or "contracted" or "rejected" or "closed";
}
}