private void PurchaseTruck() { int lastItemID; int nextItemID; int itemsCount = 0; var cdc = new CorporationDataContext(); itemsCount = cdc.Trucks.Count(); if (itemsCount == 0) { nextItemID = 990001; } else { lastItemID = cdc.Trucks.OrderByDescending(s => s.TruckID).Select(s => s.TruckID).First(); nextItemID = lastItemID + 1; } try { cdc.Trucks.InsertOnSubmit( new Truck { TruckID = nextItemID, Status = "free" } ); cdc.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { foreach (ObjectChangeConflict occ in cdc.ChangeConflicts) { occ.Resolve(RefreshMode.KeepChanges); } } try { cdc.SubmitChanges(ConflictMode.FailOnFirstConflict); } catch (Exception ex) { MessageBox.Show("Exception: " + ex.Message); } }
public async void Produce(int ordId) { var cdc = new CorporationDataContext(); Random rand = new Random(); int tpro = rand.Next(30000); Thread.Sleep(tpro); try { var orderInProcess = cdc.ProductOrders.Where(s => s.MProdOrderID == ordId).First(); orderInProcess.Status = "onstock"; cdc.SubmitChanges(); Thread.Sleep(rand.Next(8000)); await Task.Run(() => ShipProdOrd(ordId)); // orderInProcess.Status = "shiped"; //cdc.SubmitChanges(); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }
public void createTransaction(int?pinvID, int?payID, int?transID, int?fuelinvID) { using (var cdc = new CorporationDataContext()) { mutex.WaitOne(); int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; itemsCount = cdc.BankTransactions.Count(); if (itemsCount == 0) { nextItemID = 440001; } else { lastItemID = cdc.BankTransactions.OrderByDescending(s => s.TransactionID).Select(s => s.TransactionID).First(); nextItemID = lastItemID + 1; } try { cdc.BankTransactions.InsertOnSubmit( new BankTransaction { TransactionID = nextItemID, PlantInvoiceID = pinvID, PaymentID = payID, TransInvoiceID = transID, TankFuelInvoiceID = fuelinvID, Status = "pending", Confirmed = "no", Date = DateTime.Now, FuelPaymentID = null, TransPaymentID = null } ); cdc.SubmitChanges(); mutex.ReleaseMutex(); } catch (Exception ex) { MessageBox.Show("Exception: " + ex.Message); } } }
public void PlaceProdOrder(object source, ElapsedEventArgs e) { int lastItemID; int nextItemID; int itemsCount = 0; var cdc = new CorporationDataContext(); itemsCount = cdc.ProductOrders.Count(); if (itemsCount == 0) { nextItemID = 110001; } else { lastItemID = cdc.ProductOrders.OrderByDescending(s => s.MProdOrderID).Select(s => s.MProdOrderID).First(); nextItemID = lastItemID + 1; } Random random = new Random(); int orderValue = random.Next(50000); List <int> payTerms = new List <int>() { 0, 30, 60, 90 }; int payIndex = random.Next(4); try { cdc.ProductOrders.InsertOnSubmit( new ProductOrder { MProdOrderID = nextItemID, ProdOrderValue = orderValue, Status = "open", OrderDate = DateTime.Now, PaymentTerm = payTerms[payIndex], InvoiceIssued = "no" } ); cdc.SubmitChanges(); } catch { } }
public async void checkInvoices(object source, ElapsedEventArgs e) { using (var cdc = new CorporationDataContext()) { try { var PlantInvoicesList = cdc.PlantInvoices.Join(cdc.ProductOrders, inv => inv.MProdOrderID, ord => ord.MProdOrderID, (inv, ord) => new { PlantInvID = inv.PlantInviceID, InvoiceValue = ord.ProdOrderValue, InvoiceStatus = inv.Status, Date = ord.OrderDate, PaymentTerm = ord.PaymentTerm }).ToList(); var oldestPendInvoice = PlantInvoicesList.Where(s => s.InvoiceStatus == "issued").OrderBy(s => s.Date).FirstOrDefault(); decimal PlantInvoicedTotalAmount = Convert.ToDecimal(PlantInvoicesList.Sum(s => s.InvoiceValue)); if (oldestPendInvoice != null) { int invID = oldestPendInvoice.PlantInvID; var invToProcess = cdc.PlantInvoices.Where(s => s.PlantInviceID == invID); int invPayTerm = (int)oldestPendInvoice.PaymentTerm; Thread.Sleep(invPayTerm * 100); await Task.Run(() => createTransaction(invID, null, null, null)); foreach (PlantInvoice inv in invToProcess) { inv.Status = "paid"; } cdc.SubmitChanges(); } } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }; }
public void FuelPurchase() { decimal fr = FuelReserve(); decimal amountToPurchase = (FuelReserveUpperLimit - fr); var cdc = new CorporationDataContext(); BANK bank = new BANK(); if (bank.balance >= amountToPurchase * fuelPrice) { int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; itemsCount = cdc.TankFuelPayments.Count(); if (itemsCount == 0) { nextItemID = 660001; } else { lastItemID = cdc.TankFuelPayments.OrderByDescending(s => s.FuelPaymentID).Select(s => s.FuelPaymentID).First(); nextItemID = lastItemID + 1; } try { cdc.TankFuelPayments.InsertOnSubmit( new TankFuelPayment { FuelPaymentID = nextItemID, FuelPaymentAmount = Convert.ToInt32(amountToPurchase), FuelPaymentValue = amountToPurchase * fuelPrice, Status = "requested", Date = DateTime.Now } ); cdc.SubmitChanges(); } catch (Exception ex) { MessageBox.Show("Exception: " + ex.Message); } } }
private void ShipProdOrd(int ordId) { var cdc = new CorporationDataContext(); try { var orderInProcess = cdc.ProductOrders.Where(s => s.MProdOrderID == ordId).First(); orderInProcess.Status = "shiped"; cdc.SubmitChanges(); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }
public void PlaceTankFuelOrder(object source, ElapsedEventArgs e) { int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; var cdc = new CorporationDataContext(); itemsCount = cdc.TankFuelOrders.Count(); if (itemsCount == 0) { nextItemID = 550001; } else { lastItemID = cdc.TankFuelOrders.OrderByDescending(s => s.TankFuelOrderID).Select(s => s.TankFuelOrderID).First(); nextItemID = lastItemID + 1; } Random random = new Random(); int orderAmount = random.Next(200); decimal fuelPrice = 29; decimal orderValue = orderAmount * fuelPrice; try { cdc.TankFuelOrders.InsertOnSubmit( new TankFuelOrder { TankFuelOrderID = nextItemID, TankFuelOrderValue = orderValue, TankFuelOrderAmount = orderAmount, Status = "waiting", Date = DateTime.Now, } ); cdc.SubmitChanges(); } catch { } }
public async void checkPayments(object source, ElapsedEventArgs e) { using (var cdc = new CorporationDataContext()) { try { var PaymentsList = cdc.Payments.Join(cdc.ProductOrders, pay => pay.MProdOrderID, ord => ord.MProdOrderID, (pay, ord) => new { CorpPaymID = pay.PaymentID, PaymentAmount = (ord.ProdOrderValue) * 7 / 10, PaymentStatus = pay.Status, Date = ord.OrderDate }); var oldestPendPayment = PaymentsList.Where(s => s.PaymentStatus == "requested").OrderBy(s => s.Date).FirstOrDefault(); if (oldestPendPayment != null) { int payID = oldestPendPayment.CorpPaymID; var payToProcess = cdc.Payments.Where(s => s.PaymentID == payID); decimal payamt = Convert.ToDecimal(oldestPendPayment.PaymentAmount); decimal currBalance = balance; if (currBalance - payamt >= 0) { await Task.Run(() => createTransaction(null, payID, null, null)); foreach (Payment pay in payToProcess) { pay.Status = "paid"; } cdc.SubmitChanges(); } } } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } } }
public async void CheckOrdersList(object source, ElapsedEventArgs e) { var cdc = new CorporationDataContext(); var nomberInvNotIssProdOrd = cdc.ProductOrders.Count(s => s.Status == "shiped" && s.InvoiceIssued == "no"); var invNotIssProdOrd = cdc.ProductOrders.Where(s => s.Status == "shiped" && s.InvoiceIssued == "no").OrderBy(s => s.OrderDate).FirstOrDefault(); var oldestInProdOrd = cdc.ProductOrders.Where(s => s.Status == "inproduction").OrderBy(s => s.OrderDate).FirstOrDefault(); var nomberOrdersInProduction = cdc.ProductOrders.Count(s => s.Status == "inproduction"); var notShipedProdOrd = cdc.ProductOrders.Where(s => s.Status == "onStock").OrderBy(s => s.OrderDate).FirstOrDefault(); if (notShipedProdOrd != null) { int ntordID = notShipedProdOrd.MProdOrderID; await Task.Run(() => ShipProdOrd(ntordID)); } if (invNotIssProdOrd != null) { await Task.Run(() => IssuePlantInvoice(invNotIssProdOrd.MProdOrderID)); await Task.Run(() => IssuePayment(invNotIssProdOrd.MProdOrderID)); try { invNotIssProdOrd.InvoiceIssued = "yes"; cdc.SubmitChanges(); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } } if (nomberOrdersInProduction < prodLinesnomber) { NextOpenOrderToProduction(); } if (oldestInProdOrd != null) { await Task.Run(() => Produce(oldestInProdOrd.MProdOrderID)); } }
public void PlaceTransOrder(object source, ElapsedEventArgs e) { int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; var cdc = new CorporationDataContext(); itemsCount = cdc.TransOrders.Count(); if (itemsCount == 0) { nextItemID = 880001; } else { lastItemID = cdc.TransOrders.OrderByDescending(s => s.TransOrderID).Select(s => s.TransOrderID).First(); nextItemID = lastItemID + 1; } Random random = new Random(); int orderValue = random.Next(30000); int distance = random.Next(10000); try { cdc.TransOrders.InsertOnSubmit( new TransOrder { TransOrderID = nextItemID, OrderValue = orderValue, Status = "open", Date = DateTime.Now, Distance = distance, Attribute = null } ); cdc.SubmitChanges(); } catch { } }
private static void NextVehicleToTank(int ordID) { var cdc = new CorporationDataContext(); try { var waitingTankOrd = cdc.TankFuelOrders.Where(s => s.TankFuelOrderID == ordID); foreach (TankFuelOrder fuelOrder in waitingTankOrd) { fuelOrder.Status = "inprocess"; cdc.SubmitChanges(); } } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }
public void IssuePayment(int ordId) { var cdc = new CorporationDataContext(); BANK bank = new BANK(); decimal balance = bank.balance; int lastItemID; int nextItemID; int itemsCount = 0; itemsCount = cdc.Payments.Count(); if (itemsCount == 0) { nextItemID = 220001; } else { lastItemID = cdc.Payments.OrderByDescending(s => s.PaymentID).Select(s => s.PaymentID).First(); nextItemID = lastItemID + 1; } try { cdc.Payments.InsertOnSubmit( new Payment { PaymentID = nextItemID, MProdOrderID = ordId, Status = "requested", TankFuelOrderID = null } ); cdc.SubmitChanges(); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }
private static void TankVehicle(int tankOrdId) { var cdc = new CorporationDataContext(); var waitingTankOrd = cdc.TankFuelOrders.Where(s => s.TankFuelOrderID == tankOrdId); foreach (TankFuelOrder ord in waitingTankOrd) { int tankTime = (ord.TankFuelOrderAmount).GetValueOrDefault() * 100; Thread.Sleep(tankTime); ord.Status = "tanked"; try { cdc.SubmitChanges(); } catch { } } }
public async void NextOpenOrderToProduction() { var cdc = new CorporationDataContext(); var oldestOpenOrd = cdc.ProductOrders.Where(s => s.Status == "open").OrderBy(s => s.OrderDate).FirstOrDefault(); if (oldestOpenOrd != null) { try { oldestOpenOrd.Status = "inproduction"; cdc.SubmitChanges(); await Task.Run(() => Produce(oldestOpenOrd.MProdOrderID)); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } } }
private void IssuePlantInvoice(int ordId) { var cdc = new CorporationDataContext(); int lastItemID; int nextItemID; int itemsCount = 0; itemsCount = cdc.PlantInvoices.Count(); if (itemsCount == 0) { nextItemID = 330001; } else { lastItemID = cdc.PlantInvoices.OrderByDescending(s => s.PlantInviceID).Select(s => s.PlantInviceID).First(); nextItemID = lastItemID + 1; } try { cdc.PlantInvoices.InsertOnSubmit( new PlantInvoice { PlantInviceID = nextItemID, MProdOrderID = ordId, Status = "issued", } ); cdc.SubmitChanges(); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } }
public async void CheckTankOrders(object source, ElapsedEventArgs e) { var cdc = new CorporationDataContext(); int tankAmount = 0; var nomberWaitTankOrd = cdc.TankFuelOrders.Count(s => s.Status == "waiting"); var nomberProcessTankOrd = cdc.TankFuelOrders.Count(s => s.Status == "inprocess"); var momentalTankFuelAmount = cdc.TankFuelOrders.Where(s => s.Status == "inprocess").Sum(s => s.TankFuelOrderAmount); var waitingTankOrd = cdc.TankFuelOrders.Where(s => s.Status == "waiting").OrderBy(s => s.Date).FirstOrDefault(); if (waitingTankOrd != null) { tankAmount = (int)waitingTankOrd.TankFuelOrderAmount; } if (FuelReserve() <= FuelReserveLowerLimit) { await Task.Run(() => FuelPurchase()); } if (nomberProcessTankOrd < FuelStationPostsNumber && waitingTankOrd != null && FuelReserve() >= tankAmount) { try { int oldestTankOrdID = waitingTankOrd.TankFuelOrderID; await Task.Run(() => NextVehicleToTank(oldestTankOrdID)); await Task.Run(() => TankVehicle(oldestTankOrdID)); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } } else if (waitingTankOrd != null && FuelReserve() < tankAmount) { Thread.Sleep(2000); try { waitingTankOrd.Status = "canceled"; cdc.SubmitChanges(); } catch { } } var inprocTankOrd = cdc.TankFuelOrders.Where(s => s.Status == "inprocess").OrderBy(s => s.Date).FirstOrDefault(); if (inprocTankOrd != null && FuelReserve() > 0) { try { int inprocTankOrdID = inprocTankOrd.TankFuelOrderID; await Task.Run(() => TankVehicle(inprocTankOrdID)); } catch (Exception ex) { // MessageBox.Show("Exception: " + ex.Message); } } }
private void StartNewTrip(int trordID, int truckID) { int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; using (CorporationDataContext cdc = new CorporationDataContext()) { TransOrder nextTransOrder = cdc.TransOrders.Where(s => s.TransOrderID == trordID).FirstOrDefault(); Truck nextFreeTruck = cdc.Trucks.Where(s => s.TruckID == truckID).FirstOrDefault(); Thread.Sleep(1000); try { nextFreeTruck.Status = "onTrip"; cdc.SubmitChanges(); nextTransOrder.Attribute = "onWay"; cdc.SubmitChanges(); nextTransOrder.Status = "inprocess"; cdc.SubmitChanges(); } catch (Exception ex) { //MessageBox.Show("Exception: " + ex.Message); } try { itemsCount = cdc.TruckTrips.Count(); if (itemsCount == 0) { nextItemID = 770001; } else { lastItemID = cdc.TruckTrips.OrderByDescending(s => s.TruckTripID).Select(s => s.TruckTripID).First(); nextItemID = lastItemID + 1; } Boolean containsTransOrder = cdc.TruckTrips.Select(s => s.TransOrderID).Contains(trordID); if (containsTransOrder == false) { try { cdc.TruckTrips.InsertOnSubmit( new TruckTrip { TruckTripID = nextItemID, TransOrderID = trordID, TruckID = truckID, Date = DateTime.Now, Status = "open" } ); cdc.SubmitChanges(); } catch (ChangeConflictException e) { } } } catch { } } }
private void Deliver(int trordID, int truckID) { using (var cdc = new CorporationDataContext()) { // mutex.WaitOne(); TransOrder nextTransOrder = cdc.TransOrders.Where(s => s.TransOrderID == trordID).FirstOrDefault(); Truck nextTruck = cdc.Trucks.Where(s => s.TruckID == truckID).FirstOrDefault(); TruckTrip currTrip = cdc.TruckTrips.Where(s => s.TransOrderID == trordID).Single(); int distance = (int)nextTransOrder.Distance; int dur = distance * 1; Thread.Sleep(dur); try { nextTransOrder.Status = "complete"; cdc.SubmitChanges(); currTrip.Status = "complete"; cdc.SubmitChanges(); nextTruck.Status = "free"; cdc.SubmitChanges(); if (nextTransOrder.Status != "complete") { MessageBox.Show(nextTransOrder.Status, "nextTransOrder.Status= "); } if (currTrip.Status != "complete") { MessageBox.Show(currTrip.Status, "currTrip.Status= "); } if (nextTruck.Status != "free") { MessageBox.Show(nextTruck.Status, "nextTruck.Status= "); } } catch (ChangeConflictException e) { /* foreach (ObjectChangeConflict occ in cdc.ChangeConflicts) * { * occ.Resolve(RefreshMode.KeepChanges); * } */ } /* try * { * * cdc.SubmitChanges(ConflictMode.FailOnFirstConflict); * } * catch (Exception ex) * { * MessageBox.Show("Exception: " + ex.Message); * }*/ // mutex.ReleaseMutex(); } }