MetaController.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Diagnostics;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Authorization;
  4. using bitforum.Models;
  5. using bitforum.Helpers;
  6. using bitforum.Repository;
  7. using bitforum.Services;
  8. namespace bitforum.Controllers.System
  9. {
  10. [Authorize]
  11. [Route("System")]
  12. public class MetaController : Controller
  13. {
  14. private readonly ILogger<MetaController> _logger;
  15. private readonly IConfigRepository _configRepository;
  16. private readonly ISetupService _setupService;
  17. private readonly string _ViewPath = "~/Views/System/Meta.cshtml";
  18. public MetaController(ILogger<MetaController> logger, IConfigRepository configRepository, ISetupService setupService)
  19. {
  20. _logger = logger;
  21. _configRepository = configRepository;
  22. _setupService = setupService;
  23. }
  24. [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  25. public IActionResult Error()
  26. {
  27. return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
  28. }
  29. [HttpGet("Meta")]
  30. public IActionResult Index()
  31. {
  32. ViewBag.Config = _configRepository.GetAll();
  33. return View(_ViewPath);
  34. }
  35. [HttpPost("Meta")]
  36. public IActionResult Save(MetaForm request)
  37. {
  38. try
  39. {
  40. if (!ModelState.IsValid)
  41. {
  42. throw new Exception("메타 태그 설정 값 저장에 실패");
  43. }
  44. Functions.SaveConfig(request, _configRepository.Replace);
  45. _setupService.RefreshConfigAsync().Wait();
  46. string message = "메타 태그 설정 값이 정상적으로 저장되었습니다.";
  47. TempData["SuccessMessage"] = message;
  48. _logger.LogInformation(message);
  49. }
  50. catch (Exception e)
  51. {
  52. TempData["ErrorMessages"] = e.Message;
  53. _logger.LogError(e, e.Message);
  54. }
  55. return Index();
  56. }
  57. }
  58. }