| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 | using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Data;using System.Data.Entity;using System.Data.Entity.Infrastructure;using System.Linq;using System.Net;using System.Net.Http;using System.Web;using System.Web.Http;using System.Web.Http.Description;using System.Web.Http.OData;using iBemsDataService;using iBemsDataService.Model;namespace iBemsDataService.Controllers{    public class FmsBudgetCodeClassController : ODataController    {        private iBemsEntities db = new iBemsEntities();        // GET: odata/FmsBudgetCodeClassEx        [Queryable]        public List<FmsBudgetCodeClass> GetFmsBudgetCodeClass()        {            // 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 = db.FmsBudgetCodeClass.Where(a =>                a.SiteId == siteId &&                a.Depth == 2)                .ToList();            var codeList = db.FmsBudgetCodeClass.ToList();            foreach (var item in list)            {                item.RootBudgetName = codeList.Where(a => a.BudgetClassId == item.RootBudgetClassId).FirstOrDefault().Name;                item.ParentBudgetName = codeList.Where(a => a.BudgetClassId == item.ParentBudgetClassId).FirstOrDefault().Name;            }            return list;        }        protected override void Dispose(bool disposing)        {            if (disposing)            {                db.Dispose();            }            base.Dispose(disposing);        }    }    public class FmsBudgetCodeClass2Controller : ApiController    {        private iBemsEntities db2 = new iBemsEntities();        [ResponseType(typeof(void))]        [ActionName("Insert")]        public IHttpActionResult PostFmsBudgetCodeClass2Insert(FmsBudgetCodeClass budgetCode)        {            if (budgetCode == null) return BadRequest("Not Found Parameters.");            if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");            List<FmsBudgetCodeClass> codeList = null;            IEnumerable<FmsBudgetCodeClass> newKeyData = (from data in db2.FmsBudgetCodeClass                                                          where data.SiteId == budgetCode.SiteId && (data.ParentBudgetClassId == null || (data.ParentBudgetClassId == budgetCode.ParentBudgetClassId)) &&                                                                data.Depth == budgetCode.Depth && (data.Name == budgetCode.Name || data.Abbreviation == budgetCode.Abbreviation)                                                            select data).Take(1);            if (newKeyData.Count() > 0)            {                return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");            }            try            {                if (budgetCode.Depth == 0)                {                    codeList = db2.FmsBudgetCodeClass                           .Where(a => a.Depth == 0).ToList();                    var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();                    int lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));                    budgetCode.BudgetSeq = MakeNumToString(lastBudgetSeq +1, 2);                    budgetCode.IsUse = true;                                    }                else if (budgetCode.Depth == 1)                {                    codeList = db2.FmsBudgetCodeClass                            .Where(a => a.Depth == 1 && a.ParentBudgetClassId == budgetCode.ParentBudgetClassId).ToList();                    var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();                    string middleBudgetSeq = string.Empty;                    int lastBudgetSeq = 0;                    if (lastCode != null)                    {                        middleBudgetSeq = lastCode.BudgetSeq.Substring(0, lastCode.BudgetSeq.Length - 2);                        lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));                        budgetCode.RootBudgetClassId = lastCode.RootBudgetClassId;                    }                    else                    {                        var parentCode = db2.FmsBudgetCodeClass.Where(a => a.BudgetClassId == budgetCode.ParentBudgetClassId).FirstOrDefault();                        if (parentCode == null) return BadRequest("Not Found Parameters.");                        middleBudgetSeq = parentCode.BudgetSeq;                        lastBudgetSeq = 0;                        budgetCode.RootBudgetClassId = parentCode.BudgetClassId;                    }                                        budgetCode.BudgetSeq = middleBudgetSeq + MakeNumToString(lastBudgetSeq + 1, 2);                    budgetCode.IsUse = true;                                    }                else if (budgetCode.Depth == 2)                {                    codeList = db2.FmsBudgetCodeClass                            .Where(a => a.Depth == 2 && a.ParentBudgetClassId == budgetCode.ParentBudgetClassId).ToList();                    var lastCode = codeList.OrderByDescending(a => a.BudgetSeq).FirstOrDefault();                    string middleBudgetSeq = string.Empty;                    int lastBudgetSeq = 0;                    if (lastCode != null)                    {                        middleBudgetSeq = lastCode.BudgetSeq.Substring(0, lastCode.BudgetSeq.Length - 2);                        lastBudgetSeq = int.Parse(lastCode.BudgetSeq.Substring(lastCode.BudgetSeq.Length - 2));                        budgetCode.RootBudgetClassId = lastCode.RootBudgetClassId;                    }                    else                    {                        var parentCode = db2.FmsBudgetCodeClass.Where(a => a.BudgetClassId == budgetCode.ParentBudgetClassId).FirstOrDefault();                        if (parentCode == null) return BadRequest("Not Found Parameters.");                        middleBudgetSeq = parentCode.BudgetSeq;                        lastBudgetSeq = 0;                        budgetCode.RootBudgetClassId = parentCode.RootBudgetClassId;                    }                    budgetCode.BudgetSeq = middleBudgetSeq + MakeNumToString(lastBudgetSeq + 1, 2);                    budgetCode.IsUse = true;                                    }                else                {                    return BadRequest("Not Found Parameters.");                 }                db2.FmsBudgetCodeClass.Add(budgetCode);                db2.SaveChanges();            }            catch (Exception) { throw;                //return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");            }            return StatusCode(HttpStatusCode.NoContent);        }        [ResponseType(typeof(void))]        [ActionName("Update")]        public IHttpActionResult PostFmsBudgetCodeClass2Update(FmsBudgetCodeClass budgetCode)        {            if (budgetCode == null) return BadRequest("Not Found Parameters.");            if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");            if (budgetCode.BudgetClassId == 0) return BadRequest("Not Found Parameters.");            IEnumerable<FmsBudgetCodeClass> newKeyData = (from data in db2.FmsBudgetCodeClass                                                          where data.SiteId == budgetCode.SiteId && (data.ParentBudgetClassId == null || (data.ParentBudgetClassId == budgetCode.ParentBudgetClassId)) &&                                                                data.Depth == budgetCode.Depth && (data.Name == budgetCode.Name || data.Abbreviation == budgetCode.Abbreviation)                                                          select data).Take(1);            if (newKeyData.Count() > 1)            {                return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");            }            try            {                var codeClass = db2.FmsBudgetCodeClass                    .Where(a => a.BudgetClassId == budgetCode.BudgetClassId)                    .FirstOrDefault();                if (codeClass == null) return BadRequest("Not Found Parameters.");                codeClass.Name = budgetCode.Name;                codeClass.Abbreviation = budgetCode.Abbreviation;                //2016 02 03 추가 hcLee                codeClass.IsUse = budgetCode.IsUse;                db2.SaveChanges();            }            catch (Exception) { throw; }            return StatusCode(HttpStatusCode.NoContent);        }        [ResponseType(typeof(void))]        [ActionName("Delete")]        public IHttpActionResult PostFmsBudgetCodeClass2Delete(FmsBudgetCodeClass budgetCode)        {            if (budgetCode == null) return BadRequest("Not Found Parameters.");            if (budgetCode.SiteId == 0) return BadRequest("Not Found Parameters.");            if (budgetCode.BudgetClassId == 0) return BadRequest("Not Found Parameters.");            try            {                var codeClass = db2.FmsBudgetCodeClass                   .Where(a => a.BudgetClassId == budgetCode.BudgetClassId)                   .FirstOrDefault();                if (codeClass == null) return BadRequest("Not Found Parameters.");                db2.FmsBudgetCodeClass.Remove(codeClass);                db2.SaveChanges();            }            catch (Exception) { throw; }            return StatusCode(HttpStatusCode.NoContent);        }        private string MakeNumToString(int target, int length)        {            string targetValue =  target.ToString();            if (targetValue.Length >= length) return targetValue;            for (int i = 1; i < length; i++)            {                targetValue = "0" + targetValue;            }            return targetValue;        }    }}namespace iBemsDataService.Model{    public partial class FmsBudgetCodeClass    {        public string RootBudgetName { get; set; }        public string ParentBudgetName { get; set; }    }}
 |