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 BemsPriceFormulaController : ApiController { private iBemsEntities db = new iBemsEntities(); [ResponseType(typeof(void))] [ActionName("Insert")] public IHttpActionResult PostBemsPriceFormulaInsert(PriceFormula PriceFormula) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { // 그룹을 추가하면서 메뉴들을 그룹에 맞는 권한 테이블로 모두 옮겨 놓는다. using (var transaction = new TransactionScope()) { var newPriceFormula = db.BemsPriceFormula.Add(new BemsPriceFormula { SiteId = PriceFormula.SiteId, PriceTypeId = PriceFormula.PriceTypeId, FacilityTypeId = PriceFormula.FacilityTypeId, FormulaId = PriceFormula.FormulaId, FacilityCode = PriceFormula.FacilityCode }); db.SaveChanges(); //foreach (var user in Menu.MenuUsers) //{ // //menu.SiteId = newUserGroup.SiteId; // //menu.UserGroupId = newUserGroup.UserGroupId; // //db.CmUserGroupPermission.Add( menu ); // //Trace.WriteLine( string.Format( "{0}-{1}" , newUserGroup.UserGroupId , menu.MenuId ) ); // db.CmMenuUser.Add( new CmMenuUser // { // SiteId = newPriceFormula.SiteId, // MenuId = newPriceFormula.MenuId, // UserId = user.UserId, // } ); // db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("InsertAll")] public IHttpActionResult PostBemsPriceFormulaInsertAll(List PriceFormula) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { foreach (var m in PriceFormula) { var foundQuery = db.BemsPriceFormula.Where( x => x.SiteId == m.SiteId && x.PriceTypeId == m.PriceTypeId); if (foundQuery.Any() == false) { var newM = db.BemsPriceFormula.Add(new BemsPriceFormula { SiteId = m.SiteId, PriceTypeId = m.PriceTypeId, FacilityTypeId = m.FacilityTypeId, FormulaId = m.FormulaId, FacilityCode = m.FacilityCode, }); } } db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("DeleteAll")] public IHttpActionResult PostBemsPriceFormulaDeleteAll(PriceFormula PriceFormula) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { var foundQuery = db.BemsPriceFormula.Where(x => x.SiteId == PriceFormula.SiteId); //db.BemsPriceFormula.Remove(foundQuery.FirstOrDefault()); 한개만 지운다 new QueryManager(db).Delete(db.BemsPriceFormula, foundQuery); db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("Update")] public IHttpActionResult PostBemsPriceFormulaUpdate(PriceFormula PriceFormula) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { var foundQuery = db.BemsPriceFormula.Where(x => x.SiteId == PriceFormula.SiteId && x.PriceTypeId == PriceFormula.PriceTypeId); new QueryManager(db).Delete(db.BemsPriceFormula, foundQuery); var newPriceFormula = db.BemsPriceFormula.Add(new BemsPriceFormula { SiteId = PriceFormula.SiteId, PriceTypeId = PriceFormula.PriceTypeId, FacilityTypeId = PriceFormula.FacilityTypeId, FormulaId = PriceFormula.FormulaId, FacilityCode = PriceFormula.FacilityCode, UseYN = PriceFormula.UseYN }); 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 CmMenuExists(int id) //{ // return db.BemsPriceFormula.Count(e => e.SiteId == id) > 0; //} public class PriceFormula { public int SiteId { get; set; } public int PriceTypeId { get; set; } public int FacilityTypeId { get; set; } public int FormulaId { get; set; } public int FacilityCode { get; set; } public string UseYN { get; set; } }; } }