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.Web; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.Description; using System.Web.Http.OData; using iBemsDataService; using iBemsDataService.Model; namespace iBemsDataService.Controllers { public class FmsMaterialPurchaseRequestExController : ODataController { private iBemsEntities db = new iBemsEntities(); // GET: odata/FmsMaterialPurchaseRequestEx [Queryable] public List GetFmsMaterialPurchaseRequestEx() { // 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 mterials = ( from m in db.FmsMaterialPurchaseRequest.Where(x => x.SiteId == siteId) // 2019.07.12 select new FmsMaterialPurchaseRequestEx { SiteId = m.SiteId, BusinessFieldId = m.BusinessFieldId, //CmBusinessField = m.CmBusinessField, PurchaseRequestId = m.PurchaseRequestId, PurchaseTypeId = m.PurchaseTypeId, RequestDate = m.RequestDate, RequestUserId = m.RequestUserId, PurchaseHopeDate = m.PurchaseHopeDate, Title = m.Title, Reason = m.Reason, ProgressId = m.ProgressId, ApprovalDate = m.ApprovalDate, ApprovalUserId = m.ApprovalUserId, bSameOrder2 = true, } ).ToList(); foreach (var m in mterials) { m.CmBusinessField_Name = GetCmBusinessField_Name(m.BusinessFieldId); m.FmsMaterialCodeProgress_Name = GetFmsMaterialCodeProgress_Name(m.ProgressId); m.RequestUserId_Name = GetUserId_Name(m.RequestUserId); m.ApprovalUserId_Name = GetUserId_Name(m.ApprovalUserId); } /* var historyAllList = GetFmsMaterialStockHistory(); foreach (var material in mterials) { var temp = historyAllList.Where(m => m.MaterialId == material.MaterialId).FirstOrDefault(); if (temp != null) { material.StockCount = temp.StockCount; material.StockAmount = temp.StockAmount; //hcLee 2015 11 11 material.WarehouseId = temp.WarehouseId; material.WHouseName = GetWHouseName(temp.WarehouseId); } } #region === Obslote === //foreach (var item in mterials) //{ // var lastestStockInfo = item.FmsMaterialStored // .Where(ms=>ms.IsApproval == true) // .OrderByDescending(ms => ms.MaterialStoredId) // .Take(1).FirstOrDefault(); // if (lastestStockInfo == null) // Sotred 정보가 없는 경우 // { // item.StockCount = 0; // item.StockAmount = 0; // continue; // } // var releasedMaterials = item.FmsMaterialRelease // .Where(mr=>mr.IsConfirmed == true ) // .ToList(); // if (releasedMaterials.Count == 0) // Release 정보가 없는 경우 // { // item.StockCount = lastestStockInfo.StockCount; // item.StockAmount = lastestStockInfo.StockCount * lastestStockInfo.UnitCost; // continue; // } // var releaseCount = releasedMaterials.Where(r2 => r2.AdjustmentTypeId != 2).Sum(r2 => r2.MaterialCount).Value; // var releaseTotalAmount = releasedMaterials.Where(r2 => r2.AdjustmentTypeId != 2).Sum(r2 => r2.ReleaseTotalCost).Value; // var releaseReturnCount = releasedMaterials.Where(r2 => r2.AdjustmentTypeId == 2).Sum(r2 => r2.MaterialCount).Value; // var releaseReturnTotalAmount = releasedMaterials.Where(r2 => r2.AdjustmentTypeId == 2).Sum(r2 => r2.ReleaseTotalCost).Value; // item.StockCount = lastestStockInfo.StockCount - releaseCount + releaseReturnCount; // item.StockAmount = (lastestStockInfo.StockCount * lastestStockInfo.UnitCost) - releaseTotalAmount + releaseReturnTotalAmount; //} #endregion */ return mterials.ToList(); } private string GetCmBusinessField_Name(int id) { var W = db.CmBusinessField .Where(mr => mr.BusinessFieldId == id) .FirstOrDefault(); if (W == null) return ""; else return W.Name; } private string GetFmsMaterialCodeProgress_Name(int id) { var W = db.FmsMaterialCodeProgress .Where(mr => mr.ProgressId == id) .FirstOrDefault(); if (W == null) return ""; else return W.Name; } private string GetUserId_Name(string id) { var W = db.CmUser .Where(mr => mr.UserId == id) .FirstOrDefault(); if (W == null) return ""; else return W.Name; } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }