ReportHistoryService.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IdentityModel.Tokens.Jwt;
  4. using System.Linq;
  5. using System.Security.Claims;
  6. using System.Text;
  7. using System.Transactions;
  8. using FMSAdmin.Data;
  9. using FMSAdmin.Helpers;
  10. using FMSAdmin.Entities;
  11. using Microsoft.EntityFrameworkCore;
  12. using Microsoft.Extensions.Logging;
  13. using Microsoft.Extensions.Options;
  14. using Microsoft.IdentityModel.Tokens;
  15. using FMSAdmin.Models;
  16. namespace FMSAdmin.Services {
  17. public class ReportHistoryService {
  18. private readonly ILogger<ReportHistoryService> _logger;
  19. private readonly FMSContext _context;
  20. private readonly StorageHelper _storage;
  21. public ReportHistoryService(
  22. ILogger<ReportHistoryService> logger,
  23. FMSContext context,
  24. StorageHelper storage) {
  25. _logger = logger;
  26. _context = context;
  27. _storage = storage;
  28. }
  29. public void Save(BemsReportHistory data) {
  30. using (var trans = new TransactionScope()) {
  31. var persist_1 = 0;
  32. var FormatName = _context.BemsReportFormat.Where(x => x.SiteId == data.SiteId && x.ReportFormatId == data.ReportFormatId).Select(x => x.FormatName).First();
  33. if (data.Seq == 0) {
  34. var iCnt = _context.BemsReportHistory.Where(x => x.SiteId == data.SiteId).Count();
  35. if (iCnt > 0) persist_1 = _context.BemsReportHistory.Where(x => x.SiteId == data.SiteId).Max(x => x.Seq);
  36. else persist_1 = 0;
  37. data.Seq = persist_1 + 1;
  38. }
  39. var persist = _context.BemsReportHistory
  40. .Where(x => x.SiteId == data.SiteId && x.Seq == data.Seq).FirstOrDefault();
  41. if (persist == null) {
  42. if (data.CmFile != null && data.CmFile.IsUpload) {
  43. data.CmFile.SiteId = data.SiteId;
  44. var category = _context.CmFileCategory.First(x => x.Name == "report");
  45. data.CmFile.FileCategory = category;
  46. data.CmFile.CreatedDate = DateTime.Now;
  47. } else {
  48. data.CmFile = null;
  49. }
  50. data.FormatName = FormatName;
  51. data.CreateDate = DateTime.Now;
  52. _context.BemsReportHistory.Add(data);
  53. _context.SaveChanges();
  54. if (data.CmFile != null && data.CmFile.IsUpload) {
  55. // 카피
  56. _storage.CopyEntity(data.CmFile.Path, data.CmFile);
  57. }
  58. } else {
  59. if (data.CmFile != null && data.CmFile.IsUpload) {
  60. var category = _context.CmFileCategory.First(x => x.Name == "report");
  61. persist.CmFile = new CmFile {
  62. SiteId = data.SiteId,
  63. FileCategory = category,
  64. CreatedDate = DateTime.Now,
  65. Name = data.CmFile.Name,
  66. FileSize = data.CmFile.FileSize,
  67. ContentType = data.CmFile.ContentType,
  68. };
  69. } else if (data.CmFile != null && data.CmFile.IsDelete) {
  70. persist.FileId = null;
  71. persist.CmFile = null;
  72. }
  73. persist.ReportName = data.ReportName;
  74. persist.ReportFormatId = data.ReportFormatId;
  75. persist.FormatName = FormatName;
  76. // if (data.CmFile != null && data.CmFile.IsUpload) {
  77. // persist.CmFile = data.CmFile;
  78. // }
  79. persist.BemsReportHistoryContent.Clear();
  80. // 추가된 일지 생성
  81. foreach (var info in data.BemsReportHistoryContent) {
  82. persist.BemsReportHistoryContent.Add(new BemsReportHistoryContent() {
  83. SiteId = persist.SiteId,
  84. Seq = persist.Seq,
  85. ContentId = info.ContentId,
  86. Content = info.Content,
  87. });
  88. }
  89. _context.BemsReportHistory.Update(persist);
  90. _context.SaveChanges();
  91. if (data.CmFile != null && data.CmFile.IsUpload) {
  92. // 카피
  93. _storage.CopyEntity(data.CmFile.Path, persist.CmFile);
  94. if (persist.CmFile != null) {
  95. // 파일 삭제시 진짜 DB삭제?
  96. }
  97. }
  98. }
  99. trans.Complete();
  100. }
  101. }
  102. public IQueryable<BemsReportHistory> GetAll() {
  103. var query = _context.BemsReportHistory;//.AsNoTracking();
  104. return query;
  105. }
  106. public IQueryable<BemsReportHistory> Get(int Seq, int siteId) {
  107. var data = _context.BemsReportHistory.Where(x => x.SiteId == siteId && x.Seq == Seq);
  108. return data;
  109. }
  110. public void Delete(int Seq, int siteId) {
  111. using (var trans = new TransactionScope()) {
  112. var data = _context.BemsReportHistory.First(x => x.Seq == Seq && x.SiteId == siteId);
  113. var detail = _context.BemsReportHistoryContent.Where(x => x.Seq == Seq && x.SiteId == siteId);
  114. _context.BemsReportHistoryContent.RemoveRange(detail);
  115. _context.BemsReportHistory.Remove(data);
  116. _context.SaveChanges();
  117. trans.Complete();
  118. }
  119. }
  120. }
  121. }