MonitoringPointService.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.Extensions.Logging;
  4. using FMSAdmin.Data;
  5. using System.Linq;
  6. using FMSAdmin.Helpers;
  7. using FMSAdmin.Entities;
  8. using System.Transactions;
  9. using Microsoft.EntityFrameworkCore;
  10. namespace FMSAdmin.Services {
  11. public class MonitoringPointService {
  12. private readonly ILogger<MonitoringPointService> _logger;
  13. private readonly FMSContext _context;
  14. private readonly StorageHelper _storage;
  15. public MonitoringPointService(
  16. ILogger<MonitoringPointService> logger,
  17. FMSContext context,
  18. StorageHelper storage
  19. ) {
  20. _logger = logger;
  21. _context = context;
  22. _storage = storage;
  23. }
  24. public IQueryable<BemsMonitoringPoint> GetAll() {
  25. var query = _context.BemsMonitoringPoint;//.AsNoTracking();
  26. return query;
  27. }
  28. public IQueryable<BemsMonitoringPoint> Get(int siteId, int facilityCode, int propertyId) {
  29. var data = _context.BemsMonitoringPoint.Where(x => x.SiteId == siteId && x.FacilityCode == facilityCode && x.PropertyId == propertyId);
  30. return data;
  31. }
  32. public void Create(BemsMonitoringPoint data) {
  33. using (var trans = new TransactionScope()) {
  34. checkName(data);
  35. var persist = _context.BemsMonitoringPoint.Where(x => x.SiteId == data.SiteId && x.FacilityCode == data.FacilityCode).OrderByDescending(x => x.PropertyId).FirstOrDefault();
  36. if (persist == null) {
  37. data.PropertyId = 1;
  38. } else { data.PropertyId = persist.PropertyId + 1; }
  39. _context.BemsMonitoringPoint.Add(data);
  40. _context.SaveChanges();
  41. trans.Complete();
  42. }
  43. }
  44. public void Edit(int siteId, int facilityCode, int propertyId, BemsMonitoringPoint data) {
  45. using (var trans = new TransactionScope()) {
  46. var persist = _context.BemsMonitoringPoint
  47. .Where(x => x.SiteId == siteId && x.FacilityCode == facilityCode && x.PropertyId == propertyId).FirstOrDefault();
  48. if (persist == null) {
  49. throw new ServiceException("정보를 찾을 수 없습니다.");
  50. }
  51. if (!persist.Name.Equals(data.Name)) {
  52. checkName(data);
  53. }
  54. _logger.LogInformation("수정");
  55. persist.Name = data.Name;
  56. persist.ValueType = data.ValueType;
  57. persist.ServiceTypeId = data.ServiceTypeId;
  58. persist.FuelTypeId = data.FuelTypeId;
  59. persist.Description = data.Description;
  60. _context.BemsMonitoringPoint.Update(persist);
  61. _context.SaveChanges();
  62. trans.Complete();
  63. }
  64. }
  65. public void checkName(BemsMonitoringPoint data) {
  66. var check = _context.BemsMonitoringPoint.Where(x => x.SiteId == data.SiteId && x.FacilityCode == data.FacilityCode && x.Name == data.Name).Count();
  67. if (check > 0) {
  68. throw new ServiceException("이미 동일 이름이 존재합니다.");
  69. }
  70. }
  71. public void Delete(List<BemsMonitoringPoint> data) {
  72. using (var trans = new TransactionScope()) {
  73. foreach (var point in data) {
  74. var persist = _context.BemsMonitoringPoint.First(x => x.SiteId == point.SiteId && x.FacilityCode == point.FacilityCode && x.PropertyId == point.PropertyId);
  75. _context.BemsMonitoringPoint.Remove(persist);
  76. }
  77. _context.SaveChanges();
  78. trans.Complete();
  79. }
  80. }
  81. public void Deletes(int siteId, int facilityCode) {
  82. using (var trans = new TransactionScope()) {
  83. var data = _context.BemsMonitoringPoint.Where(x => x.SiteId == siteId && x.FacilityCode == facilityCode);
  84. _context.BemsMonitoringPoint.RemoveRange(data);
  85. _context.SaveChanges();
  86. trans.Complete();
  87. }
  88. }
  89. public void CreateAll(int siteId, int facilityTypeId, int facilityCode) {
  90. using (var trans = new TransactionScope()) {
  91. var list = _context.BemsMonitoringPointBaseData.Where(x => x.FacilityTypeId == facilityTypeId);
  92. foreach (var persist in list) {
  93. BemsMonitoringPoint data = new BemsMonitoringPoint();
  94. data.SiteId = siteId;
  95. data.FacilityTypeId = facilityTypeId;
  96. data.FacilityCode = facilityCode;
  97. data.PropertyId = persist.PropertyId;
  98. data.ValueType = persist.ValueType;
  99. data.ServiceTypeId = persist.ServiceTypeId;
  100. data.FuelTypeId = persist.FuelTypeId;
  101. data.Name = persist.Name;
  102. _context.BemsMonitoringPoint.Add(data);
  103. }
  104. _context.SaveChanges();
  105. trans.Complete();
  106. }
  107. }
  108. }
  109. }