using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Diagnostics; using System.Linq; using System.Net; using System.Net.Http; using System.Transactions; using System.Web; using System.Web.Http; using System.Web.Http.Description; using iBemsDataService; using iBemsDataService.Model; using iBemsDataService.Util; namespace iBemsDataService.Controllers { public class FmsEquipmentController : ApiController { private iBemsEntities db = new iBemsEntities(); [ResponseType(typeof(void))] [ActionName("InsertFmsEquipment")] public int InsertFmsEquipment(FmsEquipmentEx equipment)//2019-11-11 변경 { Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); bool isAdditionalEquipment = false; bool isNew = false; bool.TryParse(uriQuery.Get("IsAdditionalEquipment"), out isAdditionalEquipment); bool.TryParse(uriQuery.Get("IsNew"), out isNew); // 2019.07.12 FmsEquipment equip = db.FmsEquipment.Where(e => e.SiteId == equipment.SiteId && e.EquipmentId == equipment.EquipmentId ).FirstOrDefault(); try { using (var transaction = new TransactionScope()) { if (!isAdditionalEquipment) // 추가 입고는 Equipment 등록할 필요없음!. 신규 등록 경우 { if (equip == null) { equip = new FmsEquipment(); } equip.SiteId = equipment.SiteId; equip.Name = equipment.Name; equip.EquipmentTypeId = equipment.EquipmentTypeId; equip.WarehouseId = equipment.WarehouseId; equip.Unit = equipment.Unit; equip.Standard = equipment.Standard; equip.AddDate = DateTime.Now; equip.UpdateDate = DateTime.Now; equip.RegisterUserId = equipment.RegisterUserId; equip.SupplierName = equipment.SupplierName; equip.SupplierPhoneNo = equipment.SupplierPhoneNo; equip.ImageFileId = equipment.ImageFileId; db.FmsEquipment.Add(equip); db.SaveChanges(); } if (equipment.StoredCount != 0) { FmsEquipmentHistory addHistory = new FmsEquipmentHistory() { AddDate = DateTime.Now, // 현재 수량 = 마지막정보의 현재수량 + 반납수량 CurrentStockCount = equipment.CurrentStockCount != null ? equipment.CurrentStockCount + equipment.StoredCount : equipment.StoredCount, EquipmentId = equip.EquipmentId, LossCount = 0, RentCount = 0, CurrentRentCount = 0, ReturnCount = 0, SiteId = equipment.SiteId, StoredCount = equipment.StoredCount, TotalStockCount = equipment.TotalStockCount != null ? equipment.TotalStockCount + equipment.StoredCount : equipment.StoredCount, UpdateDate = DateTime.Now, EquipmentStateTypeId = 1 }; db.FmsEquipmentHistory.Add(addHistory); } db.SaveChanges(); transaction.Complete(); } } catch (DbUpdateException e) { throw e; } return equip.EquipmentId; } [ResponseType(typeof(void))] [ActionName("UpdateFmsEquipment")] public int UpdateFmsEquipment(FmsEquipmentEx equipment)//2019-11-11 변경 { Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); bool isAdditionalEquipment = false; bool isNew = false; bool.TryParse(uriQuery.Get("IsAdditionalEquipment"), out isAdditionalEquipment); bool.TryParse(uriQuery.Get("IsNew"), out isNew); FmsEquipment equip = db.FmsEquipment .Where(e => e.EquipmentId == equipment.EquipmentId && e.SiteId == equipment.SiteId) .FirstOrDefault(); try { using (var transaction = new TransactionScope()) { if (equip != null) { equip.Name = equipment.Name; equip.EquipmentTypeId = equipment.EquipmentTypeId; equip.WarehouseId = equipment.WarehouseId; equip.UpdateDate = DateTime.Now; equip.Unit = equipment.Unit; equip.Standard = equipment.Standard; equip.SupplierName = equipment.SupplierName; equip.SupplierPhoneNo = equipment.SupplierPhoneNo; equip.ImageFileId = equipment.ImageFileId; db.SaveChanges(); transaction.Complete(); } } } catch (DbUpdateException e) { throw e; } return equip.EquipmentId; } [ResponseType(typeof(void))] [ActionName("FmsEquipmentDelete")] public IHttpActionResult FmsEquipmentDelete(FmsEquipmentEx equipment) { if (equipment.EquipmentId == 0) { return BadRequest(ModelState); } var deleteHistoryQuery = db.FmsEquipmentHistory.Where(fe => fe.SiteId == equipment.SiteId && fe.EquipmentId == equipment.EquipmentId ); var deleteEquipmentQuery = db.FmsEquipment.Where(fe => fe.SiteId == equipment.SiteId && fe.EquipmentId == equipment.EquipmentId ); try { using (var transaction = new TransactionScope()) { // history 삭제 FmsEquipmentHistory history = new FmsEquipmentHistory() { EquipmentId = equipment.EquipmentId }; new QueryManager(db).Delete(db.FmsEquipmentHistory, deleteHistoryQuery); db.SaveChanges(); // Equipment 삭제 new QueryManager(db).Delete(db.FmsEquipment, deleteEquipmentQuery); db.SaveChanges(); transaction.Complete(); } } catch (DbUpdateException e) { throw e; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }