WeekWorkService.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using FMSAdmin.Data;
  5. using FMSAdmin.Entities;
  6. using Microsoft.Extensions.Logging;
  7. namespace FMSAdmin.Services {
  8. public class WeekWorkService {
  9. private readonly ILogger<WeekWorkService> _logger;
  10. private readonly FMSContext _context;
  11. public WeekWorkService(
  12. ILogger<WeekWorkService> logger,
  13. FMSContext context) {
  14. _logger = logger;
  15. _context = context;
  16. }
  17. public IQueryable<FmsWeekKeyWork> GetAll() {
  18. var query = _context.FmsWeekKeyWork;
  19. return query;
  20. }
  21. public IQueryable<FmsWeekKeyWork> Get(int siteId, string workDate) {
  22. var data = _context.FmsWeekKeyWork.Where(x => x.SiteId == siteId && x.WorkDate == Convert.ToDateTime(workDate));
  23. return data;
  24. }
  25. public IQueryable<FmsWeekKeyWork> GetWeek(int siteId, DateTime startDate, DateTime endDate) {
  26. var query = _context.FmsWeekKeyWork.Where(x => x.SiteId == siteId && x.WorkDate.Date >= startDate.Date && x.WorkDate.Date <= endDate.Date);
  27. return query;
  28. }
  29. public void Edit(int siteId, string workDate, FmsWeekKeyWork data) {
  30. var persist = _context.FmsWeekKeyWork
  31. .Where(x => x.SiteId == siteId && x.WorkDate == Convert.ToDateTime(workDate)).FirstOrDefault();
  32. if (persist == null) {
  33. throw new ServiceException("정보를 찾을 수 없습니다.");
  34. }
  35. persist.SiteId = data.SiteId;
  36. persist.Year = data.Year;
  37. persist.Month = data.Month;
  38. persist.Week = data.Week;
  39. persist.WorkDate = data.WorkDate;
  40. persist.WorkName = data.WorkName;
  41. checkWeek(persist);
  42. _context.FmsWeekKeyWork.Update(persist);
  43. _context.SaveChanges();
  44. }
  45. public void Create(FmsWeekKeyWork data) {
  46. using (var transaction = _context.Database.BeginTransaction()) {
  47. if (data.IsAllSite) {
  48. var temp = _context.FmsWeekKeyWork.Where(x => x.WorkDate == data.WorkDate).ToList();
  49. _context.FmsWeekKeyWork.RemoveRange(temp);
  50. var siteIdList = _context.CmSite.Select(x => x.SiteId).ToList();
  51. IList<FmsWeekKeyWork> list = new List<FmsWeekKeyWork>();
  52. foreach (var siteId in siteIdList) {
  53. var mothKeywork = new FmsWeekKeyWork {
  54. SiteId = siteId,
  55. Year = data.Year,
  56. Month = data.Month,
  57. Week = data.Week,
  58. WorkDate = data.WorkDate,
  59. WorkName = data.WorkName,
  60. };
  61. list.Add(mothKeywork);
  62. }
  63. _context.FmsWeekKeyWork.AddRange(list);
  64. _context.SaveChanges();
  65. } else {
  66. checkWeek(data);
  67. _context.FmsWeekKeyWork.Add(data);
  68. _context.SaveChanges();
  69. }
  70. transaction.Commit();
  71. }
  72. }
  73. public void Delete(int siteId, string workDate) {
  74. var data = _context.FmsWeekKeyWork.First(x => x.SiteId == siteId && x.WorkDate == Convert.ToDateTime(workDate));
  75. _context.FmsWeekKeyWork.Remove(data);
  76. _context.SaveChanges();
  77. }
  78. public void checkWeek(FmsWeekKeyWork data) {
  79. var check = _context.FmsWeekKeyWork.Where(x => x.SiteId == data.SiteId && x.WorkDate == data.WorkDate).Count();
  80. if (check > 0 && data.WeekKeyWorkId == 0) {
  81. var site = _context.CmSite.Where(x => x.SiteId == data.SiteId).FirstOrDefault();
  82. throw new ServiceException(site.Name + "의 " + data.Year + "년도 " + data.Month + "월 " + data.Week + "주 업무를 이미 등록 하셨습니다.");
  83. }
  84. }
  85. }
  86. }