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.Web; using System.Web.Http; using System.Web.Http.Description; using DevExpress.XtraCharts.Native; using DevExpress.XtraPrinting.Native; using iBemsDataService; using iBemsDataService.Model; using iBemsDataService.Util; namespace iBemsDataService.Controllers { public class FmsMaterialReleaseController : ApiController { private iBemsEntities db = new iBemsEntities(); [ResponseType( typeof( void ) )] public IHttpActionResult PostFmsMaterialRelease(List materialList) { Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId, workRequestId, businessFieldId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false || int.TryParse(uriQuery.Get("WorkRequestId"), out workRequestId) == false || int.TryParse(uriQuery.Get("BusinessFieldId"), out businessFieldId) == false ) { return BadRequest("Not Found Parameters."); } try { foreach (var item in materialList) { FmsMaterialRelease releaseItem = new FmsMaterialRelease() { SiteId = item.SiteId, BusinessFieldId = item.BusinessFieldId, ReleaseDate = DateTime.Now, ReleaseTypeId = 1, // 작업출고 WorkRequestId = workRequestId, MaterialId = item.MaterialId, MaterialCount = item.MaterialCount, ReleaseTotalCost = (item.FinalPrice * item.MaterialCount), IsConfirmed = false }; db.FmsMaterialRelease.Add(releaseItem); } db.SaveChanges(); } catch (DbUpdateException e) { { throw e; } } return StatusCode( HttpStatusCode.NoContent ); } [ResponseType(typeof(void))] [ActionName("Approval")] public IHttpActionResult PostFmsMaterialRelease(FmsMaterialRelease releaseMaterial) { Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId, businessFieldId, materialId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false || int.TryParse(uriQuery.Get("BusinessFieldId"), out businessFieldId) == false || int.TryParse(uriQuery.Get("MaterialId"), out materialId) == false) { return BadRequest("Not Found Parameters."); } try { var material = db.FmsMaterial.Where(m => m.SiteId == siteId && m.MaterialId == materialId && m.IsUse == true ).FirstOrDefault(); if (material == null) { return StatusCode(HttpStatusCode.NoContent); } if (releaseMaterial.AdjustmentTypeId == 1) { material.FinalStockCount -= releaseMaterial.MaterialCount.Value; material.FinalTotalStockAmount -= releaseMaterial.ReleaseTotalCost.Value; } else if (releaseMaterial.AdjustmentTypeId == 2) { material.FinalStockCount += releaseMaterial.MaterialCount.Value; material.FinalTotalStockAmount += releaseMaterial.ReleaseTotalCost.Value; } db.SaveChanges(); } catch (DbUpdateException e) { throw e; } return StatusCode(HttpStatusCode.NoContent); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } public class ReleaseMaterial { public int SiteId { get; set; } public int BusinessFieldId { get; set; } public string Name { get; set; } public int MaterialId { get; set; } public int MaterialCount { get; set; } public int MaterialCode { get; set; } public int FinalPrice { get; set; } }; }