FileStoragePath.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. namespace SharedKernel.Storage
  2. {
  3. public enum UploadTarget
  4. {
  5. Editor = 1,
  6. Upload
  7. }
  8. public enum UploadFolder
  9. {
  10. Basic = 1, // 기본 설정
  11. EmailTemplate, // 알림 발송 양식 - 이메일
  12. Document, // 문서
  13. Faq, // 자주 묻는 질문
  14. Popup, // 팝업
  15. Banner, // 배너
  16. MemberGrade, // 회원등급
  17. MemberThumb, // 회원 사진
  18. MemberIcon, // 회원 아이콘
  19. Board // 게시판
  20. }
  21. // 추가 경로 값
  22. public enum UploadAddition
  23. {
  24. // 기본 설정
  25. BlockAlertContent = 1,
  26. MaintenanceContent,
  27. // 게시판
  28. ListHeaderContent, // 게시판 목록 - 상단 내용
  29. ListFooterContent, // 게시판 목록 - 하단 내용
  30. PostWriteEmailNotifyContent , // 게시판 알림 양식 - 게시글 작성 시 내용
  31. CommentWriteEmailNotifyContent, // 게시판 알림 양식 - 댓글 작성 시 내용
  32. ReplyWriteEmailNotifyContent, // 게시판 알림 양식 - 답글 작성 시 내용
  33. WriteHeaderContent, // 게시판 작성 - 상단 내용
  34. WriteFooterContent, // 게시판 작성 - 하단 내용
  35. WriteDefaultContent, // 게시판 작성 - 작성란 기본 내용
  36. // 알림 발송 양식- 이메일
  37. RegisterEmailFormContent,
  38. RegistrationEmailFormContent,
  39. ResetPasswordEmailFormContent,
  40. ChangedPasswordEmailFormContent,
  41. WithdrawEmailFormContent,
  42. EmailVerifyFormContent,
  43. ChangedEmailFormContent
  44. }
  45. public readonly record struct FileStoragePath(UploadTarget Target, UploadFolder Folder, int? ID = null, UploadAddition? Addition = null)
  46. {
  47. public string ToRelativePath()
  48. {
  49. string t = Target switch
  50. {
  51. UploadTarget.Editor => "editors",
  52. UploadTarget.Upload => "uploads"
  53. };
  54. string f = Folder switch
  55. {
  56. UploadFolder.Basic => "basic",
  57. UploadFolder.EmailTemplate => "template/email",
  58. UploadFolder.Document => "document",
  59. UploadFolder.Faq => "faq",
  60. UploadFolder.Popup => "popup",
  61. UploadFolder.Banner => "banner",
  62. UploadFolder.MemberGrade => "member/grade",
  63. UploadFolder.MemberThumb => "member/thumb",
  64. UploadFolder.Board => "board"
  65. };
  66. var a = Addition.HasValue ? ((int)Addition.Value).ToString() : string.Empty;
  67. return string.Join('/', new[] { t, f, ID.ToString(), a }.Where(x => !string.IsNullOrWhiteSpace(x)));
  68. }
  69. }
  70. }