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 System.Web.Http.OData; using DevExpress.Office.Utils; using iBemsDataService.Model; using iBemsDataService.Util; namespace iBemsDataService.Controllers { public class FmsBudgetDetailExecution2Controller : ODataController { private iBemsEntities db2 = new iBemsEntities(); // GET: odata/FmsBudgetCodeClassEx [Queryable] public List GetFmsBudgetDetailExecution2() { var codeList = db2.FmsBudgetCodeClass.ToList(); // 2019.07.12 Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false) { throw new Exception("Not Found Parameters."); } var list = ( from e in db2.FmsBudgetDetailExecution.Where(x => x.SiteId == siteId) //join cc in db2.FmsBudgetCodeClass on e.BudgetClassId equals cc.BudgetClassId select new FmsBudgetDetailExecution2 { BudgetClassId = e.BudgetClassId, BudgetSeq =e.FmsBudgetDetail.FmsBudgetCodeClass.BudgetSeq, Depth = 2, Month = e.Month, Name = e.FmsBudgetDetail.FmsBudgetCodeClass.Name, ParentBudgetClassId = e.ParentBudgetClassId, //ParentBudgetName = e.FmsBudgetDetail.FmsBudgetCodeClass.Name //RootBudgetName = codeList.Where(a => a.BudgetClassId == e.RootBudgetClassId).FirstOrDefault().Name, RootBudgetClassId = e.RootBudgetClassId, SiteId = e.SiteId, Year = e.Year, YearlyBudget = e.YearlyBudget, YearlyExecution = e.YearlyExecution, MonthlyBudget = e.MonthlyBudget, MonthlyExecution = e.MonthlyExecution }).ToList(); foreach (var item in list) { if(item.RootBudgetClassId != null) { item.RootBudgetName = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.RootBudgetClassId).FirstOrDefault().Name; } if(item.ParentBudgetClassId > 0) { item.ParentBudgetName = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.ParentBudgetClassId).FirstOrDefault().Name; } } return list; } protected override void Dispose(bool disposing) { if (disposing) { db2.Dispose(); } base.Dispose(disposing); } } public class FmsBudgetDetailExecutionController : ApiController { private iBemsEntities db = new iBemsEntities(); // GET: odata/FmsBudgetCodeClassEx [Queryable] public List GetFmsBudgetDetailExecution() { var list = db.FmsBudgetDetailExecution.ToList() ; // 2019.07.12 Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false) { throw new Exception("Not Found Parameters."); } var codeList = db.FmsBudgetCodeClass.ToList(); foreach (var item in list) { item.RootBudgetName = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.RootBudgetClassId).FirstOrDefault().Name; item.ParentBudgetName = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.ParentBudgetClassId).FirstOrDefault().Name; item.Name = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.BudgetClassId).FirstOrDefault().Name; item.BudgetSeq = codeList.Where(a => a.SiteId == siteId && a.BudgetClassId == item.BudgetClassId).FirstOrDefault().BudgetSeq; item.Depth = 2; } return list; } // POST: api/FmsFmsBudgetDetail [ResponseType(typeof(void))] [ActionName("Save")] public IHttpActionResult PostFmsBudgetDetailExecution(List budgetList) { Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId, year, month; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false || int.TryParse(uriQuery.Get("Year"), out year) == false || int.TryParse(uriQuery.Get("Month"), out month) == false ) { return BadRequest("Not Found Parameters."); } try { foreach (var item in budgetList) { db.FmsBudgetDetailExecution.Attach(item); var entry = db.Entry(item); entry.State = System.Data.EntityState.Modified; } db.SaveChanges(); } catch (Exception) { throw; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } } namespace iBemsDataService.Model { public partial class FmsBudgetDetailExecution { public string RootBudgetName { get; set; } public string ParentBudgetName { get; set; } public string Name { get; set; } public string BudgetSeq { get; set; } public int Depth { get; set; } } public partial class FmsBudgetDetailExecution2 : FmsBudgetDetailExecution { } }