ZoneService.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using FMSAdmin.Data;
  4. using FMSAdmin.Entities;
  5. using Microsoft.Extensions.Logging;
  6. namespace FMSAdmin.Services {
  7. public class ZoneService {
  8. private readonly ILogger<ZoneService> _logger;
  9. private readonly FMSContext _context;
  10. public ZoneService(
  11. ILogger<ZoneService> logger,
  12. FMSContext context) {
  13. _logger = logger;
  14. _context = context;
  15. }
  16. public void Create(CmZone data) {
  17. checkName(data);
  18. _context.CmZone.Add(data);
  19. _context.SaveChanges();
  20. }
  21. public void Edit(int id, int siteId, CmZone data) {
  22. var persist = _context.CmZone
  23. .Where(x => x.ZoneId == id && x.SiteId == siteId).FirstOrDefault();
  24. if (persist == null) {
  25. throw new ServiceException("정보를 찾을 수 없습니다.");
  26. }
  27. if (!persist.Name.Equals(data.Name)) {
  28. checkName(data);
  29. }
  30. persist.SiteId = data.SiteId;
  31. persist.BuildingId = data.BuildingId;
  32. persist.FloorId = data.FloorId;
  33. persist.Name = data.Name;
  34. _context.CmZone.Update(persist);
  35. _context.SaveChanges();
  36. }
  37. public void ImportExcel(IList<CmZone> list) {
  38. using (var transaction = _context.Database.BeginTransaction()) {
  39. _context.CmZone.AddRange(list);
  40. _context.SaveChanges();
  41. transaction.Commit();
  42. }
  43. }
  44. public int checkName(CmZone data, bool isExcel = false) {
  45. var check = _context.CmZone.Where(x => x.SiteId == data.SiteId && x.BuildingId == data.BuildingId && x.FloorId == data.FloorId && x.Name == data.Name).Count();
  46. if (!isExcel && check > 0) {
  47. throw new ServiceException("이미 동일 정보가 존재합니다.(빌딩명칭, 층 명칭, 구역 명칭 확인 필요)");
  48. }
  49. return check;
  50. }
  51. public void Delete(int id, int siteId) {
  52. var data = _context.CmZone.First(x => x.ZoneId == id && x.SiteId == siteId);
  53. _context.CmZone.Remove(data);
  54. _context.SaveChanges();
  55. }
  56. public IQueryable<CmZone> GetAll() {
  57. var query = _context.CmZone;
  58. return query;
  59. }
  60. public IQueryable<CmZone> Get(int id, int siteId) {
  61. var data = _context.CmZone.Where(x => x.ZoneId == id && x.SiteId == siteId);
  62. return data;
  63. }
  64. }
  65. }