Procházet zdrojové kódy

feat: antooza 베이스서비스 백포트 (Phase 0-3): CQRS 디스패처 / AES-GCM 암호화 / 리워드엔진·출석 + IIS 배포 Jenkinsfile

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
jino před 1 dnem
rodič
revize
86a08a780c
100 změnil soubory, kde provedl 374 přidání a 371 odebrání
  1. 6 0
      .editorconfig
  2. 13 16
      Admin/Admin.csproj
  3. 4 4
      Admin/Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml
  4. 16 16
      Admin/Pages/Banner/List/Edit.cshtml
  5. 20 20
      Admin/Pages/Banner/List/Edit.cshtml.cs
  6. 17 17
      Admin/Pages/Banner/List/Index.cshtml
  7. 6 6
      Admin/Pages/Banner/List/Index.cshtml.cs
  8. 15 15
      Admin/Pages/Banner/List/Write.cshtml
  9. 19 19
      Admin/Pages/Banner/List/Write.cshtml.cs
  10. 19 19
      Admin/Pages/Banner/Position.cshtml
  11. 2 2
      Admin/Pages/Banner/Position.cshtml.cs
  12. 1 1
      Admin/Pages/Channel/List/Edit.cshtml.cs
  13. 1 1
      Admin/Pages/Channel/List/Index.cshtml.cs
  14. 1 1
      Admin/Pages/Channel/List/View.cshtml.cs
  15. 1 1
      Admin/Pages/Channel/List/Write.cshtml.cs
  16. 18 18
      Admin/Pages/Config/Basic/Images.cshtml
  17. 1 1
      Admin/Pages/Config/Basic/Images.cshtml.cs
  18. 2 2
      Admin/Pages/Config/Basic/Index.cshtml.cs
  19. 3 3
      Admin/Pages/Config/Company.cshtml.cs
  20. 2 2
      Admin/Pages/Config/External.cshtml.cs
  21. 2 2
      Admin/Pages/Config/Meta.cshtml.cs
  22. 2 2
      Admin/Pages/Config/Register.cshtml.cs
  23. 2 2
      Admin/Pages/Config/Template/Email.cshtml.cs
  24. 5 5
      Admin/Pages/Config/Test/Email.cshtml.cs
  25. 1 1
      Admin/Pages/Crypto/Board/Index.cshtml.cs
  26. 1 1
      Admin/Pages/Crypto/Category.cshtml.cs
  27. 1 1
      Admin/Pages/Crypto/Curation.cshtml.cs
  28. 1 1
      Admin/Pages/Crypto/List/Edit.cshtml.cs
  29. 1 1
      Admin/Pages/Crypto/List/Index.cshtml.cs
  30. 1 1
      Admin/Pages/Crypto/List/Write.cshtml.cs
  31. 1 1
      Admin/Pages/Crypto/News/Articles.cshtml.cs
  32. 1 1
      Admin/Pages/Crypto/News/Edit.cshtml.cs
  33. 1 1
      Admin/Pages/Crypto/News/Index.cshtml.cs
  34. 1 1
      Admin/Pages/Crypto/News/Write.cshtml.cs
  35. 1 1
      Admin/Pages/Crypto/TickerConfig.cshtml.cs
  36. 1 1
      Admin/Pages/Director/AccessLog/Index.cshtml.cs
  37. 1 1
      Admin/Pages/Director/LoginLog/Index.cshtml.cs
  38. 6 6
      Admin/Pages/Director/Role/Index.cshtml.cs
  39. 5 5
      Admin/Pages/Director/Role/Permission.cshtml.cs
  40. 3 3
      Admin/Pages/Director/User/Edit.cshtml.cs
  41. 2 2
      Admin/Pages/Director/User/Index.cshtml.cs
  42. 5 5
      Admin/Pages/Director/User/Roles.cshtml.cs
  43. 13 13
      Admin/Pages/Document/Edit.cshtml.cs
  44. 5 5
      Admin/Pages/Document/Index.cshtml.cs
  45. 13 13
      Admin/Pages/Document/Write.cshtml.cs
  46. 3 3
      Admin/Pages/Faq/Category.cshtml.cs
  47. 11 11
      Admin/Pages/Faq/List/Edit.cshtml
  48. 14 14
      Admin/Pages/Faq/List/Edit.cshtml.cs
  49. 17 17
      Admin/Pages/Faq/List/Index.cshtml
  50. 7 7
      Admin/Pages/Faq/List/Index.cshtml.cs
  51. 10 10
      Admin/Pages/Faq/List/Write.cshtml
  52. 11 11
      Admin/Pages/Faq/List/Write.cshtml.cs
  53. 1 1
      Admin/Pages/Forum/Attachments/CommentFile/Index.cshtml.cs
  54. 1 1
      Admin/Pages/Forum/Attachments/CommentImage/Index.cshtml.cs
  55. 1 1
      Admin/Pages/Forum/Attachments/PostFile/Index.cshtml.cs
  56. 1 1
      Admin/Pages/Forum/Attachments/PostImage/Index.cshtml.cs
  57. 1 1
      Admin/Pages/Forum/Board/Group.cshtml.cs
  58. 1 1
      Admin/Pages/Forum/Board/List/Edit.cshtml.cs
  59. 1 1
      Admin/Pages/Forum/Board/List/Index.cshtml.cs
  60. 1 1
      Admin/Pages/Forum/Board/List/Write.cshtml.cs
  61. 1 1
      Admin/Pages/Forum/Board/Manager.cshtml.cs
  62. 1 1
      Admin/Pages/Forum/Board/Meta/Comment.cshtml.cs
  63. 1 1
      Admin/Pages/Forum/Board/Meta/Exp.cshtml.cs
  64. 1 1
      Admin/Pages/Forum/Board/Meta/General.cshtml.cs
  65. 1 1
      Admin/Pages/Forum/Board/Meta/List.cshtml.cs
  66. 1 1
      Admin/Pages/Forum/Board/Meta/Notify.cshtml.cs
  67. 1 1
      Admin/Pages/Forum/Board/Meta/NotifyTemplate.cshtml.cs
  68. 1 1
      Admin/Pages/Forum/Board/Meta/Permission.cshtml.cs
  69. 1 1
      Admin/Pages/Forum/Board/Meta/View.cshtml.cs
  70. 1 1
      Admin/Pages/Forum/Board/Meta/Write.cshtml.cs
  71. 1 1
      Admin/Pages/Forum/Board/Prefix.cshtml.cs
  72. 1 1
      Admin/Pages/Forum/Comments/List/Edit.cshtml.cs
  73. 1 1
      Admin/Pages/Forum/Comments/List/Index.cshtml.cs
  74. 1 1
      Admin/Pages/Forum/Posts/List/Edit.cshtml.cs
  75. 1 1
      Admin/Pages/Forum/Posts/List/Index.cshtml.cs
  76. 1 1
      Admin/Pages/Forum/Posts/List/View.cshtml.cs
  77. 1 1
      Admin/Pages/Forum/Posts/List/Write.cshtml.cs
  78. 1 1
      Admin/Pages/Forum/Reactions/Comment/Index.cshtml.cs
  79. 1 1
      Admin/Pages/Forum/Reactions/Post/Index.cshtml.cs
  80. 6 6
      Admin/Pages/Forum/Reports/Comment/Index.cshtml.cs
  81. 6 6
      Admin/Pages/Forum/Reports/Post/Index.cshtml.cs
  82. 1 1
      Admin/Pages/Forum/Trash/Comment/Index.cshtml.cs
  83. 1 1
      Admin/Pages/Forum/Trash/Post/Index.cshtml.cs
  84. 1 1
      Admin/Pages/Member/Grade/Edit.cshtml.cs
  85. 1 1
      Admin/Pages/Member/Grade/Index.cshtml.cs
  86. 1 1
      Admin/Pages/Member/Grade/Write.cshtml.cs
  87. 1 1
      Admin/Pages/Member/List/Approve.cshtml.cs
  88. 1 1
      Admin/Pages/Member/List/Edit.cshtml.cs
  89. 1 1
      Admin/Pages/Member/List/Index.cshtml.cs
  90. 1 1
      Admin/Pages/Member/List/View.cshtml.cs
  91. 1 1
      Admin/Pages/Member/List/Write.cshtml.cs
  92. 1 1
      Admin/Pages/Member/Log/Email.cshtml.cs
  93. 1 1
      Admin/Pages/Member/Log/Intro.cshtml.cs
  94. 1 1
      Admin/Pages/Member/Log/Login/Index.cshtml.cs
  95. 1 1
      Admin/Pages/Member/Log/Login/Info.cshtml.cs
  96. 1 1
      Admin/Pages/Member/Log/Name.cshtml.cs
  97. 1 1
      Admin/Pages/Member/Log/Summary.cshtml.cs
  98. 1 1
      Admin/Pages/Member/Wallet/List/Index.cshtml.cs
  99. 1 1
      Admin/Pages/Member/Wallet/List/View.cshtml.cs
  100. 1 1
      Admin/Pages/Member/Wallet/Transactions/Index.cshtml.cs

+ 6 - 0
.editorconfig

@@ -0,0 +1,6 @@
+root = true
+
+[*.cs]
+# File-scoped namespace 선호 (C# 10+)
+csharp_style_namespace_declarations = file_scoped:warning
+dotnet_diagnostic.IDE0161.severity = warning

+ 13 - 16
Admin/Admin.csproj

@@ -1,38 +1,35 @@
-<Project Sdk="Microsoft.NET.Sdk.Web">
+<Project Sdk="Microsoft.NET.Sdk.Web">
 
 	<PropertyGroup>
-		<TargetFramework>net10.0</TargetFramework>
-		<Nullable>enable</Nullable>
-		<ImplicitUsings>enable</ImplicitUsings>
 		<HotReloadAutoRestart>true</HotReloadAutoRestart>
 	</PropertyGroup>
 
 	<ItemGroup>
 	  <None Remove="nul" />
 	</ItemGroup>
-	
+
 	<ItemGroup>
 		<None Include=".github\copilot-instructions.md" />
 	</ItemGroup>
 
 	<ItemGroup>
-		<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.5" />
-		<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.5" />
-		<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.5">
+		<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
+		<PackageReference Include="Microsoft.AspNetCore.Identity.UI" />
+		<PackageReference Include="Microsoft.EntityFrameworkCore.Design">
 			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 			<PrivateAssets>all</PrivateAssets>
 		</PackageReference>
