Files
taxbaik/src/TaxBaik.Application/Services/InquiryStatusMapper.cs
T
kjh2064 7ff8689a72
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m33s
refactor: unify inquiry status strings using constants (P1-06)
Problem: Inquiry status values were hardcoded as strings in multiple places:
- InquiryList.razor: Status="new", Status="consulting", etc.
- InquiryDetail.razor: inquiry.Status = "consulting"
- Makes it error-prone to update status values globally

Solution:
- Add public const fields to InquiryStatusMapper for all status values
- Replace hardcoded strings with constants (StatusNew, StatusConsulting, etc.)
- InquiryList and InquiryDetail now use mapper constants

Result: Single source of truth for status values. Changing a status value now
requires only updating InquiryStatusMapper, and all usages automatically update.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-03 11:29:36 +09:00

48 lines
1.6 KiB
C#

namespace TaxBaik.Application.Services;
using TaxBaik.Domain.Enums;
public static class InquiryStatusMapper
{
// Status storage values (database)
public const string StatusNew = "new";
public const string StatusConsulting = "consulting";
public const string StatusContracted = "contracted";
public const string StatusRejected = "rejected";
public const string StatusClosed = "closed";
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";
}
}