34817d7fc0da09b66588b669660e9e1f83e33ed7.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  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.Diagnostics;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Net.Http;
  11. using System.Web;
  12. using System.Web.Http;
  13. using System.Web.Http.Description;
  14. using System.Web.Http.OData;
  15. using iBemsDataService;
  16. using iBemsDataService.Model;
  17. namespace iBemsDataService.Controllers
  18. {
  19. public class FacilityController : ODataController
  20. {
  21. private iBemsEntities db = new iBemsEntities();
  22. // GET: odata/Facility
  23. [Queryable]
  24. public IQueryable<Facility> GetFacility()
  25. {
  26. // 2019.07.12
  27. Uri uri = Request.RequestUri;
  28. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  29. int siteId;
  30. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false)
  31. {
  32. throw new Exception("Not Found Parameters.");
  33. }
  34. var query = 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 f.SiteId == siteId &&
  49. f.MainContactorUserId == mu.UserId &&
  50. f.SubContactorUserId == su.UserId &&
  51. f.FirstClassId == fc.FacilityClassId &&
  52. f.SecondClassId == sc.FacilityClassId &&
  53. f.ThirdClassId == tc.FacilityClassId
  54. select new Facility
  55. {
  56. SiteId = f.SiteId ,
  57. FacilityCode = f.FacilityCode ,
  58. FirstClassId = f.FirstClassId ,
  59. SecondClassId = f.SecondClassId ,
  60. ThirdClassId = f.ThirdClassId ,
  61. FirstClassName = fc.Name ,
  62. SecondClassName = sc.Name ,
  63. ThirdClassName = tc.Name ,
  64. Name = f.Name ,
  65. Nickname = f.Nickname ,
  66. ParentFacilityName = subParentFacility.Name,
  67. ManufactureModel = f.ManufactureModel ,
  68. MainContactorUserName = mu.Name ,
  69. SubContactorUserName = su.Name ,
  70. BuildingId = f.BuildingId,
  71. FloorId = f.FloorId,
  72. ZoneId = f.ZoneId,
  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. Trace.WriteLine( "test" );
  78. return query;
  79. }
  80. [Queryable]
  81. public IQueryable<TargetFacility> GetTargetFacility()
  82. {
  83. // 2019.07.12
  84. Uri uri = Request.RequestUri;
  85. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  86. int siteId;
  87. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false)
  88. {
  89. throw new Exception("Not Found Parameters.");
  90. }
  91. var query = from t in db.FmsWorkScheduleToFacility
  92. from f in db.CmFacility
  93. from mu in db.CmUser
  94. from su in db.CmUser
  95. from fc in db.FmsFacilityCodeClass
  96. from sc in db.FmsFacilityCodeClass
  97. from tc in db.FmsFacilityCodeClass
  98. join b in db.CmBuilding on f.BuildingId equals b.BuildingId into gb
  99. from subBuilding in gb.DefaultIfEmpty()
  100. join l in db.CmZone on f.ZoneId equals l.ZoneId into gl
  101. from subZone in gl.DefaultIfEmpty()
  102. join fl in db.CmFloor on f.FloorId equals fl.FloorId into gf
  103. from subFloor in gf.DefaultIfEmpty()
  104. join pf in db.CmFacility on f.ParentFacilityCode equals pf.FacilityCode into gpf
  105. from subParentFacility in gpf.DefaultIfEmpty()
  106. where t.SiteId == siteId &&
  107. t.SiteId == f.SiteId &&
  108. t.FacilityCode == f.FacilityCode &&
  109. f.MainContactorUserId == mu.UserId &&
  110. f.SubContactorUserId == su.UserId &&
  111. f.FirstClassId == fc.FacilityClassId &&
  112. f.SecondClassId == sc.FacilityClassId &&
  113. f.ThirdClassId == tc.FacilityClassId
  114. select new TargetFacility
  115. {
  116. SiteId = f.SiteId ,
  117. WorkScheduleId = t.WorkScheduleId ,
  118. FacilityCode = f.FacilityCode ,
  119. FirstClassId = f.FirstClassId ,
  120. SecondClassId = f.SecondClassId ,
  121. ThirdClassId = f.ThirdClassId ,
  122. FirstClassName = fc.Name ,
  123. SecondClassName = sc.Name ,
  124. ThirdClassName = tc.Name ,
  125. Name = f.Name ,
  126. Nickname = f.Nickname ,
  127. ParentFacilityName = subParentFacility.Name ,
  128. ManufactureModel = f.ManufactureModel ,
  129. MainContactorUserName = mu.Name ,
  130. SubContactorUserName = su.Name ,
  131. BuildingName = (subBuilding.Name == null) ? string.Empty : subBuilding.Name ,
  132. ZoneName = (subZone.Name == null) ? string.Empty : subZone.Name ,
  133. FloorName = (subFloor.Name == null) ? string.Empty : subFloor.Name
  134. };
  135. return query;
  136. }
  137. /*
  138. // GET: api/Facilitiy/5
  139. [ResponseType(typeof(CmFacility))]
  140. public IHttpActionResult GetCmFacility(int id)
  141. {
  142. CmFacility cmFacility = db.CmFacility.Find(id);
  143. if (cmFacility == null)
  144. {
  145. return NotFound();
  146. }
  147. return Ok(cmFacility);
  148. }
  149. // PUT: api/Facilitiy/5
  150. [ResponseType(typeof(void))]
  151. public IHttpActionResult PutCmFacility(int id, CmFacility cmFacility)
  152. {
  153. if (!ModelState.IsValid)
  154. {
  155. return BadRequest(ModelState);
  156. }
  157. if (id != cmFacility.SiteId)
  158. {
  159. return BadRequest();
  160. }
  161. db.Entry(cmFacility).State = EntityState.Modified;
  162. try
  163. {
  164. db.SaveChanges();
  165. }
  166. catch (DbUpdateConcurrencyException)
  167. {
  168. if (!CmFacilityExists(id))
  169. {
  170. return NotFound();
  171. }
  172. else
  173. {
  174. throw;
  175. }
  176. }
  177. return StatusCode(HttpStatusCode.NoContent);
  178. }
  179. // POST: api/Facilitiy
  180. [ResponseType(typeof(CmFacility))]
  181. public IHttpActionResult PostCmFacility(CmFacility cmFacility)
  182. {
  183. if (!ModelState.IsValid)
  184. {
  185. return BadRequest(ModelState);
  186. }
  187. db.CmFacility.Add(cmFacility);
  188. try
  189. {
  190. db.SaveChanges();
  191. }
  192. catch (DbUpdateException)
  193. {
  194. if (CmFacilityExists(cmFacility.SiteId))
  195. {
  196. return Conflict();
  197. }
  198. else
  199. {
  200. throw;
  201. }
  202. }
  203. return CreatedAtRoute("DefaultApi", new { id = cmFacility.SiteId }, cmFacility);
  204. }
  205. // DELETE: api/Facilitiy/5
  206. [ResponseType(typeof(CmFacility))]
  207. public IHttpActionResult DeleteCmFacility(int id)
  208. {
  209. CmFacility cmFacility = db.CmFacility.Find(id);
  210. if (cmFacility == null)
  211. {
  212. return NotFound();
  213. }
  214. db.CmFacility.Remove(cmFacility);
  215. db.SaveChanges();
  216. return Ok(cmFacility);
  217. }
  218. */
  219. protected override void Dispose(bool disposing)
  220. {
  221. if (disposing)
  222. {
  223. db.Dispose();
  224. }
  225. base.Dispose(disposing);
  226. }
  227. private bool FacilityExists(int id , int facilityCode)
  228. {
  229. return db.CmFacility.Count( e => e.SiteId == id && e.FacilityCode == facilityCode ) > 0;
  230. }
  231. }
  232. public class Facility
  233. {
  234. public Facility()
  235. {
  236. }
  237. [Key]
  238. public int SiteId { get; set; }
  239. public int FacilityType { get; set; }
  240. [Key]
  241. public int FacilityCode { get; set; }
  242. public Nullable<int> FirstClassId { get; set; }
  243. public Nullable<int> SecondClassId { get; set; }
  244. public Nullable<int> ThirdClassId { get; set; }
  245. public string FirstClassName { get; set; }
  246. public string SecondClassName { get; set; }
  247. public string ThirdClassName { get; set; }
  248. public string DeviceType { get; set; }
  249. public string ParentFacilityCode { get; set; }
  250. public string ParentFacilityName { get; set; }
  251. public string Name { get; set; }
  252. public string Nickname { get; set; }
  253. public string Manufacturer { get; set; }
  254. public string ManufactureModel { get; set; }
  255. public Nullable<int> BuildingId { get; set; }
  256. public Nullable<int> FloorId { get; set; }
  257. public Nullable<int> ZoneId { get; set; }
  258. public string BuildingName { get; set; }
  259. public string FloorName { get; set; }
  260. public string ZoneName { get; set; }
  261. public string MainContactorUserId { get; set; }
  262. public string SubContactorUserId { get; set; }
  263. public string MainContactorUserName { get; set; }
  264. public string SubContactorUserName { get; set; }
  265. public Nullable<bool> IsUse { get; set; }
  266. public Nullable<int> SortOrderNo { get; set; }
  267. }
  268. }