-		<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.5" />
-		<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.5">
+		<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
+		<PackageReference Include="Microsoft.EntityFrameworkCore.Tools">
 			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 			<PrivateAssets>all</PrivateAssets>
 		</PackageReference>
-		<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.5" />
-		<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
-		<PackageReference Include="MimeKit" Version="4.15.1" />
-		<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
-		<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
-		<PackageReference Include="System.Management" Version="10.0.5" />
+		<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
+		<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" />
+		<PackageReference Include="MimeKit" />
+		<PackageReference Include="Serilog.AspNetCore" />
+		<PackageReference Include="Serilog.Sinks.File" />
+		<PackageReference Include="System.Management" />
 	</ItemGroup>
 
 	<ItemGroup>

+ 4 - 4
Admin/Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml

@@ -4,13 +4,13 @@
     var hasExternalLogins = (await SignInManager.GetExternalAuthenticationSchemesAsync()).Any();
 }
 <ul class="nav nav-pills flex-column mb-4 mb-md-0">
-    <li class="nav-item"><a class="nav-link @ManageNavPages.IndexNavClass(ViewContext)" id="profile" asp-page="./Index">±âº» Á¤º¸</a></li>
-    <li class="nav-item"><a class="nav-link @ManageNavPages.EmailNavClass(ViewContext)" id="email" asp-page="./Email">À̸ÞÀÏ º¯°æ</a></li>
-    <li class="nav-item"><a class="nav-link @ManageNavPages.ChangePasswordNavClass(ViewContext)" id="change-password" asp-page="./ChangePassword">ºñ¹Ð¹øÈ£ º¯°æ</a></li>
+    <li class="nav-item"><a class="nav-link @ManageNavPages.IndexNavClass(ViewContext)" id="profile" asp-page="./Index">기본 정보</a></li>
+    <li class="nav-item"><a class="nav-link @ManageNavPages.EmailNavClass(ViewContext)" id="email" asp-page="./Email">�메� 변경</a></li>
+    <li class="nav-item"><a class="nav-link @ManageNavPages.ChangePasswordNavClass(ViewContext)" id="change-password" asp-page="./ChangePassword">비밀번호 변경</a></li>
     @if (hasExternalLogins)
     {
         <li id="external-logins" class="nav-item"><a id="external-login" class="nav-link @ManageNavPages.ExternalLoginsNavClass(ViewContext)" asp-page="./ExternalLogins">External logins</a></li>
     }
     @* <li class="nav-item"><a class="nav-link @ManageNavPages.TwoFactorAuthenticationNavClass(ViewContext)" id="two-factor" asp-page="./TwoFactorAuthentication">Two-factor authentication</a></li> *@
-    <li class="nav-item"><a class="nav-link @ManageNavPages.PersonalDataNavClass(ViewContext)" id="personal-data" asp-page="./PersonalData">°èÁ¤ »èÁ¦</a></li>
+    <li class="nav-item"><a class="nav-link @ManageNavPages.PersonalDataNavClass(ViewContext)" id="personal-data" asp-page="./PersonalData">계정 삭제</a></li>
 </ul>

+ 16 - 16
Admin/Pages/Banner/List/Edit.cshtml

@@ -2,7 +2,7 @@
 @model Admin.Pages.Banner.List.EditModel
 
 @{
-    ViewData["Title"] = "¹è³Ê ¼öÁ¤";
+    ViewData["Title"] = "배너 수정";
 }
 
 <div class="container">
@@ -17,7 +17,7 @@
         <input type="hidden" asp-for="QueryString" />
 
         <div class="row mb-2">
-            <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span>*</span> ¹è³Ê À§Ä¡</label>
+            <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span>*</span> 배너 위치</label>
             <div class="col-sm-10">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -28,7 +28,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span>*</span> ¹è³Ê ¸í</label>
+            <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span>*</span> 배너 명</label>
             <div class="col-sm-10">
                 <input asp-for="Input.Subject" class="form-control" required />
                 <span asp-validation-for="Input.Subject" class="text-danger"></span>
@@ -42,7 +42,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label class="col-sm-2 col-form-label">ÇöÀç À̹ÌÁö</label>
+            <label class="col-sm-2 col-form-label">현재 �미지</label>
             <div class="col-sm-10">
                 <div class="mb-2">
                     <div class="form-text">
@@ -73,13 +73,13 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label class="col-sm-2 col-form-label">À̹ÌÁö</label>
+            <label class="col-sm-2 col-form-label">�미지</label>
             <div class="col-sm-10">
                 <div class="mb-3">
                     <label asp-for="Input.DesktopImageFile" class="form-label">Desktop</label>
                     <div id="DesktopBannerPrev" hidden>
-                        <img class="img-fluid img-thumbnail" alt="À̹ÌÁö(Desktop) ¹Ì¸®º¸±â" /><br />
-                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">»èÁ¦</button>
+                        <img class="img-fluid img-thumbnail" alt="�미지(Desktop) 미리보기" /><br />
+                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
                     </div>
                     <input asp-for="Input.DesktopImageFile" type="file" class="form-control" accept="image/*" />
                     <span asp-validation-for="Input.DesktopImageFile" class="text-danger"></span>
@@ -87,8 +87,8 @@
                 <div>
                     <label asp-for="Input.MobileImageFile" class="form-label">Mobile</label>
                     <div id="MobileBannerPrev" hidden>
-                        <img class="img-fluid img-thumbnail" alt="À̹ÌÁö(Mobile) ¹Ì¸®º¸±â" /><br />
-                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">»èÁ¦</button>
+                        <img class="img-fluid img-thumbnail" alt="�미지(Mobile) 미리보기" /><br />
+                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
                     </div>
                     <input asp-for="Input.MobileImageFile" type="file" class="form-control" accept="image/*" />
                     <span asp-validation-for="Input.MobileImageFile" class="text-danger"></span>
@@ -96,7 +96,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> ¼ø¼­</label>
+            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 순서</label>
             <div class="col-sm-10">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -107,7 +107,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label class="col-sm-2 col-form-label">»ç¿ë ±â°£</label>
+            <label class="col-sm-2 col-form-label">사용 기간</label>
             <div class="col-sm-10">
                 <div class="row g-2">
                     <div class="col col-md-auto">
@@ -121,16 +121,16 @@
                     </div>
                 </div>
                 <span class="text-muted form-text">
-                    »ç¿ë ±â°£À» ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ¹«Á¦ÇÑÀ¸·Î »ç¿ëµË´Ï´Ù.
+                    사용 기간� 설정하지 않으면 무제한으로 사용�니다.
                 </span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">»ç¿ë ¿©ºÎ</label>
+            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
             <div class="col-sm-10 align-content-center">
                 <div class="form-check-inline">
                     <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
-                    <label class="form-check-label" asp-for="Input.IsActive">»ç¿ëÇÕ´Ï´Ù.</label>
+                    <label class="form-check-label" asp-for="Input.IsActive">사용합니다.</label>
                     <span asp-validation-for="Input.IsActive" class="text-danger"></span>
                 </div>
             </div>
@@ -138,8 +138,8 @@
         <hr/>
         <div class="row">
             <div class="col text-center p-3">
-                <button type="submit" class="btn btn-success">ÀúÀå</button>
-                <a href="/Banner/List?@Model.QueryString" class="btn btn-secondary">Ãë¼Ò</a>
+                <button type="submit" class="btn btn-success">저장</button>
+                <a href="/Banner/List?@Model.QueryString" class="btn btn-secondary">취소</a>
             </div>
         </div>
         <br/>

+ 20 - 20
Admin/Pages/Banner/List/Edit.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -24,45 +24,45 @@ public class EditModel(IMediator mediator) : PageModel
     public sealed class InputModel
     {
         [DisplayName("ID")]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
         public int ID { get; set; }
 
-        [DisplayName("¹è³Ê À§Ä¡ ID")]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+        [DisplayName("배너 위치 ID")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
         public int PositionID { get; set; }
 
-        [DisplayName("¹è³Ê ¸í")]
+        [DisplayName("배너 명")]
         [DataType(DataType.Text)]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-        [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
+        [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
         public string Subject { get; set; } = null!;
 
-        [DisplayName("÷ºÎ À̹ÌÁö(Desktop)")]
-        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "À̹ÌÁö ÆÄÀÏÀº jpg, jpeg, png, gif, webp Çü½ÄÀ̾î¾ß ÇÕ´Ï´Ù.")]
+        [DisplayName("첨부 �미지(Desktop)")]
+        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "�미지 파�� jpg, jpeg, png, gif, webp 형��어야 합니다.")]
         public IFormFile? DesktopImageFile { get; set; }
 
-        [DisplayName("÷ºÎ À̹ÌÁö(Mobile)")]
-        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "À̹ÌÁö ÆÄÀÏÀº jpg, jpeg, png, gif, webp Çü½ÄÀ̾î¾ß ÇÕ´Ï´Ù.")]
+        [DisplayName("첨부 �미지(Mobile)")]
+        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "�미지 파�� jpg, jpeg, png, gif, webp 형��어야 합니다.")]
         public IFormFile? MobileImageFile { get; set; }
 
-        [DisplayName("ÁÖ¼Ò")]
+        [DisplayName("주소")]
         [DataType(DataType.Url)]
-        [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+        [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
         public string? Link { get; set; }
 
-        [DisplayName("¼ø¼­")]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-        [Range(-9999, 9999, ErrorMessage = "{0} Çã¿ë ¹üÀ§´Â {2} ~ {1} ÀÔ´Ï´Ù.")]
+        [DisplayName("순서")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
+        [Range(-9999, 9999, ErrorMessage = "{0} 허용 범위는 {2} ~ {1} 입니다.")]
         public short Order { get; set; } = 0;
 
-        [DisplayName("»ç¿ë ¿©ºÎ")]
+        [DisplayName("사용 여부")]
         public bool IsActive { get; set; } = false;
 
-        [DisplayName("»ç¿ë ±â°£ - ½ÃÀÛ")]
+        [DisplayName("사용 기간 - 시작")]
         [DataType(DataType.DateTime)]
         public DateTime? StartAt { get; set; }
 
-        [DisplayName("»ç¿ë ±â°£ - Á¾·á")]
+        [DisplayName("사용 기간 - 종료")]
         [DataType(DataType.DateTime)]
         public DateTime? EndAt { get; set; }
     }
@@ -116,7 +116,7 @@ public class EditModel(IMediator mediator) : PageModel
                 Input.EndAt
             ), ct);
 
