5caa0ef77bc3e325c7f55bdc577c7c88617c35dd.svn-base 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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. namespace iBemsDataService.Controllers
  15. {
  16. public class FmsBudgetDetailController : ApiController
  17. {
  18. private iBemsEntities db = new iBemsEntities();
  19. // GET: odata/FmsBudgetCodeClassEx
  20. [Queryable]
  21. public List<FmsBudgetDetail> GetFmsBudgetDetail()
  22. {
  23. var list = db.FmsBudgetDetail.Where(a => a.Depth == 2).ToList();
  24. var codeList = db.FmsBudgetCodeClass.ToList();
  25. foreach (var item in list)
  26. {
  27. item.RootBudgetName = codeList.Where(a => a.BudgetClassId == item.RootBudgetClassId).FirstOrDefault().Name;
  28. item.ParentBudgetName = codeList.Where(a => a.BudgetClassId == item.ParentBudgetClassId).FirstOrDefault().Name;
  29. }
  30. return list;
  31. }
  32. // POST: api/FmsBudgetDetail
  33. [ResponseType(typeof(void))]
  34. [ActionName("Save")]
  35. public IHttpActionResult PostFmsBudgetDetail(List<FmsBudgetDetail> budgetList)
  36. {
  37. Uri uri = Request.RequestUri;
  38. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  39. int siteId, year;
  40. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false ||
  41. int.TryParse(uriQuery.Get("Year"), out year) == false)
  42. {
  43. return BadRequest("Not Found Parameters.");
  44. }
  45. try
  46. {
  47. // 예산편성 등록시 실적 코드도 미리 생성
  48. foreach (var detailItem in budgetList)
  49. {
  50. for (int i = 1; i <= 12; i++)
  51. {
  52. FmsBudgetDetailExecution execution = new FmsBudgetDetailExecution()
  53. {
  54. BudgetClassId = detailItem.BudgetClassId,
  55. Month = i,
  56. Year = detailItem.Year,
  57. MonthlyExecution = 0,
  58. YearlyExecution = 0,
  59. MonthlyBudget = detailItem.MonthlyBudget,
  60. YearlyBudget = detailItem.YearlyBudget,
  61. RootBudgetClassId = detailItem.RootBudgetClassId,
  62. ParentBudgetClassId = detailItem.ParentBudgetClassId,
  63. SiteId = detailItem.SiteId,
  64. };
  65. detailItem.FmsBudgetDetailExecution.Add(execution);
  66. }
  67. }
  68. FmsBudget budget = new FmsBudget()
  69. {
  70. SiteId = siteId,
  71. Year = year,
  72. FmsBudgetDetail = budgetList
  73. };
  74. db.FmsBudget.Add(budget);
  75. db.SaveChanges();
  76. }
  77. catch (Exception) { throw; }
  78. return StatusCode(HttpStatusCode.NoContent);
  79. }
  80. // POST: api/FmsBudgetDetail
  81. [ResponseType(typeof(void))]
  82. [ActionName("Update")]
  83. public IHttpActionResult PostFmsBudgetDetailUpdate(List<FmsBudgetDetail> budgetList)
  84. {
  85. Uri uri = Request.RequestUri;
  86. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  87. int siteId, year;
  88. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false ||
  89. int.TryParse(uriQuery.Get("Year"), out year) == false)
  90. {
  91. return BadRequest("Not Found Parameters.");
  92. }
  93. try
  94. {
  95. //var query = from d in db.FmsBudgetDetail
  96. // where d.SiteId == siteId && d.Year == year
  97. // select d;
  98. //var qm = new QueryManager<FmsBudgetDetail>(db);
  99. //qm.DeleteAndInsert(db.FmsBudgetDetail, budgetList, query);
  100. foreach (var item in budgetList)
  101. {
  102. db.FmsBudgetDetail.Attach(item);
  103. DbEntityEntry<FmsBudgetDetail> entry = db.Entry(item);
  104. entry.State = System.Data.EntityState.Modified;
  105. var updateED = (from us in db.FmsBudgetDetailExecution
  106. where us.SiteId == siteId && us.Year == item.Year && us.BudgetClassId == item.BudgetClassId && us.ParentBudgetClassId == item.ParentBudgetClassId
  107. select us);
  108. foreach (var ED in updateED)
  109. ED.MonthlyBudget = item.MonthlyBudget;
  110. }
  111. db.SaveChanges();
  112. }
  113. catch (Exception) { throw; }
  114. return StatusCode(HttpStatusCode.NoContent);
  115. }
  116. [ResponseType(typeof(void))]
  117. [ActionName("Delete")]
  118. public IHttpActionResult PostFmsBudgetDetail()
  119. {
  120. Uri uri = Request.RequestUri;
  121. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  122. int siteId, year;
  123. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false ||
  124. int.TryParse(uriQuery.Get("Year"), out year) == false)
  125. {
  126. return BadRequest("Not Found Parameters.");
  127. }
  128. try
  129. {
  130. var budgetED = db.FmsBudgetDetailExecution
  131. .Where(b => b.SiteId == siteId && b.Year == year);
  132. foreach (var deleteItem in budgetED)
  133. {
  134. db.FmsBudgetDetailExecution.Remove(deleteItem);
  135. }
  136. var budgetE = db.FmsBudgetDetail
  137. .Where(b => b.SiteId == siteId && b.Year == year);
  138. foreach (var deleteItem in budgetE)
  139. {
  140. db.FmsBudgetDetail.Remove(deleteItem);
  141. }
  142. var budget = db.FmsBudget
  143. .Where(b => b.SiteId == siteId && b.Year == year)
  144. .FirstOrDefault();
  145. if (budget != null)
  146. {
  147. db.FmsBudget.Remove(budget);
  148. }
  149. db.SaveChanges();
  150. }
  151. catch (Exception) { throw; }
  152. return StatusCode(HttpStatusCode.NoContent);
  153. }
  154. protected override void Dispose(bool disposing)
  155. {
  156. if (disposing)
  157. {
  158. db.Dispose();
  159. }
  160. base.Dispose(disposing);
  161. }
  162. }
  163. }
  164. namespace iBemsDataService.Model
  165. {
  166. public partial class FmsBudgetDetail
  167. {
  168. public string RootBudgetName { get; set; }
  169. public string ParentBudgetName { get; set; }
  170. }
  171. }