ManualHistoryController.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using FMSAdmin.Data;
  5. using FMSAdmin.Models;
  6. using FMSAdmin.Entities;
  7. using FMSApp.Services;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.Extensions.Logging;
  10. using Microsoft.AspNetCore.Authorization;
  11. using FMSAdmin.Helpers;
  12. using System.Data;
  13. using System.IO;
  14. using OfficeOpenXml;
  15. namespace FMSApp.Controllers {
  16. [Authorize]
  17. [ApiController]
  18. [ApiVersion("1")]
  19. [Route("api/app/[controller]")]
  20. public class ManualHistoryController : Controller {
  21. private readonly ILogger<ManualHistoryController> _logger;
  22. private readonly FMSContext _context;
  23. private readonly ManualHistoryService _service;
  24. private readonly StorageHelper _storage;
  25. public ManualHistoryController(
  26. ILogger<ManualHistoryController> logger,
  27. FMSContext context,
  28. ManualHistoryService service,
  29. StorageHelper storage
  30. ) {
  31. _logger = logger;
  32. _context = context;
  33. _service = service;
  34. _storage = storage;
  35. }
  36. /// <summary>
  37. /// 목록
  38. /// </summary>
  39. [HttpGet]
  40. public IActionResult List([FromQuery] PagingRequest req, [FromQuery] string siteId, [FromQuery] string ManualId) {
  41. var query = _FilterAndSort(req);
  42. query = query.Where(x => x.SiteId == Util.ToInt(siteId) && x.ManualId == Util.ToInt(ManualId));
  43. var list = query.Select(x => new {
  44. x.SiteId,
  45. x.ManualId,
  46. x.HistoryId,
  47. x.RevisionNo,
  48. x.FileId,
  49. CmFile = _storage.ParseFile(x.CmFile),
  50. x.Description,
  51. x.UpdatedDate,
  52. x.UpdatedUserId,
  53. });
  54. var paging = PagingList.Pagination(list, req.page, req.limit);
  55. return Ok(paging);
  56. }
  57. [HttpGet("[action]")]
  58. public IActionResult Get([FromQuery] string siteId, [FromQuery] string ManualId, [FromQuery] string historyId, [FromQuery] string userId, [FromQuery] string isCreate) {
  59. if (Util.ToBool(isCreate)) {
  60. var query = _service.GetAll()
  61. .Where(x => x.SiteId == Util.ToInt(siteId) && x.ManualId == Util.ToInt(ManualId)).OrderByDescending(x => x.HistoryId);
  62. var item = query.Select(x => new {
  63. x.SiteId,
  64. RevisionNo = Util.ToInt(x.RevisionNo) + 1
  65. }).FirstOrDefault();
  66. return Ok(item);
  67. } else {
  68. var query = _service.GetAll()
  69. .Where(x => x.SiteId == Util.ToInt(siteId) && x.ManualId == Util.ToInt(ManualId) && x.HistoryId == Util.ToInt(historyId));
  70. var item = query.Select(x => new {
  71. x.SiteId,
  72. x.ManualId,
  73. x.HistoryId,
  74. x.RevisionNo,
  75. CmFile = _storage.ParseFile(x.CmFile),
  76. x.Description,
  77. x.UpdatedDate,
  78. x.UpdatedUserId,
  79. CmUser = new {
  80. Name = x.CmUser.Name
  81. }
  82. }).FirstOrDefault();
  83. return Ok(item);
  84. }
  85. }
  86. /// <summary>
  87. /// 저장
  88. /// </summary>
  89. /// <param name="data"></param>
  90. /// <returns></returns>
  91. [HttpPost("[action]")]
  92. public IActionResult Save([FromBody] FmsManualHistory data) {
  93. _logger.LogInformation("Save");
  94. //_logger.LogInformation(data.Dump());
  95. if (ModelState.IsValid) {
  96. _service.Save(data);
  97. } else {
  98. return BadRequest(ModelState);
  99. }
  100. return Ok();
  101. }
  102. [HttpDelete("{siteId}/{manualId}/{historyId}")]
  103. public IActionResult Delete(int siteId, int manualId, int historyId) {
  104. _service.Delete(siteId, manualId, historyId);
  105. return Ok();
  106. }
  107. // 검색 & 정렬 공통
  108. private IQueryable<FmsManualHistory> _FilterAndSort(PagingRequest req) {
  109. var query = _service.GetAll();
  110. // 기본 Entity 검색
  111. query = query.Filter(req.conditions);
  112. // 기본 Entity 정렬
  113. query = query.Sort(req.sort);
  114. return query;
  115. }
  116. }
  117. }