f738ffe6692544cb4b6ca207b446902d660fbf6e.svn-base 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. // hcLee 2015 03 06 작성
  16. namespace iBemsDataService.Controllers
  17. {
  18. public class FmsWorkCodeCauseClassController : ApiController
  19. {
  20. private iBemsEntities db = new iBemsEntities();
  21. [ResponseType( typeof( void ) )]
  22. public IHttpActionResult DeleteFmsWorkCodeCauseClass()
  23. {
  24. if ( !ModelState.IsValid )
  25. {
  26. return BadRequest( ModelState );
  27. }
  28. Uri uri = Request.RequestUri;
  29. var uriQuery = HttpUtility.ParseQueryString( uri.Query );
  30. int siteId, causeClassId;
  31. if( int.TryParse( uriQuery.Get( "SiteId" ) , out siteId ) == false ||
  32. int.TryParse(uriQuery.Get("CauseClassId"), out causeClassId) == false) //||
  33. //int.TryParse( uriQuery.Get( "Depth" ) , out depth ) == false )
  34. {
  35. return BadRequest("Not Found Parameters.");
  36. }
  37. using( var transaction = new TransactionScope() )
  38. {
  39. var qm = new QueryManager<FmsWorkCodeCauseClass>( db );
  40. var dbSet = db.FmsWorkCodeCauseClass;
  41. // 자식이 있으면 먼저 지운다 hcLee 2015 03 06
  42. var query = from d in dbSet where d.SiteId == siteId && d.ParentId == causeClassId
  43. select d;
  44. var list = query.ToList();
  45. foreach( var item in list )
  46. {
  47. qm.Delete( dbSet , item , true );
  48. }
  49. //그다음 자신을 지운다
  50. qm.Delete(dbSet, new FmsWorkCodeCauseClass
  51. {
  52. SiteId = siteId ,
  53. CauseClassId = causeClassId
  54. } , true );
  55. db.SaveChanges();
  56. transaction.Complete();
  57. }
  58. return StatusCode( HttpStatusCode.NoContent );
  59. }
  60. protected override void Dispose(bool disposing)
  61. {
  62. if (disposing)
  63. {
  64. db.Dispose();
  65. }
  66. base.Dispose(disposing);
  67. }
  68. }
  69. }