123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- 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;
- namespace iBemsDataService.Controllers
- {
- public class FmsFacilityCodeClassController : ApiController
- {
- private iBemsEntities db = new iBemsEntities();
- // cyim 2015.12.30 : 설정-시설관리-시설등록-시설분류목록에 중복 입력 체크 (1개라도 있다면 false)
- [ResponseType(typeof(void))]
- [ActionName("Check")]
- public bool PostFmsFacilityCodeClassCheck(FmsFacilityCodeClass param)
- {
- try
- {
- IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
- where data.SiteId == param.SiteId && (data.Name == param.Name || data.Abbreviation == param.Abbreviation)
- select data).Take(1);
- if (newKeyData.Count() > 0)
- return false;
- }
- catch (Exception) { throw; }
- return true;
- }
- [ResponseType(typeof(void))]
- [ActionName("Insert")]
- public IHttpActionResult PostFmsFacilityCodeClassInsert(FmsFacilityCodeClass param)
- {
- try
- {
- IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
- where data.SiteId == param.SiteId && (data.ParentFacilityClassId == null || (data.ParentFacilityClassId == param.ParentFacilityClassId)) &&
- data.Depth == param.Depth && data.Name == param.Name
- select data).Take(1);
- if (newKeyData.Count() > 0)
- {
- return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
- }
- db.FmsFacilityCodeClass.Add(param);
- db.SaveChanges();
- }
- catch (Exception) { throw; }
- return StatusCode(HttpStatusCode.NoContent);
- }
- [ResponseType(typeof(void))]
- [ActionName("Update")]
- public IHttpActionResult PostFmsFacilityCodeClassUpdate(FmsFacilityCodeClass param)
- {
- try
- {
- IEnumerable<FmsFacilityCodeClass> newKeyData = (from data in db.FmsFacilityCodeClass
- where data.FacilityClassId != param.FacilityClassId &&
- data.SiteId == param.SiteId && (data.ParentFacilityClassId == null || (data.ParentFacilityClassId == param.ParentFacilityClassId)) &&
- data.Depth == param.Depth && (data.Name == param.Name || data.Abbreviation == param.Abbreviation)
- select data).Take(1);
- if (newKeyData.Count() > 1)
- {
- return BadRequest("중복된 이름이나 별명이 이미 존재 합니다!");
- }
- var codeClass = db.FmsFacilityCodeClass
- .Where(a => a.FacilityClassId == param.FacilityClassId)
- .FirstOrDefault();
- if (codeClass == null) return BadRequest("Not Found Parameters.");
- codeClass.Name = param.Name;
- codeClass.Abbreviation = param.Abbreviation;
- codeClass.IsUse = param.IsUse;
- db.SaveChanges();
- }
- catch (Exception) { throw; }
- return StatusCode(HttpStatusCode.NoContent);
- }
- [ResponseType( typeof( void ) )]
- public IHttpActionResult DeleteFmsFacilityCodeClass()
- {
- if ( !ModelState.IsValid )
- {
- return BadRequest( ModelState );
- }
- Uri uri = Request.RequestUri;
- var uriQuery = HttpUtility.ParseQueryString( uri.Query );
- int siteId, facilityClassId, depth;
- if( int.TryParse( uriQuery.Get( "SiteId" ) , out siteId ) == false ||
- int.TryParse( uriQuery.Get( "FacilityClassId" ) , out facilityClassId ) == false ||
- int.TryParse( uriQuery.Get( "Depth" ) , out depth ) == false )
- {
- return BadRequest("Not Found Parameters.");
- }
- using( var transaction = new TransactionScope() )
- {
- var qm = new QueryManager<FmsFacilityCodeClass>( db );
- var dbSet = db.FmsFacilityCodeClass;
- if( depth == 0 )
- {
- var query = from d in dbSet
- where d.SiteId == siteId &&
- d.ParentFacilityClassId == facilityClassId
- select d;
- var list = query.ToList();
- foreach( var item in list )
- {
- var queryToDelete = from d in dbSet
- where d.SiteId == siteId &&
- d.ParentFacilityClassId == item.FacilityClassId
- select d;
- qm.Delete( dbSet , queryToDelete );
- qm.Delete( dbSet , item , true );
- }
- }
- else if( depth == 1 )
- {
- var query = from d in dbSet
- where d.SiteId == siteId &&
- d.ParentFacilityClassId == facilityClassId
- select d;
- qm.Delete( dbSet, query );
- }
- qm.Delete( dbSet , new FmsFacilityCodeClass {
- SiteId = siteId ,
- FacilityClassId = facilityClassId
- } , true );
- db.SaveChanges();
- transaction.Complete();
- }
- return StatusCode( HttpStatusCode.NoContent );
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- db.Dispose();
- }
- base.Dispose(disposing);
- }
- }
- }
|