-            TempData["SuccessMessage"] = $"{Input.Subject} ¹è³Ê°¡ ¼öÁ¤µÇ¾ú½À´Ï´Ù.";
+            TempData["SuccessMessage"] = $"{Input.Subject} 배너가 수정�었습니다.";
         }
         catch (Exception e)
         {

+ 17 - 17
Admin/Pages/Banner/List/Index.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Banner.List.IndexModel
 @{
-    ViewData["Title"] = "¹è³Ê °ü¸®";
+    ViewData["Title"] = "배너 관리";
 }
 
 <div class="container-fluid">
@@ -14,7 +14,7 @@
     <div class="row g-2 mb-2 mb-sm-0 mt-2">
         <div class="col-auto">
             <select name="positionID" id="positionID" class="form-select w-auto" form="fAdminSearch">
-                <option value="">¼±ÅÃÇϼ¼¿ä.</option>
+                <option value="">선�하세요.</option>
                 @foreach ((int ID, string Subject, int BannerItemRows) row in Model.Positions)
                 {
                     <option value="@row.ID" selected="@(row.ID == Model.Query.PositionID)">@row.Subject (@row.BannerItemRows)</option>
@@ -22,10 +22,10 @@
             </select>
         </div>
         <div class="col col-sm-auto">
-            <input type="search" name="keyword" class="form-control" value="@Model.Query.Keyword" placeholder="¹è³Ê ¸í" form="fAdminSearch" />
+            <input type="search" name="keyword" class="form-control" value="@Model.Query.Keyword" placeholder="배너 명" form="fAdminSearch" />
         </div>
         <div class="col-auto col-sm">
-            <button type="submit" class="btn btn-success" form="fAdminSearch">°Ë»ö</button>
+            <button type="submit" class="btn btn-success" form="fAdminSearch">검색</button>
         </div>
     </div>
 
@@ -42,8 +42,8 @@
             </select>
         </div>
         <div class="col-auto">
-            <button type="button" id="btnListDelete" class="btn btn-danger" form="fAdminList" disabled>»èÁ¦</button>
-            <a class="btn btn-success" asp-page="/Banner/List/Write">Ãß°¡</a>
+            <button type="button" id="btnListDelete" class="btn btn-danger" form="fAdminList" disabled>삭제</button>
+            <a class="btn btn-success" asp-page="/Banner/List/Write">추가</a>
         </div>
     </div>
 
@@ -67,13 +67,13 @@
                             <label for="checkedAll">ID</label>
                         </div>
                     </th>
-                    <th>À§Ä¡</th>
-                    <th>¹è³Ê ¸í</th>
-                    <th>¼ø¼­</th>
-                    <th>»ç¿ë</th>
-                    <th>µî·ÏÀϽÃ</th>
-                    <th>¼öÁ¤ÀϽÃ</th>
-                    <th>ºñ°í</th>
+                    <th>위치</th>
+                    <th>배너 명</th>
+                    <th>순서</th>
+                    <th>사용</th>
+                    <th>등��시</th>
+                    <th>수정�시</th>
+                    <th>비고</th>
                 </tr>
             </thead>
             <tbody>
@@ -102,8 +102,8 @@
                             <td>@row.UpdatedAt</td>
                             <td>
                                 <div class="d-grid gap-2 d-block d-xxl-inline">
-                                    <a class="btn btn-sm btn-outline-info" href="@row.EditURL">¼öÁ¤</a>
-                                    <button type="button" class="btn btn-sm btn-outline-danger btn-row-delete" data-id="@row.ID">»èÁ¦</button>
+                                    <a class="btn btn-sm btn-outline-info" href="@row.EditURL">수정</a>
+                                    <button type="button" class="btn btn-sm btn-outline-danger btn-row-delete" data-id="@row.ID">삭제</button>
                                 </div>
                             </td>
                         </tr>
@@ -116,12 +116,12 @@
     </div>
 </div>
 
-<!-- °Ë»öÀ» À§ÇÑ -->
+<!-- 검색� 위한 -->
 <form id="fAdminSearch" method="get" accept-charset="utf-8">
     <input type="hidden" name="pageNum" value="@Model.Query.PageNum" />
 </form>
 
-<!-- »èÁ¦¸¦ À§ÇÑ -->
+<!-- 삭제를 위한 -->
 <form id="fAdminList" method="post" accept-charset="utf-8" asp-page-handler="Delete">
     @Html.AntiForgeryToken()
     <input type="hidden" name="pageNum" value="@Model.Query.PageNum" />

+ 6 - 6
Admin/Pages/Banner/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;
@@ -18,17 +18,17 @@ public class IndexModel(IMediator mediator) : PageModel
     public sealed class QueryParams
     {
         [Range(1, int.MaxValue)]
-        [DisplayName("ÆäÀÌÁö ¹øÈ£")]
+        [DisplayName("페�지 번호")]
         public int PageNum { get; set; } = 1;
 
         [Range(1, 100)]
-        [DisplayName("ÆäÀÌÁö ¸ñ·Ï ¼ö")]
+        [DisplayName("페�지 목� 수")]
         public ushort PerPage { get; set; } = 10;
 
-        [DisplayName("¹è³Ê À§Ä¡")]
+        [DisplayName("배너 위치")]
         public int? PositionID { get; set; }
 
-        [DisplayName("°Ë»ö¾î")]
+        [DisplayName("검색어")]
         public string? Keyword { get; set; }
     }
 
@@ -83,7 +83,7 @@ public class IndexModel(IMediator mediator) : PageModel
         {
             await mediator.Send(new DeleteBannerItem.Command(ids), ct);
 
-            TempData["SuccessMessage"] = $"{ids.Length}°³ ¹è³Ê°¡ »èÁ¦µÇ¾ú½À´Ï´Ù.";
+            TempData["SuccessMessage"] = $"{ids.Length}개 배너가 삭제�었습니다.";
         }
         catch (Exception e)
         {

+ 15 - 15
Admin/Pages/Banner/List/Write.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Banner.List.WriteModel
 @{
-    ViewData["Title"] = "¹è³Ê µî·Ï";
+    ViewData["Title"] = "배너 등�";
 }
 
 <div class="container">
@@ -12,7 +12,7 @@
 
     <form id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" enctype="multipart/form-data">
         <div class="row mb-2">
-            <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span>*</span> ¹è³Ê À§Ä¡</label>
+            <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span>*</span> 배너 위치</label>
             <div class="col-sm-10">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -23,7 +23,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span>*</span> ¹è³Ê ¸í</label>
+            <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span>*</span> 배너 명</label>
             <div class="col-sm-10">
                 <input asp-for="Input.Subject" class="form-control" required/>
                 <span asp-validation-for="Input.Subject" class="text-danger"></span>
@@ -37,13 +37,13 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label class="col-sm-2 col-form-label">À̹ÌÁö</label>
+            <label class="col-sm-2 col-form-label">�미지</label>
             <div class="col-sm-10">
                 <div class="mb-3">
                     <label asp-for="Input.DesktopImageFile" class="form-label">Desktop</label>
                     <div id="DesktopBannerPrev" hidden>
-                        <img class="img-fluid img-thumbnail" alt="À̹ÌÁö(Desktop) ¹Ì¸®º¸±â" /><br/>
-                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">»èÁ¦</button>
+                        <img class="img-fluid img-thumbnail" alt="�미지(Desktop) 미리보기" /><br/>
+                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
                     </div>
                     <input asp-for="Input.DesktopImageFile" type="file" class="form-control" accept="image/*" />
                     <span asp-validation-for="Input.DesktopImageFile" class="text-danger"></span>
@@ -51,8 +51,8 @@
                 <div>
                     <label asp-for="Input.MobileImageFile" class="form-label">Mobile</label>
                     <div id="MobileBannerPrev" hidden>
-                        <img class="img-fluid img-thumbnail" alt="À̹ÌÁö(Mobile) ¹Ì¸®º¸±â" /><br/>
-                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">»èÁ¦</button>
+                        <img class="img-fluid img-thumbnail" alt="�미지(Mobile) 미리보기" /><br/>
+                        <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
                     </div>
                     <input asp-for="Input.MobileImageFile" type="file" class="form-control" accept="image/*" />
                     <span asp-validation-for="Input.MobileImageFile" class="text-danger"></span>
@@ -60,7 +60,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> ¼ø¼­</label>
+            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 순서</label>
             <div class="col-sm-10">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -71,7 +71,7 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label class="col-sm-2 col-form-label">»ç¿ë ±â°£</label>
+            <label class="col-sm-2 col-form-label">사용 기간</label>
             <div class="col-sm-10">
                 <div class="row g-2">
                     <div class="col col-md-auto">
@@ -85,16 +85,16 @@
                     </div>
                 </div>
                 <span class="text-muted form-text">
-                    »ç¿ë ±â°£À» ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ¹«Á¦ÇÑÀ¸·Î »ç¿ëµË´Ï´Ù.
+                    사용 기간� 설정하지 않으면 무제한으로 사용�니다.
                 </span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">»ç¿ë ¿©ºÎ</label>
+            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
             <div class="col-sm-10 align-content-center">
                 <div class="form-check-inline">
                     <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
-                    <label class="form-check-label" asp-for="Input.IsActive">»ç¿ëÇÕ´Ï´Ù.</label>
+                    <label class="form-check-label" asp-for="Input.IsActive">사용합니다.</label>
                     <span asp-validation-for="Input.IsActive" class="text-danger"></span>
                 </div>
             </div>
@@ -102,8 +102,8 @@
         <hr />
         <div class="row">
             <div class="col text-center p-3">
-                <button type="submit" class="btn btn-success">ÀúÀå</button>
-                <a href="/Banner/List?@Model.QueryString" class="btn btn-secondary">Ãë¼Ò</a>
+                <button type="submit" class="btn btn-success">저장</button>
+                <a href="/Banner/List?@Model.QueryString" class="btn btn-secondary">취소</a>
             </div>
         </div>
         <br/>

+ 19 - 19
Admin/Pages/Banner/List/Write.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -19,42 +19,42 @@ public class WriteModel(IMediator mediator) : PageModel
 
     public sealed class InputModel
     {
-        [DisplayName("¹è³Ê À§Ä¡ ID")]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+        [DisplayName("배너 위치 ID")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
         public int PositionID { get; set; }
 
-        [DisplayName("¹è³Ê ¸í")]
+        [DisplayName("배너 명")]
         [DataType(DataType.Text)]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-        [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
+        [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
         public string Subject { get; set; } = null!;
 
-        [DisplayName("÷ºÎ À̹ÌÁö(Desktop)")]
-        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "À̹ÌÁö ÆÄÀÏÀº jpg, jpeg, png, gif, webp Çü½ÄÀ̾î¾ß ÇÕ´Ï´Ù.")]
+        [DisplayName("첨부 �미지(Desktop)")]
+        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "�미지 파�� jpg, jpeg, png, gif, webp 형��어야 합니다.")]
         public IFormFile? DesktopImageFile { get; set; }
 
-        [DisplayName("÷ºÎ À̹ÌÁö(Mobile)")]
-        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "À̹ÌÁö ÆÄÀÏÀº jpg, jpeg, png, gif, webp Çü½ÄÀ̾î¾ß ÇÕ´Ï´Ù.")]
+        [DisplayName("첨부 �미지(Mobile)")]
+        [AllowedExtensions("jpg,jpeg,png,gif,webp", ErrorMessage = "�미지 파�� jpg, jpeg, png, gif, webp 형��어야 합니다.")]
         public IFormFile? MobileImageFile { get; set; }
 
-        [DisplayName("ÁÖ¼Ò")]
+        [DisplayName("주소")]
         [DataType(DataType.Url)]
-        [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+        [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
         public string? Link { get; set; }
 
-        [DisplayName("¼ø¼­")]
-        [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-        [Range(-9999, 9999, ErrorMessage = "{0} Çã¿ë ¹üÀ§´Â {2} ~ {1} ÀÔ´Ï´Ù.")]
+        [DisplayName("순서")]
+        [Required(ErrorMessage = "{0}는 필수입니다.")]
+        [Range(-9999, 9999, ErrorMessage = "{0} 허용 범위는 {2} ~ {1} 입니다.")]
         public short Order { get; set; } = 0;
 
-        [DisplayName("»ç¿ë ¿©ºÎ")]
+        [DisplayName("사용 여부")]
         public bool IsActive { get; set; } = false;
 
-        [DisplayName("»ç¿ë ±â°£ - ½ÃÀÛ")]
+        [DisplayName("사용 기간 - 시작")]
         [DataType(DataType.DateTime)]
         public DateTime? StartAt { get; set; }
 
-        [DisplayName("»ç¿ë ±â°£ - Á¾·á")]
+        [DisplayName("사용 기간 - 종료")]
         [DataType(DataType.DateTime)]
         public DateTime? EndAt { get; set; }
     }
@@ -90,7 +90,7 @@ public class WriteModel(IMediator mediator) : PageModel
                 Input.EndAt
             ), ct);
 
-            TempData["SuccessMessage"] = $"{Input.Subject} ¹è³Ê°¡ µî·ÏµÇ¾ú½À´Ï´Ù.";
+            TempData["SuccessMessage"] = $"{Input.Subject} 배너가 등��었습니다.";
 
             return RedirectToPage("/Banner/List/Index");
         }

