using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Diagnostics; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; using System.Web.Http.Description; using DevExpress.XtraCharts.Native; using DevExpress.XtraPrinting.Native; using iBemsDataService; using iBemsDataService.Controllers.Fms.WorkManagement.ScheduledTask; using iBemsDataService.Model; using iBemsDataService.Util; namespace iBemsDataService.Controllers { public class FmsWorkScheduleToFacilityController : ApiController { private iBemsEntities db = new iBemsEntities(); // POST: api/FmsWorkScheduleToFacility [ResponseType(typeof(void))] [ActionName("Insert")] public IHttpActionResult PostFmsWorkScheduleToFacility(List workScheduleToFacilities) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId, workScheduleId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false || int.TryParse(uriQuery.Get("WorkScheduleId"), out workScheduleId) == false) { return BadRequest("Not Found Parameters."); } var query = from d in db.FmsWorkScheduleToFacility where d.SiteId == siteId && d.WorkScheduleId == workScheduleId select d; var qm = new QueryManager(db); try { qm.DeleteAndInsert(db.FmsWorkScheduleToFacility, workScheduleToFacilities, query); // 실행계획 관련 스케줄러 실행 var workSchedule = db.FmsWorkSchedule .Where(s => s.WorkScheduleId == workScheduleId) .FirstOrDefault(); if (workSchedule != null) { // if (workSchedule.WorkDueDate.Date == DateTime.Now.Date.Date || // workSchedule.WorkDueDate.Date == DateTime.Now.AddDays(1).Date) // 무조건 동작하기로 수정 2016 04 04 hcLee { // 작업계획이 오늘이나 내일이면 실행계획으로 들어가야 함. // 관련 스케줄러를 강제로 실행 WorkExecutionPlanJob tempJob = new WorkExecutionPlanJob(); tempJob.Execute(null); } } } catch (DbUpdateException e) { throw e; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("Delete")] public IHttpActionResult PostFmsWorkScheduleToFacilityDelete(WorkScheduleToFacility workScheduleToFacilities) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId, workScheduleId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false || int.TryParse(uriQuery.Get("WorkScheduleId"), out workScheduleId) == false) { return BadRequest("Not Found Parameters."); } var query = from d in db.FmsWorkScheduleToFacility where d.SiteId == siteId && d.WorkScheduleId == workScheduleId select d; try { foreach (var deleteItem in query) { db.FmsWorkScheduleToFacility.Remove(deleteItem); } db.SaveChanges(); // 실행계획 관련 스케줄러 실행 var workSchedule = db.FmsWorkSchedule .Where(s => s.WorkScheduleId == workScheduleId) .FirstOrDefault(); if (workSchedule != null) { // if (workSchedule.WorkDueDate.Date == DateTime.Now.Date.Date || // workSchedule.WorkDueDate.Date == DateTime.Now.AddDays(1).Date) // 무조건 동작하기로 수정 2016 04 04 hcLee { // 작업계획이 오늘이나 내일이면 실행계획으로 들어가야 함. // 관련 스케줄러를 강제로 실행 WorkExecutionPlanJob tempJob = new WorkExecutionPlanJob(); tempJob.Execute(null); } } } catch (DbUpdateException e) { throw e; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } public class WorkScheduleToFacility { public int SiteId { get; set; } public int WorkScheduleId { get; set; } public int FacilityCode { get; set; } }; }