AnnouncementService.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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 FMSAdmin.Data;
  8. using FMSAdmin.Helpers;
  9. using FMSAdmin.Entities;
  10. using Microsoft.EntityFrameworkCore;
  11. using Microsoft.Extensions.Logging;
  12. using Microsoft.Extensions.Options;
  13. using Microsoft.IdentityModel.Tokens;
  14. using FMSAdmin.Models;
  15. using System.Transactions;
  16. namespace FMSAdmin.Services {
  17. public class AnnouncementService {
  18. private readonly ILogger<AnnouncementService> _logger;
  19. private readonly FMSContext _context;
  20. private readonly StorageHelper _storage;
  21. private readonly PushHelper _push;
  22. public AnnouncementService(
  23. ILogger<AnnouncementService> logger,
  24. FMSContext context,
  25. StorageHelper storage,
  26. PushHelper push) {
  27. _logger = logger;
  28. _context = context;
  29. _storage = storage;
  30. _push = push;
  31. }
  32. public IQueryable<CmAnnouncement> GetAll() {
  33. var query = _context.CmAnnouncement;
  34. return query;
  35. }
  36. public IQueryable<CmAnnouncement> Gets(int id, int siteId) {
  37. var data = _context.CmAnnouncement.Where(x => x.AnnouncementId == id && x.SiteId == siteId);
  38. return data;
  39. }
  40. public void Create(CmAnnouncement data) {
  41. using (var trans = new TransactionScope()) {
  42. if (data.CmFile != null && data.CmFile.IsUpload) {
  43. data.CmFile.SiteId = data.SiteId;
  44. var category = _context.CmFileCategory.First(x => x.Name == "announcement");
  45. data.CmFile.FileCategory = category;
  46. data.CmFile.CreatedDate = DateTime.Now;
  47. } else {
  48. data.CmFile = null;
  49. }
  50. data.IsUse = true;
  51. data.ReadCount = 0;
  52. data.AddDate = DateTime.Now;
  53. _context.CmAnnouncement.Add(data);
  54. _context.SaveChanges();
  55. if (data.CmFile != null && data.CmFile.IsUpload) {
  56. // 카피
  57. _storage.CopyEntity(data.CmFile.Path, data.CmFile);
  58. }
  59. trans.Complete();
  60. }
  61. if (data.IsAllView != null && data.IsAllView == true) {
  62. _push.SendToAllUsers("공지사항", data.Title, new {
  63. type = "announcement",
  64. id = data.AnnouncementId
  65. });
  66. } else {
  67. _push.SendToSiteUsers(data.SiteId, "공지사항", data.Title, new {
  68. type = "announcement",
  69. id = data.AnnouncementId
  70. });
  71. }
  72. }
  73. public void Edit(int id, int siteId, CmAnnouncement data) {
  74. using (var trans = new TransactionScope()) {
  75. if (data.CmFile != null && data.CmFile.IsUpload) {
  76. data.CmFile.SiteId = data.SiteId;
  77. var category = _context.CmFileCategory.First(x => x.Name == "announcement");
  78. data.CmFile.FileCategory = category;
  79. data.CmFile.CreatedDate = DateTime.Now;
  80. }
  81. var persist = _context.CmAnnouncement
  82. .Where(x => x.AnnouncementId == id && x.SiteId == siteId).FirstOrDefault();
  83. if (persist == null) {
  84. throw new ServiceException("정보를 찾을 수 없습니다.");
  85. }
  86. persist.SiteId = data.SiteId;
  87. persist.AnnouncementId = data.AnnouncementId;
  88. persist.BusinessFieldId = data.BusinessFieldId;
  89. persist.Title = data.Title;
  90. persist.Contents = data.Contents;
  91. persist.RegisterUserId = data.RegisterUserId;
  92. persist.UpdateDate = data.UpdateDate;
  93. persist.IsAllView = data.IsAllView;
  94. if (data.CmFile != null && data.CmFile.IsUpload) {
  95. persist.CmFile = data.CmFile;
  96. }
  97. if (data.CmFile != null && data.CmFile.IsDelete) {
  98. persist.CmFile = null;
  99. persist.FileId = null;
  100. }
  101. _context.CmAnnouncement.Update(persist);
  102. _context.SaveChanges();
  103. if (data.CmFile != null && data.CmFile.IsUpload) {
  104. // 카피
  105. _storage.CopyEntity(data.CmFile.Path, persist.CmFile);
  106. }
  107. trans.Complete();
  108. }
  109. }
  110. public void Delete(int id, int siteId) {
  111. var data = _context.CmAnnouncement.First(x => x.AnnouncementId == id && x.SiteId == siteId);
  112. _context.CmAnnouncement.Remove(data);
  113. _context.SaveChanges();
  114. }
  115. public void AddCount(int id, int siteId) {
  116. var persist = _context.CmAnnouncement
  117. .Where(x => x.AnnouncementId == id && x.SiteId == siteId).FirstOrDefault();
  118. if (persist == null) {
  119. throw new ServiceException("정보를 찾을 수 없습니다.");
  120. }
  121. persist.ReadCount += 1;
  122. _context.CmAnnouncement.Update(persist);
  123. _context.SaveChanges();
  124. }
  125. }
  126. }