+ 19 - 19
Admin/Pages/Banner/Position.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Banner.PositionModel
 @{
-    ViewData["Title"] = "¹è³Ê À§Ä¡";
+    ViewData["Title"] = "배너 위치";
 }
 
 <div class="container-fluid">
@@ -16,8 +16,8 @@
             Total : @Model.Total
         </div>
         <div class="col text-end">
-            <button type="button" id="btnAdd" class="btn btn-primary" form="fAdminWrite">Ãß°¡</button>
-            <button type="submit" id="btnSave" class="btn btn-success" form="fAdminWrite">ÀúÀå</button>
+            <button type="button" id="btnAdd" class="btn btn-primary" form="fAdminWrite">추가</button>
+            <button type="submit" id="btnSave" class="btn btn-success" form="fAdminWrite">저장</button>
         </div>
     </div>
 
@@ -26,8 +26,8 @@
 
         <table class="table table-striped table-bordered table-hover mt-3">
             <caption>
-                ¹è³Ê À§Ä¡¿¡ µî·ÏµÈ ¹è³Ê°¡ ÀÖ´Ù¸é »èÁ¦°¡ ºÒ°¡ÇÕ´Ï´Ù.<br />
-                ¹è³Ê À§Ä¡¸¦ »èÁ¦ÇÏ·Á¸é ÇØ´ç ¹è³Ê¸¦ ¸ÕÀú »èÁ¦ÇØÁÖ¼¼¿ä.
+                배너 위치� 등�� 배너가 있다면 삭제가 불가합니다.<br />
+                배너 위치를 삭제하려면 해당 배너를 먼저 삭제해주세요.
             </caption>
             <colgroup>
                 <col style="width: 5%;" />
@@ -43,12 +43,12 @@
                 <tr class="text-center">
                     <th>ID</th>
                     <th>Code</th>
-                    <th>À§Ä¡ ¸í</th>
-                    <th>¹è³Ê ¼ö</th>
-                    <th>»ç¿ë</th>
-                    <th>µî·ÏÀϽÃ</th>
-                    <th>¼öÁ¤ÀϽÃ</th>
-                    <th>ºñ°í</th>
+                    <th>위치 명</th>
+                    <th>배너 수</th>
+                    <th>사용</th>
+                    <th>등��시</th>
+                    <th>수정�시</th>
+                    <th>비고</th>
                 </tr>
             </thead>
             <tbody id="positions">
@@ -79,13 +79,13 @@
                             <td>
                                 <div class="form-check-inline">
                                     <input class="form-check-input" type="checkbox" id="request_@(index)_IsActive" name="request[@index].IsActive" checked="@Model.Data[index].IsActive" form="fAdminWrite" value="true" />
-                                    <label class="form-check-label" for="request_@(index)_IsActive">»ç¿ë</label>
+                                    <label class="form-check-label" for="request_@(index)_IsActive">사용</label>
                                 </div>
                             </td>
                             <td><input type="text" readonly class="form-control-plaintext text-center" form="fAdminWrite" value="@row.CreatedAt" /></td>
                             <td><input type="text" readonly class="form-control-plaintext text-center" form="fAdminWrite" value="@row.UpdatedAt" /></td>
                             <td>
-                                <button type="button" class="btn btn-sm btn-danger btn-delete">»èÁ¦</button>
+                                <button type="button" class="btn btn-sm btn-danger btn-delete">삭제</button>
                             </td>
                         </tr>
                     }
@@ -101,7 +101,7 @@
             let $positions = $("#positions");
             let total = Number(@Model.Total);
 
