TemplateController.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Diagnostics;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Authorization;
  4. using bitforum.Models;
  5. using bitforum.Repository;
  6. using bitforum.Helpers;
  7. using bitforum.Services;
  8. namespace bitforum.Controllers.System
  9. {
  10. [Authorize]
  11. [Route("System")]
  12. public class TemplateController : Controller
  13. {
  14. private readonly ILogger<TemplateController> _logger;
  15. private readonly IConfigRepository _configRepository;
  16. private readonly IFileUploadService _fileUploadService;
  17. private readonly ISetupService _setupService;
  18. public TemplateController(ILogger<TemplateController> logger, IConfigRepository configRepository, IFileUploadService fileUploadService, ISetupService setupService)
  19. {
  20. _logger = logger;
  21. _configRepository = configRepository;
  22. _fileUploadService = fileUploadService;
  23. _setupService = setupService;
  24. }
  25. [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  26. public IActionResult Error()
  27. {
  28. return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
  29. }
  30. [HttpGet("Template/Email")]
  31. public IActionResult Index()
  32. {
  33. ViewBag.Config = _configRepository.GetAll();
  34. return View("~/Views/System/Template.cshtml");
  35. }
  36. [HttpPost("Template")]
  37. public IActionResult Save(EmailTemplate request)
  38. {
  39. try
  40. {
  41. if (!ModelState.IsValid)
  42. {
  43. throw new Exception("알림 양식 설정 값 저장에 실패");
  44. }
  45. var config = _configRepository.GetAll();
  46. request.RegisterEmailFormContent = _fileUploadService.UploadEditorAsync(request.RegisterEmailFormContent, config.GetConfig("register_email_form_content"), UploadFolder.Template).Result;
  47. request.RegistrationEmailFormContent = _fileUploadService.UploadEditorAsync(request.RegistrationEmailFormContent, config.GetConfig("registration_email_form_content"), UploadFolder.Template).Result;
  48. request.ResetPasswordEmailFormContent = _fileUploadService.UploadEditorAsync(request.ResetPasswordEmailFormContent, config.GetConfig("reset_password_email_form_content"), UploadFolder.Template).Result;
  49. request.ChangedPasswordEmailFormContent = _fileUploadService.UploadEditorAsync(request.ChangedPasswordEmailFormContent, config.GetConfig("changed_password_email_form_content"), UploadFolder.Template).Result;
  50. request.WithdrawEmailFormContent = _fileUploadService.UploadEditorAsync(request.WithdrawEmailFormContent, config.GetConfig("withdraw_email_form_content"), UploadFolder.Template).Result;
  51. request.EmailVerifyFormContent = _fileUploadService.UploadEditorAsync(request.EmailVerifyFormContent, config.GetConfig("email_verify_form_content"), UploadFolder.Template).Result;
  52. request.ChangedEmailFormContent = _fileUploadService.UploadEditorAsync(request.ChangedEmailFormContent, config.GetConfig("changed_email_form_content"), UploadFolder.Template).Result;
  53. Functions.SaveConfig(request, _configRepository.Replace);
  54. _setupService.RefreshConfigAsync().Wait();
  55. string message = "알림 양식 설정 값이 정상적으로 저장되었습니다.";
  56. TempData["SuccessMessage"] = message;
  57. _logger.LogInformation(message);
  58. }
  59. catch (Exception e) {
  60. TempData["ErrorMessages"] = e.Message;
  61. _logger.LogError(e, e.Message);
  62. }
  63. return Index();
  64. }
  65. }
  66. }