using System; using System.Collections; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Linq; using System.Net; using System.Web; using System.Web.Http; using System.Web.Http.Description; using DevExpress.Office.Utils; using iBemsDataService.Model; using iBemsDataService.Util; using System.Transactions; using System.Diagnostics; namespace iBemsDataService.Controllers { public class CmPatrolGroupController : ApiController { private iBemsEntities db = new iBemsEntities(); [ResponseType( typeof ( void ) )] [ActionName( "Insert" )] public IHttpActionResult PostCmPatrolGroupInsert(PatrolGroup patrolGroup) { if ( !ModelState.IsValid ) { return BadRequest( ModelState ); } try { // 그룹을 추가하면서 메뉴들을 그룹에 맞는 권한 테이블로 모두 옮겨 놓는다. using( var transaction = new TransactionScope() ) { var newpatrolGroup = db.CmPatrolGroup.Add(new CmPatrolGroup { SiteId = patrolGroup.SiteId, Name = patrolGroup.Name }); db.SaveChanges(); /* foreach (var user in patrolGroup.PatrolGroupUsers) { //menu.SiteId = newUserGroup.SiteId; //menu.UserGroupId = newUserGroup.UserGroupId; //db.CmUserGroupPermission.Add( menu ); //Trace.WriteLine( string.Format( "{0}-{1}" , newUserGroup.UserGroupId , menu.MenuId ) ); db.CmPatrolGroupUser.Add( new CmPatrolGroupUser { SiteId = newpatrolGroup.SiteId, PatrolGroupId = newpatrolGroup.PatrolGroupId, UserId = user.UserId, } ); db.SaveChanges(); }*/ transaction.Complete(); } } catch( Exception ) { throw; } return StatusCode( HttpStatusCode.NoContent ); } [ResponseType( typeof( void ) )] [ActionName( "UpdateGroupUser" )] public IHttpActionResult PostCmPatrolGroupUpdateGroupUser(List patrolGroupUsers) { if( !ModelState.IsValid ) { return BadRequest( ModelState ); } try { using( var transaction = new TransactionScope() ) { foreach (var user in patrolGroupUsers) { var foundQuery = db.CmPatrolGroupUser.Where( x => x.SiteId == user.SiteId && x.PatrolGroupId == user.PatrolGroupId && x.UserId == user.UserId); if (foundQuery.Any() == false) { var newUser = db.CmPatrolGroupUser.Add(new CmPatrolGroupUser { SiteId = user.SiteId, PatrolGroupId = user.PatrolGroupId, UserId = user.UserId, }); } } db.SaveChanges(); transaction.Complete(); } } catch( Exception ) { throw; } return StatusCode( HttpStatusCode.NoContent ); } [ResponseType(typeof(void))] [ActionName("DeleteGroupUser")] public IHttpActionResult PostCmPatrolGroupDeleteGroupUser(List patrolGroupUsers) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { //개념이 다른듯 2016 02 14 foreach (var user in patrolGroupUsers) { var foundQuery = db.CmPatrolGroupUser.Where(x => x.SiteId == user.SiteId && x.PatrolGroupId == user.PatrolGroupId && x.UserId == user.UserId); db.CmPatrolGroupUser.Remove(foundQuery.FirstOrDefault()); } db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } private bool CmPatrolGroupExists( int id ) { return db.CmPatrolGroup.Count( e => e.SiteId == id ) > 0; } public class PatrolGroup { public int SiteId { get; set; } public int PatrolGroupId { get; set; } public string Name { get; set; } public List PatrolGroupUsers { get; set; } }; public class PatrolGroupUser { public int SiteId { get; set; } public int PatrolGroupId { get; set; } public string UserId { get; set; } }; } }