-            // Ãß°¡
+            // 추가
             $(document).on("click", "#btnAdd", function() {
                 if (total <= 0) {
                     $positions.empty();
@@ -120,13 +120,13 @@
                         <td>
                             <div class="form-check-inline">
                                 <input class="form-check-input" type="checkbox" id="request_${total}_IsActive" name="request[${total}].IsActive" checked form="fAdminWrite" value="true" />
-                                <label class="form-check-label" for="request_${total}_IsActive">»ç¿ë</label>
+                                <label class="form-check-label" for="request_${total}_IsActive">사용</label>
                             </div>
                         </td>
                         <td>-</td>
                         <td>-</td>
                         <td>
-                            <button type="button" class="btn btn-danger btn-sm btn-delete">»èÁ¦</button>
+                            <button type="button" class="btn btn-danger btn-sm btn-delete">삭제</button>
                         </td>
                     </tr>
                 `;
@@ -136,7 +136,7 @@
                 recalculateIndices();
             });
 
-            // »èÁ¦
+            // 삭제
             $(document).on("click", "button.btn-delete", function(e) {
                 e.target.closest("tr").remove();
                 total--;
@@ -149,9 +149,9 @@
                 }
             });
 
-            // ÀúÀå
+            // 저장
             $(document).on("click", "#btnSave", function() {
-                if (confirm("ÀúÀå ÇϽðڽÀ´Ï±î?")) {
+                if (confirm("저장 하시겠습니까?")) {
                     let form = document.getElementById("fAdminWrite");
                     if (form.checkValidity()) {
                         form.submit();

+ 2 - 2
Admin/Pages/Banner/Position.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;
@@ -93,7 +93,7 @@ public class PositionModel(IMediator mediator) : PageModel
 
             var response = await mediator.Send(cmd, ct);
 
-            TempData["SuccessMessage"] = $"ÀúÀå ¿Ï·á (Ãß°¡: {response.Inserted}, ¼öÁ¤: {response.Updated}, »èÁ¦: {response.Deleted})";
+            TempData["SuccessMessage"] = $"저장 완료 (추가: {response.Inserted}, 수정: {response.Updated}, 삭제: {response.Deleted})";
         }
         catch (Exception e)
         {

+ 1 - 1
Admin/Pages/Channel/List/Edit.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Channel/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Channel/List/View.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
 namespace Admin.Pages.Channel.List

+ 1 - 1
Admin/Pages/Channel/List/Write.cshtml.cs

@@ -1,5 +1,5 @@
 using Application.Abstractions.Data;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.EntityFrameworkCore;

+ 18 - 18
Admin/Pages/Config/Basic/Images.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Config.Basic.ImagesModel
 @{
-    ViewData["Title"] = "À̹ÌÁö ¼³Á¤";
+    ViewData["Title"] = "�미지 설정";
 }
 
 <div class="container">
@@ -22,14 +22,14 @@
                 {
                     <input asp-for="Input.Images.FaviconFile" class="form-control" accept=".ico,image/x-icon" />
                     <span asp-validation-for="Input.Images.FaviconFile" class="text-danger"></span>
-                    <div class="form-text text-muted">ºê¶ó¿ìÀú ÅÇ/Áñ°Üã±â¿¡ Ç¥½ÃµË´Ï´Ù. ±ÇÀå: .ico, 32x32 ¶Ç´Â 48x48</div>
+                    <div class="form-text text-muted">브�우저 탭/�겨찾기� 표시�니다. 권장: .ico, 32x32 �는 48x48</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.FaviconPath" alt="favicon" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_favicon" id="deleteFavicon" />
-                        <label class="form-check-label" for="deleteFavicon">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteFavicon">삭제</label>
                     </div>
                 }
             </div>
@@ -45,14 +45,14 @@
                 {
                     <input asp-for="Input.Images.LogoSquareFile" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp,image/svg+xml" />
                     <span asp-validation-for="Input.Images.LogoSquareFile" class="text-danger"></span>
-                    <div class="form-text text-muted">Á¤»ç°¢Çü ·Î°í(ÇÁ·ÎÇÊ/¾ÆÀÌÄÜ ¿µ¿ª)¿¡ »ç¿ëµË´Ï´Ù. ±ÇÀå: 512x512 PNG Åõ¸í ¹è°æ</div>
+                    <div class="form-text text-muted">정사�형 로고(프로필/아�콘 �역)� 사용�니다. 권장: 512x512 PNG 투명 배경</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.LogoSquarePath" alt="logo-square" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_logo_square" id="deleteLogoSquare" />
-                        <label class="form-check-label" for="deleteLogoSquare">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteLogoSquare">삭제</label>
                     </div>
                 }
             </div>
@@ -68,14 +68,14 @@
                 {
                     <input asp-for="Input.Images.LogoHorizontalFile" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp,image/svg+xml" />
                     <span asp-validation-for="Input.Images.LogoHorizontalFile" class="text-danger"></span>
-                    <div class="form-text text-muted">Çì´õ/»ó´Ü ¿µ¿ª¿¡ »ç¿ëµÇ´Â °¡·ÎÇü ·Î°íÀÔ´Ï´Ù. ±ÇÀå: °¡·Î 200~400px ÀÌ»ó</div>
+                    <div class="form-text text-muted">헤�/�단 �역� 사용�는 가로형 로고입니다. 권장: 가로 200~400px ��</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.LogoHorizontalPath" alt="logo-horizontal" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_logo_horizontal" id="deleteLogoHorizontal" />
-                        <label class="form-check-label" for="deleteLogoHorizontal">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteLogoHorizontal">삭제</label>
                     </div>
                 }
             </div>
@@ -91,14 +91,14 @@
                 {
                     <input asp-for="Input.Images.OgDefaultFile" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp" />
                     <span asp-validation-for="Input.Images.OgDefaultFile" class="text-danger"></span>
-                    <div class="form-text text-muted">SNS °øÀ¯(Open Graph) ±âº» À̹ÌÁöÀÔ´Ï´Ù. ±ÇÀå: 1200x630</div>
+                    <div class="form-text text-muted">SNS 공유(Open Graph) 기본 �미지입니다. 권장: 1200x630</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.OgDefaultPath" alt="og-default" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_og_default" id="deleteOgDefault" />
-                        <label class="form-check-label" for="deleteOgDefault">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteOgDefault">삭제</label>
                     </div>
                 }
             </div>
@@ -114,14 +114,14 @@
                 {
                     <input asp-for="Input.Images.TwitterImageFile" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp" />
                     <span asp-validation-for="Input.Images.TwitterImageFile" class="text-danger"></span>
-                    <div class="form-text text-muted">Æ®À§ÅÍ Ä«µå °øÀ¯ À̹ÌÁöÀÔ´Ï´Ù. ±ÇÀå: 1200x600 ¶Ç´Â 1200x628</div>
+                    <div class="form-text text-muted">트위터 카드 공유 �미지입니다. 권장: 1200x600 �는 1200x628</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.TwitterImagePath" alt="twitter-image" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_twitter_image" id="deleteTwitterImage" />
-                        <label class="form-check-label" for="deleteTwitterImage">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteTwitterImage">삭제</label>
                     </div>
                 }
             </div>
@@ -137,14 +137,14 @@
                 {
                     <input asp-for="Input.Images.AppleTouchIconFile" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp" />
                     <span asp-validation-for="Input.Images.AppleTouchIconFile" class="text-danger"></span>
-                    <div class="form-text text-muted">iOS Ȩ È­¸é¿¡ Ãß°¡ ½Ã ¾ÆÀÌÄÜÀ¸·Î »ç¿ëµË´Ï´Ù. ±ÇÀå: 180x180 PNG</div>
+                    <div class="form-text text-muted">iOS 홈 화면� 추가 시 아�콘으로 사용�니다. 권장: 180x180 PNG</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.AppleTouchIconPath" alt="apple-touch-icon" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_apple_touch_icon" id="deleteAppleTouchIcon" />
-                        <label class="form-check-label" for="deleteAppleTouchIcon">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteAppleTouchIcon">삭제</label>
                     </div>
                 }
             </div>
@@ -160,14 +160,14 @@
                 {
                     <input asp-for="Input.Images.AppIcon192File" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp" />
                     <span asp-validation-for="Input.Images.AppIcon192File" class="text-danger"></span>
-                    <div class="form-text text-muted">PWA/¾Û ¾ÆÀÌÄÜ(192)À¸·Î »ç¿ëµË´Ï´Ù. ±ÇÀå: 192x192 PNG</div>
+                    <div class="form-text text-muted">PWA/앱 아�콘(192)으로 사용�니다. 권장: 192x192 PNG</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.AppIcon192Path" alt="app-icon-192" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_app_icon_192" id="deleteAppIcon192" />
-                        <label class="form-check-label" for="deleteAppIcon192">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteAppIcon192">삭제</label>
                     </div>
                 }
             </div>
@@ -183,14 +183,14 @@
                 {
                     <input asp-for="Input.Images.AppIcon512File" class="form-control" accept="image/png,image/jpeg,image/gif,image/webp" />
                     <span asp-validation-for="Input.Images.AppIcon512File" class="text-danger"></span>
-                    <div class="form-text text-muted">PWA/¾Û ¾ÆÀÌÄÜ(512)À¸·Î »ç¿ëµË´Ï´Ù. ±ÇÀå: 512x512 PNG</div>
+                    <div class="form-text text-muted">PWA/앱 아�콘(512)으로 사용�니다. 권장: 512x512 PNG</div>
                 }
                 else
                 {
                     <img src="@Model.Input.Images.AppIcon512Path" alt="app-icon-512" class="img-fluid rounded" />
                     <div class="form-check mt-2">
                         <input class="form-check-input" type="checkbox" value="1" name="delete_app_icon_512" id="deleteAppIcon512" />
-                        <label class="form-check-label" for="deleteAppIcon512">»èÁ¦</label>
+                        <label class="form-check-label" for="deleteAppIcon512">삭제</label>
                     </div>
                 }
             </div>
@@ -200,7 +200,7 @@
 
         <div class="row">
             <div class="col text-center p-3">
-                <button type="submit" class="btn btn-success">ÀúÀåÇϱâ</button>
+                <button type="submit" class="btn btn-success">저장하기</button>
             </div>
         </div>
 

+ 1 - 1
Admin/Pages/Config/Basic/Images.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 2 - 2
Admin/Pages/Config/Basic/Index.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -27,7 +27,7 @@ namespace Admin.Pages.Config.Basic
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 3 - 3
Admin/Pages/Config/Company.cshtml.cs

@@ -1,5 +1,5 @@
-using GetBank = Application.Features.Admin.ReferenceData.GetBank;
-using MediatR;
+using GetBank = Application.Features.Admin.ReferenceData.GetBank;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -39,7 +39,7 @@ namespace Admin.Pages.Config
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 2 - 2
Admin/Pages/Config/External.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -27,7 +27,7 @@ namespace Admin.Pages.Config
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 2 - 2
Admin/Pages/Config/Meta.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -27,7 +27,7 @@ namespace Admin.Pages.Config
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 2 - 2
Admin/Pages/Config/Register.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -27,7 +27,7 @@ namespace Admin.Pages.Config
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 2 - 2
Admin/Pages/Config/Template/Email.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -27,7 +27,7 @@ namespace Admin.Pages.Config.Template
 
             await mediator.Send(Input.ToCommand(), ct);
 
-            TempData["SuccessMessage"] = "저장되었습니다.";
+            TempData["SuccessMessage"] = "???????.";
             return RedirectToPage();
         }
 

+ 5 - 5
Admin/Pages/Config/Test/Email.cshtml.cs

@@ -1,6 +1,6 @@
-using Application.Abstractions.Messaging.Email;
+using Application.Abstractions.Messaging.Email;
 using SharedKernel;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.Extensions.Options;
@@ -41,9 +41,9 @@ namespace Admin.Pages.Config.Test
             await mailService.SendAsync(
                 new SendData(
                     ToAddress: ToAddress!,
-                    Subject: $"[TEST] SMTP 이메일 발송 테스트 - {DateTime.Now:yyyy-MM-dd HH:mm:ss}",
+                    Subject: $"[TEST] SMTP ??? ?? ??? - {DateTime.Now:yyyy-MM-dd HH:mm:ss}",
                     MessageHtml: $"""
-                                 <h3>테스트 메일</h3>
+                                 <h3>??? ??</h3>
                                  <ul>
                                      <li>From: {Settings.SMTP.FromName} &lt;{Settings.SMTP.FromEmail}&gt;</li>
                                      <li>To: {ToAddress}</li>
@@ -56,7 +56,7 @@ namespace Admin.Pages.Config.Test
                 ct
             );
 
-            TempData["SuccessMessage"] = "테스트 이메일을 발송했습니다.";
+            TempData["SuccessMessage"] = "??? ???? ??????.";
 
             return RedirectToPage();
         }

+ 1 - 1
Admin/Pages/Crypto/Board/Index.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Crypto/Category.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;

+ 1 - 1
Admin/Pages/Crypto/Curation.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Crypto/List/Edit.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Crypto/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Crypto/List/Write.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Crypto/News/Articles.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Crypto/News/Edit.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;

+ 1 - 1
Admin/Pages/Crypto/News/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Crypto/News/Write.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;

+ 1 - 1
Admin/Pages/Crypto/TickerConfig.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Director/AccessLog/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Director/LoginLog/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 6 - 6
Admin/Pages/Director/Role/Index.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;
@@ -12,7 +12,7 @@ namespace Admin.Pages.Director.Role
         public List<GetRoles.Response> List { get; set; } = [];
 
         [Required]
-        [DisplayName("역할(Role)")]
+        [DisplayName("??(Role)")]
         [MaxLength(100)]
         [BindProperty]
         public string? RoleName { get; set; }
@@ -29,7 +29,7 @@ namespace Admin.Pages.Director.Role
             {
                 if (!ModelState.IsValid)
                 {
-                    throw new Exception("유효성 검사에 실패하였습니다.");
+                    throw new Exception("??? ??? ???????.");
                 }
 
                 var command = new CreateRole.Command(
@@ -38,7 +38,7 @@ namespace Admin.Pages.Director.Role
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{RoleName} 역할이 추가되었습니다.";
+                TempData["SuccessMessage"] = $"{RoleName} ??? ???????.";
 
                 return RedirectToPage();
             }
@@ -57,12 +57,12 @@ namespace Admin.Pages.Director.Role
                 var role = await mediator.Send(new GetRole.Query(id), ct);
                 if (role == null)
                 {
-                    throw new Exception("존재하지 않는 역할(Role)입니다.");
+                    throw new Exception("???? ?? ??(Role)???.");
                 }
 
                 await mediator.Send(new DeleteRole.Command(id), ct);
 
-                TempData["SuccessMessage"] = $"{role.Name} 역할이 정상적으로 삭제되었습니다.";
+                TempData["SuccessMessage"] = $"{role.Name} ??? ????? ???????.";
                 return RedirectToPage();
             }
             catch (Exception e)

+ 5 - 5
Admin/Pages/Director/Role/Permission.cshtml.cs

@@ -1,5 +1,5 @@
-using Application.Abstractions.Identity.Models;
-using MediatR;
+using Application.Abstractions.Identity.Models;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -14,7 +14,7 @@ namespace Admin.Pages.Director.Role
         {
             if (string.IsNullOrEmpty(id))
             {
-                TempData["ErrorMessages"] = "유효하지 않은 접근입니다.";
+                TempData["ErrorMessages"] = "???? ?? ?????.";
                 return RedirectToPage("/Director/Role/Index");
             }
 
@@ -29,7 +29,7 @@ namespace Admin.Pages.Director.Role
             {
                 if (!ModelState.IsValid)
                 {
-                    throw new Exception("유효성 검사에 실패하였습니다.");
+                    throw new Exception("??? ??? ???????.");
                 }
 
                 var permissions = new PermissionDto
@@ -51,7 +51,7 @@ namespace Admin.Pages.Director.Role
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{Role.RoleName} 권한 정보가 수정되었습니다.";
+                TempData["SuccessMessage"] = $"{Role.RoleName} ?? ??? ???????.";
 
                 return RedirectToPage("/Director/Role/Index", new { id = Role.RoleID });
             }

+ 3 - 3
Admin/Pages/Director/User/Edit.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -35,7 +35,7 @@ namespace Admin.Pages.Director.User
             {
                 if (!ModelState.IsValid)
                 {
-                    throw new Exception("유효성 검사에 실패하였습니다.");
+                    throw new Exception("??? ??? ???????.");
                 }
 
                 var command = new UpdateUser.Command(
@@ -52,7 +52,7 @@ namespace Admin.Pages.Director.User
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = "사용자 정보가 정상적으로 수정되었습니다.";
+                TempData["SuccessMessage"] = "??? ??? ????? ???????.";
 
                 return RedirectToPage(command);
             }

+ 2 - 2
Admin/Pages/Director/User/Index.cshtml.cs

@@ -1,5 +1,5 @@
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using MediatR;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Application.Abstractions.Messaging;
 
 namespace Admin.Pages.Director.User
 {

+ 5 - 5
Admin/Pages/Director/User/Roles.cshtml.cs

@@ -1,5 +1,5 @@
-using Application.Abstractions.Identity.Models;
-using MediatR;
+using Application.Abstractions.Identity.Models;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
@@ -14,7 +14,7 @@ namespace Admin.Pages.Director.User
         {
             if (string.IsNullOrEmpty(id))
             {
-                TempData["ErrorMessages"] = "유효하지 않은 접근입니다.";
+                TempData["ErrorMessages"] = "???? ?? ?????.";
                 return RedirectToPage("/Director/User/Index");
             }
 
@@ -29,7 +29,7 @@ namespace Admin.Pages.Director.User
             {
                 if (!ModelState.IsValid)
                 {
-                    throw new Exception("유효성 검사에 실패하였습니다.");
+                    throw new Exception("??? ??? ???????.");
                 }
 
                 var command = new UpdateUserRoles.Command(
@@ -42,7 +42,7 @@ namespace Admin.Pages.Director.User
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = "권한이 변경되었습니다.";
+                TempData["SuccessMessage"] = "??? ???????.";
 
                 return RedirectToPage(new { id = Input.User.ID });
             }

+ 13 - 13
Admin/Pages/Document/Edit.cshtml.cs

@@ -1,6 +1,6 @@
-using SharedKernel;
+using SharedKernel;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.Extensions.Options;
@@ -21,27 +21,27 @@ namespace Admin.Pages.Document
         public sealed class InputMdeol
         {
             [DisplayName("ID")]
-            [Required(ErrorMessage = "{0}는 필수입니다.")]
+            [Required(ErrorMessage = "{0}? ?????.")]
             public int ID { get; set; }
 
-            [DisplayName("주소")]
+            [DisplayName("??")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}는 필수입니다.")]
-            [StringLength(30, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")]
-            [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "주소는 영문 및 숫자로만 구성되어야 합니다.")]
+            [Required(ErrorMessage = "{0}? ?????.")]
+            [StringLength(30, ErrorMessage = "{0}? {1}? ??? ?????.")]
+            [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "??? ?? ? ???? ????? ???.")]
             public string Code { get; set; } = default!;
 
-            [DisplayName("제목")]
+            [DisplayName("??")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}는 필수입니다.")]
-            [StringLength(120, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")]
+            [Required(ErrorMessage = "{0}? ?????.")]
+            [StringLength(120, ErrorMessage = "{0}? {1}? ??? ?????.")]
             public string Subject { get; set; } = default!;
 
-            [DisplayName("내용")]
+            [DisplayName("??")]
             [DataType(DataType.Html)]
             public string? Content { get; set; }
 
-            [DisplayName("사용 여부")]
+            [DisplayName("?? ??")]
             public bool IsActive { get; set; } = false;
 
             public string? UpdatedAt { get; set; }
@@ -84,7 +84,7 @@ namespace Admin.Pages.Document
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{Input.Subject} 문서가 수정되었습니다.";
+                TempData["SuccessMessage"] = $"{Input.Subject} ??? ???????.";
             }
             catch (Exception e)
             {

+ 5 - 5
Admin/Pages/Document/Index.cshtml.cs

@@ -1,5 +1,5 @@
-using SharedKernel.Helpers;
-using MediatR;
+using SharedKernel.Helpers;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;
@@ -15,11 +15,11 @@ namespace Admin.Pages.Document
         public sealed class QueryParams
         {
             [Range(1, int.MaxValue)]
-            [DisplayName("페이지 번호")]
+            [DisplayName("??? ??")]
             public int PageNum { get; set; } = 1;
 
             [Range(1, 100)]
-            [DisplayName("페이지 목록 수")]
+            [DisplayName("??? ?? ?")]
             public ushort PerPage { get; set; } = 10;
         }
 
@@ -74,7 +74,7 @@ namespace Admin.Pages.Document
             {
                 await mediator.Send(new DeleteDocument.Command(ids), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}개 문서가 삭제되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}? ??? ???????.";
             }
             catch (Exception e)
             {

+ 13 - 13
Admin/Pages/Document/Write.cshtml.cs

@@ -1,5 +1,5 @@
-using SharedKernel;
-using MediatR;
+using SharedKernel;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.Extensions.Options;
@@ -18,24 +18,24 @@ namespace Admin.Pages.Document
 
         public sealed class InputMdeol
         {
-            [DisplayName("주소")]
+            [DisplayName("??")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}는 필수입니다.")]
-            [StringLength(30, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")]
-            [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "주소는 영문 및 숫자로만 구성되어야 합니다.")]
+            [Required(ErrorMessage = "{0}? ?????.")]
+            [StringLength(30, ErrorMessage = "{0}? {1}? ??? ?????.")]
+            [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "??? ?? ? ???? ????? ???.")]
             public string Code { get; set; } = default!;
 
-            [DisplayName("제목")]
+            [DisplayName("??")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}는 필수입니다.")]
-            [StringLength(120, ErrorMessage = "{0}은 {1}자 이하로 입력하세요.")]
+            [Required(ErrorMessage = "{0}? ?????.")]
+            [StringLength(120, ErrorMessage = "{0}? {1}? ??? ?????.")]
             public string Subject { get; set; } = default!;
 
-            [DisplayName("내용")]
+            [DisplayName("??")]
             [DataType(DataType.Html)]
             public string? Content { get; set; }
 
-            [DisplayName("사용 여부")]
+            [DisplayName("?? ??")]
             public bool IsActive { get; set; } = false;
         }
 
@@ -52,7 +52,7 @@ namespace Admin.Pages.Document
             {
                 if (!ModelState.IsValid)
                 {
-                    throw new Exception("유효성 검사에 실패하였습니다.");
+                    throw new Exception("??? ??? ???????.");
                 }
 
                 var command = new CreateDocument.Command(
@@ -64,7 +64,7 @@ namespace Admin.Pages.Document
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{Input.Subject} 문서가 등록되었습니다.";
+                TempData["SuccessMessage"] = $"{Input.Subject} ??? ???????.";
 
                 return RedirectToPage("/Document/Index");
             }

+ 3 - 3
Admin/Pages/Faq/Category.cshtml.cs

@@ -1,5 +1,5 @@
-using SharedKernel.Extensions;
-using MediatR;
+using SharedKernel.Extensions;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;
@@ -99,7 +99,7 @@ namespace Admin.Pages.Faq
 
                 var response = await mediator.Send(cmd, ct);
 
-                TempData["SuccessMessage"] = $"저장 완료 (추가: {response.Inserted}, 수정: {response.Updated}, 삭제: {response.Deleted})";
+                TempData["SuccessMessage"] = $"?? ?? (??: {response.Inserted}, ??: {response.Updated}, ??: {response.Deleted})";
             }
             catch (Exception e)
             {

+ 11 - 11
Admin/Pages/Faq/List/Edit.cshtml

@@ -1,7 +1,7 @@
 @page "{id:int}"
 @model Admin.Pages.Faq.List.EditModel
 @{
-    ViewData["Title"] = "FAQ ¼öÁ¤";
+    ViewData["Title"] = "FAQ 수정";
 }
 
 <div class="container">
@@ -22,28 +22,28 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.CategoryID" class="col-sm-2 col-form-label"><span>*</span> ºÐ·ù</label>
+            <label asp-for="Input.CategoryID" class="col-sm-2 col-form-label"><span>*</span> 분류</label>
             <div class="col-sm-10">
                 <select asp-for="Input.CategoryID" asp-items="Model.Categories" class="form-select w-auto" required></select>
                 <span asp-validation-for="Input.CategoryID" class="text-danger"></span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Question" class="col-sm-2 col-form-label"><span>*</span> Áú¹®</label>
+            <label asp-for="Input.Question" class="col-sm-2 col-form-label"><span>*</span> 질문</label>
             <div class="col-sm-10">
                 <input asp-for="Input.Question" class="form-control required" />
                 <span asp-validation-for="Input.Question" class="text-danger"></span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Answer" class="col-sm-2 col-form-label">´äº¯</label>
+            <label asp-for="Input.Answer" class="col-sm-2 col-form-label">답변</label>
             <div class="col-sm-10">
                 <textarea asp-for="Input.Answer" class="form-control ck-editor"></textarea>
                 <span asp-validation-for="Input.Answer" class="text-danger"></span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span>*</span> ¼ø¼­</label>
+            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span>*</span> 순서</label>
             <div class="col-sm-10">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -54,12 +54,12 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">»ç¿ë ¿©ºÎ</label>
+            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
             <div class="col-sm-10 align-content-center">
                 <div class="form-check-inline">
                     <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
                     <label class="form-check-label" asp-for="Input.IsActive">
-                        »ç¿ëÇÕ´Ï´Ù.
+                        사용합니다.
                     </label>
                     <span asp-validation-for="Input.IsActive" class="text-danger"></span>
                 </div>
@@ -68,7 +68,7 @@
         @if (Model.Input.UpdatedAt is not null)
         {
             <div class="row mb-2">
-                <label class="col-sm-2 col-form-label">¼öÁ¤ÀϽÃ</label>
+                <label class="col-sm-2 col-form-label">수정�시</label>
                 <div class="col-sm-10">
                     <input asp-for="Input.UpdatedAt" class="form-control-plaintext" type="text" readonly />
                 </div>
@@ -77,7 +77,7 @@
         @if (Model.Input.CreatedAt != null)
         {
             <div class="row mb-2">
-                <label class="col-sm-2 col-form-label">µî·ÏÀϽÃ</label>
+                <label class="col-sm-2 col-form-label">등��시</label>
                 <div class="col-sm-10">
                     <input asp-for="Input.CreatedAt" class="form-control-plaintext" type="text" readonly />
                 </div>
@@ -85,8 +85,8 @@
         }
         <hr/>
         <div class="d-grid gap-2 text-center d-md-block">
-            <button type="submit" class="btn btn-success">ÀúÀå</button>
-            <a href="/Faq/List?@Model.QueryString" class="btn btn-secondary">Ãë¼Ò</a>
+            <button type="submit" class="btn btn-success">저장</button>
+            <a href="/Faq/List?@Model.QueryString" class="btn btn-secondary">취소</a>
         </div>
         <br/>
     </form>

+ 14 - 14
Admin/Pages/Faq/List/Edit.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -20,29 +20,29 @@ namespace Admin.Pages.Faq.List
         public sealed class InputModel
         {
             [DisplayName("ID")]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
             public int ID { get; set; }
 
-            [DisplayName("FAQ ºÐ·ù")]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+            [DisplayName("FAQ 분류")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
             public int CategoryID { get; set; }
 
-            [DisplayName("Áú¹®")]
+            [DisplayName("질문")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-            [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
+            [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
             public string Question { get; set; } = default!;
 
-            [DisplayName("´äº¯")]
+            [DisplayName("답변")]
             [DataType(DataType.Html)]
             public string? Answer { get; set; }
 
-            [DisplayName("¼ø¼­")]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-            [Range(-9999, 9999, ErrorMessage = "{0}Àº {1}¿¡¼­ {2} »çÀÌÀÇ °ªÀ̾î¾ß ÇÕ´Ï´Ù.")]
+            [DisplayName("순서")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
+            [Range(-9999, 9999, ErrorMessage = "{0}� {1}�서 {2} 사�� 값�어야 합니다.")]
             public short Order { get; set; } = 0;
 
-            [DisplayName("»ç¿ë ¿©ºÎ")]
+            [DisplayName("사용 여부")]
             public bool IsActive { get; set; } = false;
 
             public string? UpdatedAt { get; set; }
@@ -68,7 +68,7 @@ namespace Admin.Pages.Faq.List
             var item = await mediator.Send(new GetFaqItem.Query(id), ct);
             if (item is null)
             {
-                TempData["ErrorMessages"] = "ÇØ´ç FAQ¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù.";
+                TempData["ErrorMessages"] = "해당 FAQ를 찾� 수 없습니다.";
                 return RedirectToPage("/Faq/List/Index");
             }
 
@@ -104,7 +104,7 @@ namespace Admin.Pages.Faq.List
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{Input.Question} FAQ°¡ ¼öÁ¤µÇ¾ú½À´Ï´Ù.";
+                TempData["SuccessMessage"] = $"{Input.Question} FAQ가 수정�었습니다.";
             }
             catch (Exception e)
             {

+ 17 - 17
Admin/Pages/Faq/List/Index.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Faq.List.IndexModel
 @{
-    ViewData["Title"] = "FAQ °ü¸®";
+    ViewData["Title"] = "FAQ 관리";
 }
 
 <div class="container-fluid">
@@ -14,7 +14,7 @@
     <div class="row g-2 mb-2 mb-sm-0 mt-2">
         <div class="col-auto">
             <select name="categoryID" id="categoryID" class="form-select w-auto" form="fAdminSearch">
-                <option value="">¼±ÅÃÇϼ¼¿ä.</option>
+                <option value="">선�하세요.</option>
                 @foreach ((int ID, string Code, string Subject, int FaqItemRows) row in Model.Categories)
                 {
                     <option value="@row.ID" selected="@(row.ID == Model.Query.CategoryID)">[@row.Code] @row.Subject (@row.FaqItemRows)</option>
@@ -22,10 +22,10 @@
             </select>
         </div>
         <div class="col col-sm-auto">
-            <input type="search" name="keyword" class="form-control" value="@Model.Query.Keyword" placeholder="Áú¹®" form="fAdminSearch"/>
+            <input type="search" name="keyword" class="form-control" value="@Model.Query.Keyword" placeholder="질문" form="fAdminSearch"/>
         </div>
         <div class="col-auto col-sm">
-            <button type="submit" class="btn btn-success" form="fAdminSearch">°Ë»ö</button>
+            <button type="submit" class="btn btn-success" form="fAdminSearch">검색</button>
         </div>
     </div>
 
@@ -42,8 +42,8 @@
             </select>
         </div>
         <div class="col-auto">
-            <button type="button" id="btnListDelete" class="btn btn-danger" form="fAdminList" disabled>»èÁ¦</button>
-            <a class="btn btn-success" asp-page="/Faq/List/Write">Ãß°¡</a>
+            <button type="button" id="btnListDelete" class="btn btn-danger" form="fAdminList" disabled>삭제</button>
+            <a class="btn btn-success" asp-page="/Faq/List/Write">추가</a>
         </div>
     </div>
 
@@ -67,13 +67,13 @@
                             <label for="checkedAll">ID</label>
                         </div>
                     </th>
-                    <th>ºÐ·ù</th>
-                    <th>Áú¹®</th>
-                    <th>¼ø¼­</th>
-                    <th>»ç¿ë</th>
-                    <th>µî·ÏÀϽÃ</th>
-                    <th>¼öÁ¤ÀϽÃ</th>
-                    <th>ºñ°í</th>
+                    <th>분류</th>
+                    <th>질문</th>
+                    <th>순서</th>
+                    <th>사용</th>
+                    <th>등��시</th>
+                    <th>수정�시</th>
+                    <th>비고</th>
                 </tr>
             </thead>
             <tbody>
@@ -102,8 +102,8 @@
                             <td>@row.UpdatedAt</td>
                             <td>
                                 <div class="d-grid gap-2 d-block d-xxl-inline">
-                                    <a class="btn btn-sm btn-outline-info" href="@row.EditURL">¼öÁ¤</a>
-                                    <button type="button" class="btn btn-sm btn-outline-danger btn-row-delete" data-id="@row.ID">»èÁ¦</button>
+                                    <a class="btn btn-sm btn-outline-info" href="@row.EditURL">수정</a>
+                                    <button type="button" class="btn btn-sm btn-outline-danger btn-row-delete" data-id="@row.ID">삭제</button>
                                 </div>
                             </td>
                         </tr>
@@ -116,12 +116,12 @@
     </div>
 </div>
 
-<!-- °Ë»öÀ» À§ÇÑ -->
+<!-- 검색� 위한 -->
 <form id="fAdminSearch" method="get" accept-charset="utf-8">
     <input type="hidden" name="pageNum" value="@Model.Query.PageNum" />
 </form>
 
-<!-- »èÁ¦¸¦ À§ÇÑ -->
+<!-- 삭제를 위한 -->
 <form id="fAdminList" method="post" accept-charset="utf-8" asp-page-handler="Delete">
     @Html.AntiForgeryToken()
     <input type="hidden" name="pageNum" value="@Model.Query.PageNum" />

+ 7 - 7
Admin/Pages/Faq/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
-using SharedKernel.Helpers;
+using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;
@@ -17,17 +17,17 @@ namespace Admin.Pages.Faq.List
         public sealed class QueryParams
         {
             [Range(1, int.MaxValue)]
-            [DisplayName("페이지 번호")]
+            [DisplayName("??? ??")]
             public int PageNum { get; set; } = 1;
 
             [Range(1, 100)]
-            [DisplayName("페이지 목록 수")]
+            [DisplayName("??? ?? ?")]
             public ushort PerPage { get; set; } = 10;
 
-            [DisplayName("FAQ 분류")]
+            [DisplayName("FAQ ??")]
             public int? CategoryID { get; set; }
 
-            [DisplayName("검색어")]
+            [DisplayName("???")]
             public string? Keyword { get; set; }
         }
 
@@ -84,7 +84,7 @@ namespace Admin.Pages.Faq.List
             {
                 await mediator.Send(new DeleteFaqItem.Command(ids), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}개 FAQ가 삭제되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}? FAQ? ???????.";
             }
             catch (Exception e)
             {

+ 10 - 10
Admin/Pages/Faq/List/Write.cshtml

@@ -1,7 +1,7 @@
 @page
 @model Admin.Pages.Faq.List.WriteModel
 @{
-    ViewData["Title"] = "FAQ µî·Ï";
+    ViewData["Title"] = "FAQ 등�";
 }
 
 <div class="container">
@@ -13,10 +13,10 @@
 
      <form id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off">
         <div class="row mb-2">
-            <label asp-for="Input.CategoryID" class="col-sm-2 col-form-label"><span>*</span> ºÐ·ù</label>
+            <label asp-for="Input.CategoryID" class="col-sm-2 col-form-label"><span>*</span> 분류</label>
             <div class="col-sm-10">
                 <select asp-for="Input.CategoryID" class="form-select w-auto" required>
-                    <option value="">¼±ÅÃÇϼ¼¿ä.</option>
+                    <option value="">선�하세요.</option>
                     @foreach (var row in Model.Categories)
                     {
                         <option value="@row.Value" selected="@row.Selected">@row.Text</option>
@@ -26,21 +26,21 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Question" class="col-sm-2 col-form-label"><span>*</span> Áú¹®</label>
+            <label asp-for="Input.Question" class="col-sm-2 col-form-label"><span>*</span> 질문</label>
             <div class="col-sm-10">
                 <input asp-for="Input.Question" class="form-control" required />
                 <span asp-validation-for="Input.Question" class="text-danger"></span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Answer" class="col-sm-2 col-form-label">´äº¯</label>
+            <label asp-for="Input.Answer" class="col-sm-2 col-form-label">답변</label>
             <div class="col-sm-10">
                 <textarea asp-for="Input.Answer" class="form-control ck-editor"></textarea>
                 <span asp-validation-for="Input.Answer" class="text-danger"></span>
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span>*</span> ¼ø¼­</label>
+            <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span>*</span> 순서</label>
             <div class="col-sm-10 align-content-center">
                 <div class="row">
                     <div class="col col-md-auto">
@@ -51,12 +51,12 @@
             </div>
         </div>
         <div class="row mb-2">
-            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">»ç¿ë ¿©ºÎ</label>
+            <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
             <div class="col-sm-10 align-content-center">
                 <div class="form-check-inline">
                     <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
                     <label class="form-check-label" asp-for="Input.IsActive">
-                        »ç¿ëÇÕ´Ï´Ù.
+                        사용합니다.
                     </label>
                     <span asp-validation-for="Input.IsActive" class="text-danger"></span>
                 </div>
@@ -64,8 +64,8 @@
         </div>
         <hr/>
         <div class="d-grid gap-2 text-center d-md-block">
-            <button type="submit" class="btn btn-success">ÀúÀå</button>
-            <a href="/Faq/List?@Model.QueryString" class="btn btn-secondary">Ãë¼Ò</a>
+            <button type="submit" class="btn btn-success">저장</button>
+            <a href="/Faq/List?@Model.QueryString" class="btn btn-secondary">취소</a>
         </div>
         <br/>
     </form>

+ 11 - 11
Admin/Pages/Faq/List/Write.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -18,25 +18,25 @@ namespace Admin.Pages.Faq.List
 
         public sealed class InputModel
         {
-            [DisplayName("FAQ ºÐ·ù")]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
+            [DisplayName("FAQ 분류")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
             public int CategoryID { get; set; }
 
-            [DisplayName("Áú¹®")]
+            [DisplayName("질문")]
             [DataType(DataType.Text)]
-            [Required(ErrorMessage = "{0}´Â ÇʼöÀÔ´Ï´Ù.")]
-            [StringLength(255, ErrorMessage = "{0}Àº {1}ÀÚ ÀÌÇÏ·Î ÀÔ·ÂÇϼ¼¿ä.")]
+            [Required(ErrorMessage = "{0}는 필수입니다.")]
+            [StringLength(255, ErrorMessage = "{0}� {1}� �하로 입력하세요.")]
             public string Question { get; set; } = default!;
 
-            [DisplayName("´äº¯")]
+            [DisplayName("답변")]
             [DataType(DataType.Html)]
             public string? Answer { get; set; }
 
-            [DisplayName("¼ø¼­")]
-            [Range(-9999, 9999, ErrorMessage = "{0}Àº {1}¿¡¼­ {2} »çÀÌÀÇ °ªÀ̾î¾ß ÇÕ´Ï´Ù.")]
+            [DisplayName("순서")]
+            [Range(-9999, 9999, ErrorMessage = "{0}� {1}�서 {2} 사�� 값�어야 합니다.")]
             public short Order { get; set; } = 0;
 
-            [DisplayName("»ç¿ë ¿©ºÎ")]
+            [DisplayName("사용 여부")]
             public bool IsActive { get; set; } = false;
         }
 
@@ -78,7 +78,7 @@ namespace Admin.Pages.Faq.List
 
                 await mediator.Send(command, ct);
 
-                TempData["SuccessMessage"] = $"{Input.Question} FAQ°¡ µî·ÏµÇ¾ú½À´Ï´Ù.";
+                TempData["SuccessMessage"] = $"{Input.Question} FAQ가 등��었습니다.";
 
                 return RedirectToPage("/Faq/List/Index");
             }

+ 1 - 1
Admin/Pages/Forum/Attachments/CommentFile/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Attachments/CommentImage/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using SharedKernel;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Attachments/PostFile/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Attachments/PostImage/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using SharedKernel;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Board/Group.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;

+ 1 - 1
Admin/Pages/Forum/Board/List/Edit.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Board/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Board/List/Write.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Board/Manager.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/Comment.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/Exp.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/General.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/List.cshtml.cs

@@ -1,7 +1,7 @@
 using Domain.Entities.Forum.Boards;
 using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/Notify.cshtml.cs

@@ -3,7 +3,7 @@ using System.Reflection;
 using Domain.Entities.Forum.Boards;
 using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Board/Meta/NotifyTemplate.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/Permission.cshtml.cs

@@ -1,7 +1,7 @@
 using Domain.Entities.Forum.Boards;
 using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using System.ComponentModel.DataAnnotations;
 using System.Reflection;
 using Microsoft.AspNetCore.Mvc;

+ 1 - 1
Admin/Pages/Forum/Board/Meta/View.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Meta/Write.cshtml.cs

@@ -1,6 +1,6 @@
 using Domain.Entities.Forum.Boards;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Forum/Board/Prefix.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel.DataAnnotations;

+ 1 - 1
Admin/Pages/Forum/Comments/List/Edit.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using SharedKernel.Extensions;

+ 1 - 1
Admin/Pages/Forum/Comments/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Posts/List/Edit.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.WebUtilities;

+ 1 - 1
Admin/Pages/Forum/Posts/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Extensions;
 using SharedKernel.Helpers;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Posts/List/View.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 
 namespace Admin.Pages.Forum.Posts.List

+ 1 - 1
Admin/Pages/Forum/Posts/List/Write.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Reactions/Comment/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Reactions/Post/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 6 - 6
Admin/Pages/Forum/Reports/Comment/Index.cshtml.cs

@@ -1,7 +1,7 @@
-using Domain.Entities.Forum.ValueObject;
+using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -28,11 +28,11 @@ namespace Admin.Pages.Forum.Reports.Comment
             public byte? Type { get; set; }
 
             [Range(1, int.MaxValue)]
-            [DisplayName("페이지 번호")]
+            [DisplayName("??? ??")]
             public int PageNum { get; set; } = 1;
 
             [Range(1, 100)]
-            [DisplayName("페이지 목록 수")]
+            [DisplayName("??? ?? ?")]
             public ushort PerPage { get; set; } = 20;
         }
 
@@ -117,7 +117,7 @@ namespace Admin.Pages.Forum.Reports.Comment
             {
                 await mediator.Send(new UpdateCommentReportStatus.Command(ids, (ReportStatus)status, memo), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}건의 상태가 변경되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}?? ??? ???????.";
             }
             catch (Exception e)
             {
@@ -133,7 +133,7 @@ namespace Admin.Pages.Forum.Reports.Comment
             {
                 await mediator.Send(new DeleteCommentReport.Command(ids), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}건이 삭제되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}?? ???????.";
             }
             catch (Exception e)
             {

+ 6 - 6
Admin/Pages/Forum/Reports/Post/Index.cshtml.cs

@@ -1,7 +1,7 @@
-using Domain.Entities.Forum.ValueObject;
+using Domain.Entities.Forum.ValueObject;
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;
@@ -27,11 +27,11 @@ namespace Admin.Pages.Forum.Reports.Post
             public byte? Type { get; set; }
 
             [Range(1, int.MaxValue)]
-            [DisplayName("페이지 번호")]
+            [DisplayName("??? ??")]
             public int PageNum { get; set; } = 1;
 
             [Range(1, 100)]
-            [DisplayName("페이지 목록 수")]
+            [DisplayName("??? ?? ?")]
             public ushort PerPage { get; set; } = 20;
         }
 
@@ -104,7 +104,7 @@ namespace Admin.Pages.Forum.Reports.Post
             {
                 await mediator.Send(new UpdatePostReportStatus.Command(ids, (ReportStatus)status, memo), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}건의 상태가 변경되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}?? ??? ???????.";
             }
             catch (Exception e)
             {
@@ -120,7 +120,7 @@ namespace Admin.Pages.Forum.Reports.Post
             {
                 await mediator.Send(new DeletePostReport.Command(ids), ct);
 
-                TempData["SuccessMessage"] = $"{ids.Length}건이 삭제되었습니다.";
+                TempData["SuccessMessage"] = $"{ids.Length}?? ???????.";
             }
             catch (Exception e)
             {

+ 1 - 1
Admin/Pages/Forum/Trash/Comment/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Forum/Trash/Post/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Member/Grade/Edit.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Grade/Index.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Member/Grade/Write.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/List/Approve.cshtml.cs

@@ -1,5 +1,5 @@
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/List/Edit.cshtml.cs

@@ -2,7 +2,7 @@ using Domain.Entities.Members.ValueObject;
 using SharedKernel.Attributes;
 using SharedKernel.Extensions;
 using SharedKernel.Storage;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Member/List/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
 using Domain.Entities.Members.ValueObject;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/List/View.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 

+ 1 - 1
Admin/Pages/Member/List/Write.cshtml.cs

@@ -2,7 +2,7 @@ using Domain.Entities.Members.ValueObject;
 using SharedKernel.Extensions;
 using SharedKernel.Storage;
 using SharedKernel.Attributes;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.AspNetCore.Mvc.Rendering;

+ 1 - 1
Admin/Pages/Member/Log/Email.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Log/Intro.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Log/Login/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Log/Login/Info.cshtml.cs

@@ -1,4 +1,4 @@
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using GetLoginLog = Application.Features.Admin.Member.Logs.Login.Get;

+ 1 - 1
Admin/Pages/Member/Log/Name.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Log/Summary.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Wallet/List/Index.cshtml.cs

@@ -1,6 +1,6 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

+ 1 - 1
Admin/Pages/Member/Wallet/List/View.cshtml.cs

@@ -1,5 +1,5 @@
 using Infrastructure.Persistence.Identity;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Identity;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;

+ 1 - 1
Admin/Pages/Member/Wallet/Transactions/Index.cshtml.cs

@@ -1,7 +1,7 @@
 using SharedKernel.Helpers;
 using SharedKernel.Extensions;
 using Domain.Entities.Wallets.ValueObject;
-using MediatR;
+using Application.Abstractions.Messaging;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using System.ComponentModel;

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů