123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- 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;
- using System.Transactions;
- namespace iBemsDataService.Controllers
- {
- public class FmsMaterialPurchaseOrderMaterialController : ApiController
- {
- private iBemsEntities db = new iBemsEntities();
- [ResponseType( typeof( void ) )]
- public IHttpActionResult PostFmsMaterialPurchaseOrderMaterial( List<PurchaseOrderMaterial> materials )
- {
- if ( !ModelState.IsValid )
- {
- return BadRequest( ModelState );
- }
-
- Uri uri = Request.RequestUri;
- var uriQuery = HttpUtility.ParseQueryString( uri.Query );
- int siteId, businessFieldId, purchaseRequestId, purchaseOrderId;
- if( int.TryParse( uriQuery.Get( "SiteId" ) , out siteId ) == false ||
- int.TryParse( uriQuery.Get( "BusinessFieldId" ) , out businessFieldId ) == false ||
- int.TryParse( uriQuery.Get( "PurchaseRequestId" ) , out purchaseRequestId ) == false ||
- int.TryParse( uriQuery.Get( "PurchaseOrderId" ) , out purchaseOrderId ) == false )
- {
- return BadRequest( "Not Found Parameters." );
- }
- using (var transaction = new TransactionScope())
- {
- var qm = new QueryManager<FmsMaterialPurchaseOrderMaterial>( db );
- try
- {
- var purchaseRequest = db.FmsMaterialPurchaseRequest.SingleOrDefault( d =>
- d.SiteId == siteId &&
- d.BusinessFieldId == businessFieldId &&
- d.PurchaseRequestId == purchaseRequestId );
- if ( purchaseRequest == null )
- {
- return BadRequest( "Not Found a PurchaseOrder." );
- }
- purchaseRequest.ProgressId = (short)PurchaseProgress.PURCHASE_ORDER;
- var query = from d in db.FmsMaterialPurchaseOrderMaterial
- where d.SiteId == siteId &&
- d.BusinessFieldId == businessFieldId &&
- d.PurchaseOrderId == purchaseOrderId
- select d;
- qm.DeleteAndInsert( db.FmsMaterialPurchaseOrderMaterial , materials , query );
- foreach ( var m in materials )
- {
- var dbMaterial = db.FmsMaterial.SingleOrDefault( x =>
- x.SiteId == m.SiteId &&
- //x.BusinessFieldId == m.BusinessFieldId &&
- x.MaterialId == m.MaterialId );
- if( dbMaterial == null )
- continue;
- if ( dbMaterial.FinalPrice != m.UnitCost )
- {
- dbMaterial.FinalPrice = m.UnitCost;
- }
- }
- var RM = from d in db.FmsMaterialPurchaseRequestMaterial
- where d.SiteId == siteId &&
- d.BusinessFieldId == businessFieldId &&
- d.PurchaseRequestId == purchaseRequestId
- select d;
- var OM = from d in db.FmsMaterialPurchaseOrderMaterial
- where d.SiteId == siteId &&
- d.BusinessFieldId == businessFieldId &&
- d.PurchaseOrderId == purchaseOrderId
- select d;
- bool bAllSame;
- if (RM.Count() == OM.Count())
- {
- bAllSame = false;
- foreach (var r in RM)
- {
- var fM = OM.SingleOrDefault(x =>
- x.MaterialId == r.MaterialId &&
- //x.BusinessFieldId == m.BusinessFieldId &&
- x.MaterialCount == r.MaterialCount);
- if (fM == null)
- {
- bAllSame = false;
- break;
- }
- else
- {
- bAllSame = true;
- }
- }
- }
- else
- {
- bAllSame = false;
- }
- var updateRquest = (
- from us in db.FmsMaterialPurchaseRequest
- where us.SiteId == siteId && us.BusinessFieldId == businessFieldId && us.PurchaseRequestId == purchaseRequestId
- select us).FirstOrDefault();
- if (updateRquest != null)
- {
- updateRquest.bSameOrder = bAllSame;
- }
- db.SaveChanges();
- }
- catch ( DbUpdateException e )
- {
- {
- throw e;
- }
- }
- transaction.Complete();
- }
- return StatusCode( HttpStatusCode.NoContent );
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- db.Dispose();
- }
- base.Dispose(disposing);
- }
- }
- public class PurchaseOrderMaterial
- {
- public int SiteId { get; set; }
- public int BusinessFieldId { get; set; }
- public int PurchaseOrderId { get; set; }
- public int MaterialId { get; set; }
- public int MaterialCount { get; set; }
- public int UnitCost { get; set; }
- };
- }
|