8c5266f4b164a1e2ccd49c25a3bed62d355cef43.svn-base 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Data;
  5. using System.Data.Entity;
  6. using System.Data.Entity.Infrastructure;
  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 System.Web.Http.OData;
  14. using iBemsDataService;
  15. using iBemsDataService.Model;
  16. namespace iBemsDataService.Controllers
  17. {
  18. public class CheckGroupTargetFacilityController : ODataController
  19. {
  20. private iBemsEntities db = new iBemsEntities();
  21. // GET: odata/Facility
  22. [Queryable]
  23. public IQueryable<TargetFacility> GetCheckGroupTargetFacility()
  24. {
  25. // 2019.07.12
  26. Uri uri = Request.RequestUri;
  27. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  28. int siteId;
  29. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false)
  30. {
  31. throw new Exception("Not Found Parameters.");
  32. }
  33. var query = from t in db.FmsWorkScheduleToFacility
  34. from f in db.CmFacility
  35. from mu in db.CmUser
  36. from su in db.CmUser
  37. from fc in db.FmsFacilityCodeClass
  38. from sc in db.FmsFacilityCodeClass
  39. from tc in db.FmsFacilityCodeClass
  40. join b in db.CmBuilding on f.BuildingId equals b.BuildingId into gb
  41. from subBuilding in gb.DefaultIfEmpty()
  42. join l in db.CmZone on f.ZoneId equals l.ZoneId into gl
  43. from subZone in gl.DefaultIfEmpty()
  44. join fl in db.CmFloor on f.FloorId equals fl.FloorId into gf
  45. from subFloor in gf.DefaultIfEmpty()
  46. join pf in db.CmFacility on f.ParentFacilityCode equals pf.FacilityCode into gpf
  47. from subParentFacility in gpf.DefaultIfEmpty()
  48. where t.SiteId == siteId && // 2019.07.12
  49. t.SiteId == f.SiteId &&
  50. t.FacilityCode == f.FacilityCode &&
  51. f.MainContactorUserId == mu.UserId &&
  52. f.SubContactorUserId == su.UserId &&
  53. f.FirstClassId == fc.FacilityClassId &&
  54. f.SecondClassId == sc.FacilityClassId &&
  55. f.ThirdClassId == tc.FacilityClassId
  56. select new TargetFacility
  57. {
  58. SiteId = f.SiteId ,
  59. WorkScheduleId = t.WorkScheduleId ,
  60. FacilityCode = f.FacilityCode ,
  61. FirstClassId = f.FirstClassId ,
  62. SecondClassId = f.SecondClassId ,
  63. ThirdClassId = f.ThirdClassId ,
  64. FirstClassName = fc.Name ,
  65. SecondClassName = sc.Name ,
  66. ThirdClassName = tc.Name ,
  67. Name = f.Name ,
  68. Nickname = f.Nickname ,
  69. ParentFacilityName = subParentFacility.Name ,
  70. ManufactureModel = f.ManufactureModel ,
  71. MainContactorUserName = mu.Name ,
  72. SubContactorUserName = su.Name ,
  73. BuildingName = (subBuilding.Name == null) ? string.Empty : subBuilding.Name ,
  74. ZoneName = (subZone.Name == null) ? string.Empty : subZone.Name ,
  75. FloorName = (subFloor.Name == null) ? string.Empty : subFloor.Name
  76. };
  77. return query;
  78. }
  79. protected override void Dispose(bool disposing)
  80. {
  81. if (disposing)
  82. {
  83. db.Dispose();
  84. }
  85. base.Dispose(disposing);
  86. }
  87. //private bool CheckGroupTargetFacilityExists( int id , string facilityCode )
  88. //{
  89. // return db.CmFacility.Count( e => e.SiteId == id && e.FacilityCode == facilityCode ) > 0;
  90. //}
  91. }
  92. public class TargetFacility
  93. {
  94. public TargetFacility()
  95. {
  96. }
  97. [Key]
  98. public int SiteId { get; set; }
  99. [Key]
  100. public int WorkScheduleId { get; set; }
  101. public int FacilityType { get; set; }
  102. [Key]
  103. public int FacilityCode { get; set; }
  104. public Nullable<int> FirstClassId { get; set; }
  105. public Nullable<int> SecondClassId { get; set; }
  106. public Nullable<int> ThirdClassId { get; set; }
  107. public string FirstClassName { get; set; }
  108. public string SecondClassName { get; set; }
  109. public string ThirdClassName { get; set; }
  110. public string DeviceType { get; set; }
  111. public string ParentFacilityCode { get; set; }
  112. public string ParentFacilityName { get; set; }
  113. public string Name { get; set; }
  114. public string Nickname { get; set; }
  115. public string Manufacturer { get; set; }
  116. public string ManufactureModel { get; set; }
  117. public Nullable<int> BuildingId { get; set; }
  118. public Nullable<int> FloorId { get; set; }
  119. public Nullable<int> ZoneId { get; set; }
  120. public string BuildingName { get; set; }
  121. public string FloorName { get; set; }
  122. public string ZoneName { get; set; }
  123. public string MainContactorUserId { get; set; }
  124. public string SubContactorUserId { get; set; }
  125. public string MainContactorUserName { get; set; }
  126. public string SubContactorUserName { get; set; }
  127. public Nullable<bool> IsUse { get; set; }
  128. public Nullable<int> SortOrderNo { get; set; }
  129. }
  130. }