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 BemsEnergyConfigPercentWeekController : ApiController { private iBemsEntities db = new iBemsEntities(); [ResponseType(typeof(void))] [ActionName("Insert")] public IHttpActionResult PostBemsEnergyConfigPercentWeekInsert(EnergyConfigPercentWeek EnergyConfigPercentWeek) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { // 그룹을 추가하면서 메뉴들을 그룹에 맞는 권한 테이블로 모두 옮겨 놓는다. using (var transaction = new TransactionScope()) { var newPriceFormula = db.BemsEnergyConfigPercentWeek.Add(new BemsEnergyConfigPercentWeek { SiteId = EnergyConfigPercentWeek.SiteId, Year = EnergyConfigPercentWeek.Year, Week = EnergyConfigPercentWeek.Week, Electricity = Math.Round(EnergyConfigPercentWeek.Electricity * 100) / 100.0, Gas = Math.Round(EnergyConfigPercentWeek.Gas * 100) / 100.0, Water = Math.Round(EnergyConfigPercentWeek.Water * 100) / 100.0 }); db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("InsertAll")] public IHttpActionResult PostBemsPriceFormulaInsertAll(List EnergyConfigPercentWeek) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { foreach (var m in EnergyConfigPercentWeek) { var foundQuery = db.BemsEnergyConfigPercentWeek.Where( x => x.SiteId == m.SiteId && x.Year == m.Year && x.Week == m.Week); if (foundQuery.Any() == false) { var newM = db.BemsEnergyConfigPercentWeek.Add(new BemsEnergyConfigPercentWeek { SiteId = m.SiteId, Year = m.Year, Week = m.Week, Electricity = m.Electricity, Gas = m.Gas, Water = m.Water }); } } db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("DeleteAll")] public IHttpActionResult PostBemsPriceFormulaDeleteAll(EnergyConfigPercentWeek EnergyConfigPercentWeek) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { var foundQuery = db.BemsEnergyConfigPercentWeek.Where( x => x.SiteId == EnergyConfigPercentWeek.SiteId && x.Year == EnergyConfigPercentWeek.Year && x.Week == EnergyConfigPercentWeek.Week); //db.BemsPriceFormula.Remove(foundQuery.FirstOrDefault()); 한개만 지운다 new QueryManager(db).Delete(db.BemsEnergyConfigPercentWeek, foundQuery); db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } [ResponseType(typeof(void))] [ActionName("Update")] public IHttpActionResult PostBemsPriceFormulaUpdate(EnergyConfigPercentWeek EnergyConfigPercentWeek) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { using (var transaction = new TransactionScope()) { var foundQuery = db.BemsEnergyConfigPercentWeek.Where( x => x.SiteId == EnergyConfigPercentWeek.SiteId && x.Year == EnergyConfigPercentWeek.Year && x.Week == EnergyConfigPercentWeek.Week ); new QueryManager(db).Delete(db.BemsEnergyConfigPercentWeek, foundQuery); var newPriceFormula = db.BemsEnergyConfigPercentWeek.Add(new BemsEnergyConfigPercentWeek { SiteId = EnergyConfigPercentWeek.SiteId, Year = EnergyConfigPercentWeek.Year, Week = EnergyConfigPercentWeek.Week, Electricity = Math.Round(EnergyConfigPercentWeek.Electricity * 100) / 100.0, Gas = Math.Round(EnergyConfigPercentWeek.Gas * 100) / 100.0, Water = Math.Round(EnergyConfigPercentWeek.Water * 100) / 100.0 }); db.SaveChanges(); transaction.Complete(); } } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } public class EnergyConfigPercentWeek { public int SiteId { get; set; } public int Year { get; set; } public int Week { get; set; } public float Electricity { get; set; } public float Gas { get; set; } public float Water { get; set; } }; } }