e33467f19081bf74a18adcf4664ad486d941bead.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.Data;
  6. using System.Data.Entity;
  7. using System.Data.Entity.Infrastructure;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Net.Http;
  11. using System.Web;
  12. using System.Web.Http;
  13. using System.Web.Http.Description;
  14. using System.Web.Http.OData;
  15. using iBemsDataService;
  16. using iBemsDataService.Model;
  17. namespace iBemsDataService.Controllers
  18. {
  19. public class FmsBudgetCodeClassController : ODataController
  20. {
  21. private iBemsEntities db = new iBemsEntities();
  22. // GET: odata/FmsBudgetCodeClassEx
  23. [Queryable]
  24. public List<FmsBudgetCodeClass> GetFmsBudgetCodeClass()
  25. {
  26. // 2019.07.12
  27. Uri uri = Request.RequestUri;
  28. var uriQuery = HttpUtility.ParseQueryString(uri.Query);
  29. int siteId;
  30. if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false)
  31. {
  32. throw new Exception("Not Found Parameters.");
  33. }
  34. var list = db.FmsBudgetCodeClass.Where(a =>
  35. a.SiteId == siteId &&
  36. a.Depth == 2)
  37. .ToList();
  38. var codeList = db.FmsBudgetCodeClass.ToList();
  39. foreach (var item in list)
  40. {
  41. item.RootBudgetName = codeList.Where(a => a.BudgetClassId == item.RootBudgetClassId).FirstOrDefault().Name;
  42. item.ParentBudgetName = codeList.Where(a => a.BudgetClassId == item.ParentBudgetClassId).FirstOrDefault().Name;
  43. }
  44. return list;
  45. }
  46. protected override void Dispose(bool disposing)
  47. {
  48. if (disposing)
  49. {
  50. db.Dispose();
  51. }
  52. base.Dispose(disposing);
  53. }
  54. }
  55. public class FmsBudgetCodeClass2Controller : ApiController
  56. {
  57. private iBemsEntities db2 = new iBemsEntities();
  58. [ResponseType(typeof(void))]
  59. [ActionName("Insert")]
  60. public IHttpActionResult PostFmsBudgetCodeClass2Insert(FmsBudgetCodeClass budgetCode)
  61. {
  62. if (budgetCode == null) return BadRequest("Not Found Parameters.");
  63. if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");
  64. List<FmsBudgetCodeClass> codeList = null;
  65. IEnumerable<FmsBudgetCodeClass> newKeyData = (from data in db2.FmsBudgetCodeClass
  66. where data.SiteId == budgetCode.SiteId && (data.ParentBudgetClassId == null || (data.ParentBudgetClassId == budgetCode.ParentBudgetClassId)) &&
  67. data.Depth == budgetCode.Depth && (data.Name == budgetCode.Name || data.Abbreviation == budgetCode.Abbreviation)
  68. select data).Take(1);
  69. if (newKeyData.Count() > 0)
  70. {
  71. return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
  72. }
  73. try
  74. {
  75. if (budgetCode.Depth == 0)
  76. {
  77. codeList = db2.FmsBudgetCodeClass
  78. .Where(a => a.Depth == 0).ToList();
  79. var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();
  80. int lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));
  81. budgetCode.BudgetSeq = MakeNumToString(lastBudgetSeq +1, 2);
  82. budgetCode.IsUse = true;
  83. }
  84. else if (budgetCode.Depth == 1)
  85. {
  86. codeList = db2.FmsBudgetCodeClass
  87. .Where(a => a.Depth == 1 && a.ParentBudgetClassId == budgetCode.ParentBudgetClassId).ToList();
  88. var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();
  89. string middleBudgetSeq = string.Empty;
  90. int lastBudgetSeq = 0;
  91. if (lastCode != null)
  92. {
  93. middleBudgetSeq = lastCode.BudgetSeq.Substring(0, lastCode.BudgetSeq.Length - 2);
  94. lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));
  95. budgetCode.RootBudgetClassId = lastCode.RootBudgetClassId;
  96. }
  97. else
  98. {
  99. var parentCode = db2.FmsBudgetCodeClass.Where(a => a.BudgetClassId == budgetCode.ParentBudgetClassId).FirstOrDefault();
  100. if (parentCode == null) return BadRequest("Not Found Parameters.");
  101. middleBudgetSeq = parentCode.BudgetSeq;
  102. lastBudgetSeq = 0;
  103. budgetCode.RootBudgetClassId = parentCode.BudgetClassId;
  104. }
  105. budgetCode.BudgetSeq = middleBudgetSeq + MakeNumToString(lastBudgetSeq + 1, 2);
  106. budgetCode.IsUse = true;
  107. }
  108. else if (budgetCode.Depth == 2)
  109. {
  110. codeList = db2.FmsBudgetCodeClass
  111. .Where(a => a.Depth == 2 && a.ParentBudgetClassId == budgetCode.ParentBudgetClassId).ToList();
  112. var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();
  113. string middleBudgetSeq = string.Empty;
  114. int lastBudgetSeq = 0;
  115. if (lastCode != null)
  116. {
  117. middleBudgetSeq = lastCode.BudgetSeq.Substring(0, lastCode.BudgetSeq.Length - 2);
  118. lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));
  119. budgetCode.RootBudgetClassId = lastCode.RootBudgetClassId;
  120. }
  121. else
  122. {
  123. var parentCode = db2.FmsBudgetCodeClass.Where(a => a.BudgetClassId == budgetCode.ParentBudgetClassId).FirstOrDefault();
  124. if (parentCode == null) return BadRequest("Not Found Parameters.");
  125. middleBudgetSeq = parentCode.BudgetSeq;
  126. lastBudgetSeq = 0;
  127. budgetCode.RootBudgetClassId = parentCode.RootBudgetClassId;
  128. }
  129. budgetCode.BudgetSeq = middleBudgetSeq + MakeNumToString(lastBudgetSeq + 1, 2);
  130. budgetCode.IsUse = true;
  131. }
  132. else
  133. {
  134. return BadRequest("Not Found Parameters.");
  135. }
  136. db2.FmsBudgetCodeClass.Add(budgetCode);
  137. db2.SaveChanges();
  138. }
  139. catch (Exception) { throw;
  140. //return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
  141. }
  142. return StatusCode(HttpStatusCode.NoContent);
  143. }
  144. [ResponseType(typeof(void))]
  145. [ActionName("Update")]
  146. public IHttpActionResult PostFmsBudgetCodeClass2Update(FmsBudgetCodeClass budgetCode)
  147. {
  148. if (budgetCode == null) return BadRequest("Not Found Parameters.");
  149. if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");
  150. if (budgetCode.BudgetClassId == 0) return BadRequest("Not Found Parameters.");
  151. IEnumerable<FmsBudgetCodeClass> newKeyData = (from data in db2.FmsBudgetCodeClass
  152. where data.SiteId == budgetCode.SiteId && (data.ParentBudgetClassId == null || (data.ParentBudgetClassId == budgetCode.ParentBudgetClassId)) &&
  153. data.Depth == budgetCode.Depth && (data.Name == budgetCode.Name || data.Abbreviation == budgetCode.Abbreviation)
  154. select data).Take(1);
  155. if (newKeyData.Count() > 1)
  156. {
  157. return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
  158. }
  159. try
  160. {
  161. var codeClass = db2.FmsBudgetCodeClass
  162. .Where(a => a.BudgetClassId == budgetCode.BudgetClassId)
  163. .FirstOrDefault();
  164. if (codeClass == null) return BadRequest("Not Found Parameters.");
  165. codeClass.Name = budgetCode.Name;
  166. codeClass.Abbreviation = budgetCode.Abbreviation;
  167. //2016 02 03 추가 hcLee
  168. codeClass.IsUse = budgetCode.IsUse;
  169. db2.SaveChanges();
  170. }
  171. catch (Exception) { throw; }
  172. return StatusCode(HttpStatusCode.NoContent);
  173. }
  174. [ResponseType(typeof(void))]
  175. [ActionName("Delete")]
  176. public IHttpActionResult PostFmsBudgetCodeClass2Delete(FmsBudgetCodeClass budgetCode)
  177. {
  178. if (budgetCode == null) return BadRequest("Not Found Parameters.");
  179. if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");
  180. if (budgetCode.BudgetClassId == 0) return BadRequest("Not Found Parameters.");
  181. try
  182. {
  183. var codeClass = db2.FmsBudgetCodeClass
  184. .Where(a => a.BudgetClassId == budgetCode.BudgetClassId)
  185. .FirstOrDefault();
  186. if (codeClass == null) return BadRequest("Not Found Parameters.");
  187. db2.FmsBudgetCodeClass.Remove(codeClass);
  188. db2.SaveChanges();
  189. }
  190. catch (Exception) { throw; }
  191. return StatusCode(HttpStatusCode.NoContent);
  192. }
  193. private string MakeNumToString(int target, int length)
  194. {
  195. string targetValue = target.ToString();
  196. if (targetValue.Length >= length) return targetValue;
  197. for (int i = 1; i < length; i++)
  198. {
  199. targetValue = "0" + targetValue;
  200. }
  201. return targetValue;
  202. }
  203. }
  204. }
  205. namespace iBemsDataService.Model
  206. {
  207. public partial class FmsBudgetCodeClass
  208. {
  209. public string RootBudgetName { get; set; }
  210. public string ParentBudgetName { get; set; }
  211. }
  212. }