FmsWorkScheduleToFacilityController.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.Entity;
  5. using System.Data.Entity.Infrastructure;
  6. using System.Diagnostics;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Net.Http;
  10. using System.Web;
  11. using System.Web.Http;
  12. using System.Web.Http.Description;
  13. using DevExpress.XtraCharts.Native;
  14. using DevExpress.XtraPrinting.Native;
  15. using iBemsDataService;
  16. using iBemsDataService.Controllers.Fms.WorkManagement.ScheduledTask;
  17. using iBemsDataService.Model;
  18. using iBemsDataService.Util;
  19. namespace iBemsDataService.Controllers
  20. {
  21. public class FmsWorkScheduleToFacilityController : ApiController
  22. {
  23. private iBemsEntities db = new iBemsEntities();
  24. // POST: api/FmsWorkScheduleToFacility
  25. [ResponseType(typeof(void))]
  26. [ActionName("Insert")]
  27. public IHttpActionResult PostFmsWorkScheduleToFacility(List<WorkScheduleToFacility> workScheduleToFacilities)
  28. {
  29. if (!ModelState.IsValid)
  30. {
  31. return BadRequest(ModelState);
  32. }
  33. Uri uri = Request.RequestUri;
  34. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  35. int siteId, workScheduleId;
  36. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false ||
  37. int.TryParse(uriQuery.Get("WorkScheduleId"), out workScheduleId) == false)
  38. {
  39. return BadRequest("Not Found Parameters.");
  40. }
  41. var query = from d in db.FmsWorkScheduleToFacility
  42. where d.SiteId == siteId &&
  43. d.WorkScheduleId == workScheduleId
  44. select d;
  45. var qm = new QueryManager<FmsWorkScheduleToFacility>(db);
  46. try
  47. {
  48. qm.DeleteAndInsert(db.FmsWorkScheduleToFacility, workScheduleToFacilities, query);
  49. // 실행계획 관련 스케줄러 실행
  50. var workSchedule = db.FmsWorkSchedule
  51. .Where(s => s.WorkScheduleId == workScheduleId)
  52. .FirstOrDefault();
  53. if (workSchedule != null)
  54. {
  55. // if (workSchedule.WorkDueDate.Date == DateTime.Now.Date.Date ||
  56. // workSchedule.WorkDueDate.Date == DateTime.Now.AddDays(1).Date)
  57. // 무조건 동작하기로 수정 2016 04 04 hcLee
  58. {
  59. // 작업계획이 오늘이나 내일이면 실행계획으로 들어가야 함.
  60. // 관련 스케줄러를 강제로 실행
  61. WorkExecutionPlanJob tempJob = new WorkExecutionPlanJob();
  62. tempJob.Execute(null);
  63. }
  64. }
  65. }
  66. catch (DbUpdateException e) { throw e; }
  67. return StatusCode(HttpStatusCode.NoContent);
  68. }
  69. [ResponseType(typeof(void))]
  70. [ActionName("Delete")]
  71. public IHttpActionResult PostFmsWorkScheduleToFacilityDelete(WorkScheduleToFacility workScheduleToFacilities)
  72. {
  73. if (!ModelState.IsValid)
  74. {
  75. return BadRequest(ModelState);
  76. }
  77. Uri uri = Request.RequestUri;
  78. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  79. int siteId, workScheduleId;
  80. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false ||
  81. int.TryParse(uriQuery.Get("WorkScheduleId"), out workScheduleId) == false)
  82. {
  83. return BadRequest("Not Found Parameters.");
  84. }
  85. var query = from d in db.FmsWorkScheduleToFacility
  86. where d.SiteId == siteId &&
  87. d.WorkScheduleId == workScheduleId
  88. select d;
  89. try
  90. {
  91. foreach (var deleteItem in query)
  92. {
  93. db.FmsWorkScheduleToFacility.Remove(deleteItem);
  94. }
  95. db.SaveChanges();
  96. // 실행계획 관련 스케줄러 실행
  97. var workSchedule = db.FmsWorkSchedule
  98. .Where(s => s.WorkScheduleId == workScheduleId)
  99. .FirstOrDefault();
  100. if (workSchedule != null)
  101. {
  102. // if (workSchedule.WorkDueDate.Date == DateTime.Now.Date.Date ||
  103. // workSchedule.WorkDueDate.Date == DateTime.Now.AddDays(1).Date)
  104. // 무조건 동작하기로 수정 2016 04 04 hcLee
  105. {
  106. // 작업계획이 오늘이나 내일이면 실행계획으로 들어가야 함.
  107. // 관련 스케줄러를 강제로 실행
  108. WorkExecutionPlanJob tempJob = new WorkExecutionPlanJob();
  109. tempJob.Execute(null);
  110. }
  111. }
  112. }
  113. catch (DbUpdateException e) { throw e; }
  114. return StatusCode(HttpStatusCode.NoContent);
  115. }
  116. protected override void Dispose(bool disposing)
  117. {
  118. if (disposing)
  119. {
  120. db.Dispose();
  121. }
  122. base.Dispose(disposing);
  123. }
  124. }
  125. public class WorkScheduleToFacility
  126. {
  127. public int SiteId { get; set; }
  128. public int WorkScheduleId { get; set; }
  129. public int FacilityCode { get; set; }
  130. };
  131. }