3fc8d2368f984fa6e69333ee4c8f0be799cdd179.svn-base 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. using System.Diagnostics;
  16. namespace iBemsDataService.Controllers
  17. {
  18. public class CmUserGroupController : ApiController
  19. {
  20. private iBemsEntities db = new iBemsEntities();
  21. const int PERMISSION_SEARCH = 1;
  22. const int PERMISSION_MODIFICATION = 2;
  23. const int PERMISSION_DEPEND_BUSINESS_FIELD = 4;
  24. const int PERMISSION_ALL = 7; // 1: 조회, 2(10): 수정 , 4: 업무분야
  25. [ResponseType( typeof ( void ) )]
  26. [ActionName( "Insert" )]
  27. public IHttpActionResult PostCmUserGroup( UserGroup userGroup )
  28. {
  29. if ( !ModelState.IsValid )
  30. {
  31. return BadRequest( ModelState );
  32. }
  33. try
  34. {
  35. // 그룹을 추가하면서 메뉴들을 그룹에 맞는 권한 테이블로 모두 옮겨 놓는다.
  36. using( var transaction = new TransactionScope() )
  37. {
  38. var newUserGroup = db.CmUserGroup.Add( new CmUserGroup
  39. {
  40. SiteId = userGroup.SiteId,
  41. Name = userGroup.Name
  42. });
  43. db.SaveChanges();
  44. foreach( var menu in userGroup.UserGroupPermissions )
  45. {
  46. //menu.SiteId = newUserGroup.SiteId;
  47. //menu.UserGroupId = newUserGroup.UserGroupId;
  48. //db.CmUserGroupPermission.Add( menu );
  49. Trace.WriteLine( string.Format( "{0}-{1}" , newUserGroup.UserGroupId , menu.MenuId ) );
  50. db.CmUserGroupPermission.Add( new CmUserGroupPermission
  51. {
  52. SiteId = newUserGroup.SiteId ,
  53. UserGroupId = newUserGroup.UserGroupId ,
  54. MenuId = menu.MenuId ,
  55. MenuPermission = PERMISSION_ALL
  56. } );
  57. db.SaveChanges();
  58. }
  59. transaction.Complete();
  60. }
  61. }
  62. catch( Exception )
  63. {
  64. throw;
  65. }
  66. return StatusCode( HttpStatusCode.NoContent );
  67. }
  68. [ResponseType( typeof( void ) )]
  69. [ActionName( "UpdatePermission" )]
  70. public IHttpActionResult PostCmUserGroup( List<CmUserGroupPermission> userGroupPermissions )
  71. {
  72. if( !ModelState.IsValid )
  73. {
  74. return BadRequest( ModelState );
  75. }
  76. try
  77. {
  78. using( var transaction = new TransactionScope() )
  79. {
  80. foreach( var permission in userGroupPermissions )
  81. {
  82. var foundQuery = db.CmUserGroupPermission.Where(
  83. x =>
  84. x.SiteId == permission.SiteId &&
  85. x.UserGroupId == permission.UserGroupId &&
  86. x.MenuId == permission.MenuId );
  87. if( foundQuery.Any() == false )
  88. continue;
  89. var found = foundQuery.First();
  90. found.MenuPermission = permission.MenuPermission;
  91. }
  92. db.SaveChanges();
  93. transaction.Complete();
  94. }
  95. }
  96. catch( Exception )
  97. {
  98. throw;
  99. }
  100. return StatusCode( HttpStatusCode.NoContent );
  101. }
  102. protected override void Dispose(bool disposing)
  103. {
  104. if (disposing)
  105. {
  106. db.Dispose();
  107. }
  108. base.Dispose(disposing);
  109. }
  110. private bool CmUserGroupExists( int id )
  111. {
  112. return db.CmUserGroup.Count( e => e.SiteId == id ) > 0;
  113. }
  114. public class UserGroup
  115. {
  116. public int SiteId { get; set; }
  117. public int UserGroupId { get; set; }
  118. public string Name { get; set; }
  119. public List<CmUserGroupPermission> UserGroupPermissions { get; set; }
  120. };
  121. }
  122. }