8368c55c14ca9dbc7776b5fd6e335ea9d858bb76.svn-base 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data.Entity;
  5. using System.Data.Entity.Infrastructure;
  6. using System.Linq;
  7. using System.Net;
  8. using System.Web;
  9. using System.Web.Http;
  10. using System.Web.Http.Description;
  11. using DevExpress.Office.Utils;
  12. using iBemsDataService.Model;
  13. using iBemsDataService.Util;
  14. using System.Transactions;
  15. namespace iBemsDataService.Controllers
  16. {
  17. public class FmsFacilityCodeClassController : ApiController
  18. {
  19. private iBemsEntities db = new iBemsEntities();
  20. // cyim 2015.12.30 : 설정-시설관리-시설등록-시설분류목록에 중복 입력 체크 (1개라도 있다면 false)
  21. [ResponseType(typeof(void))]
  22. [ActionName("Check")]
  23. public bool PostFmsFacilityCodeClassCheck(FmsFacilityCodeClass param)
  24. {
  25. try
  26. {
  27. IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
  28. where data.SiteId == param.SiteId && (data.Name == param.Name || data.Abbreviation == param.Abbreviation)
  29. select data).Take(1);
  30. if (newKeyData.Count() > 0)
  31. return false;
  32. }
  33. catch (Exception) { throw; }
  34. return true;
  35. }
  36. [ResponseType(typeof(void))]
  37. [ActionName("Insert")]
  38. public IHttpActionResult PostFmsFacilityCodeClassInsert(FmsFacilityCodeClass param)
  39. {
  40. try
  41. {
  42. IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
  43. where data.SiteId == param.SiteId && (data.ParentFacilityClassId == null || (data.ParentFacilityClassId == param.ParentFacilityClassId)) &&
  44. data.Depth == param.Depth && data.Name == param.Name
  45. select data).Take(1);
  46. if (newKeyData.Count() > 0)
  47. {
  48. return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
  49. }
  50. db.FmsFacilityCodeClass.Add(param);
  51. db.SaveChanges();
  52. }
  53. catch (Exception) { throw; }
  54. return StatusCode(HttpStatusCode.NoContent);
  55. }
  56. [ResponseType(typeof(void))]
  57. [ActionName("Update")]
  58. public IHttpActionResult PostFmsFacilityCodeClassUpdate(FmsFacilityCodeClass param)
  59. {
  60. try
  61. {
  62. IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
  63. where data.FacilityClassId != param.FacilityClassId &&
  64. data.SiteId == param.SiteId && (data.ParentFacilityClassId == null || (data.ParentFacilityClassId == param.ParentFacilityClassId)) &&
  65. data.Depth == param.Depth && (data.Name == param.Name || data.Abbreviation == param.Abbreviation)
  66. select data).Take(1);
  67. if (newKeyData.Count() > 1)
  68. {
  69. return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
  70. }
  71. var codeClass = db.FmsFacilityCodeClass
  72. .Where(a => a.FacilityClassId == param.FacilityClassId)
  73. .FirstOrDefault();
  74. if (codeClass == null) return BadRequest("Not Found Parameters.");
  75. codeClass.Name = param.Name;
  76. codeClass.Abbreviation = param.Abbreviation;
  77. codeClass.IsUse = param.IsUse;
  78. db.SaveChanges();
  79. }
  80. catch (Exception) { throw; }
  81. return StatusCode(HttpStatusCode.NoContent);
  82. }
  83. [ResponseType( typeof( void ) )]
  84. public IHttpActionResult DeleteFmsFacilityCodeClass()
  85. {
  86. if ( !ModelState.IsValid )
  87. {
  88. return BadRequest( ModelState );
  89. }
  90. Uri uri = Request.RequestUri;
  91. var uriQuery = HttpUtility.ParseQueryString( uri.Query );
  92. int siteId, facilityClassId, depth;
  93. if( int.TryParse( uriQuery.Get( "SiteId" ) , out siteId ) == false ||
  94. int.TryParse( uriQuery.Get( "FacilityClassId" ) , out facilityClassId ) == false ||
  95. int.TryParse( uriQuery.Get( "Depth" ) , out depth ) == false )
  96. {
  97. return BadRequest("Not Found Parameters.");
  98. }
  99. using( var transaction = new TransactionScope() )
  100. {
  101. var qm = new QueryManager<FmsFacilityCodeClass>( db );
  102. var dbSet = db.FmsFacilityCodeClass;
  103. if( depth == 0 )
  104. {
  105. var query = from d in dbSet
  106. where d.SiteId == siteId &&
  107. d.ParentFacilityClassId == facilityClassId
  108. select d;
  109. var list = query.ToList();
  110. foreach( var item in list )
  111. {
  112. var queryToDelete = from d in dbSet
  113. where d.SiteId == siteId &&
  114. d.ParentFacilityClassId == item.FacilityClassId
  115. select d;
  116. qm.Delete( dbSet , queryToDelete );
  117. qm.Delete( dbSet , item , true );
  118. }
  119. }
  120. else if( depth == 1 )
  121. {
  122. var query = from d in dbSet
  123. where d.SiteId == siteId &&
  124. d.ParentFacilityClassId == facilityClassId
  125. select d;
  126. qm.Delete( dbSet, query );
  127. }
  128. qm.Delete( dbSet , new FmsFacilityCodeClass {
  129. SiteId = siteId ,
  130. FacilityClassId = facilityClassId
  131. } , true );
  132. db.SaveChanges();
  133. transaction.Complete();
  134. }
  135. return StatusCode( HttpStatusCode.NoContent );
  136. }
  137. protected override void Dispose(bool disposing)
  138. {
  139. if (disposing)
  140. {
  141. db.Dispose();
  142. }
  143. base.Dispose(disposing);
  144. }
  145. }
  146. }