Пример #1
0
        private void FinishOrder(int orderId, int simulationId)
        {
            var order     = _context.Orders.Single(a => a.Id == orderId);
            var simConfig = _context.SimulationConfigurations.Single(a => a.Id == simulationId);

            if (order.State == State.Finished)
            {
                return;
            }
            order.State         = State.Finished;
            order.FinishingTime = simConfig.Time;
            _context.Update(order);
            _context.SaveChanges();
            _messageHub.ProcessingUpdate(simulationId, ++itemcount, SimulationType.Central, simConfig.OrderQuantity);
            _messageHub.SendToAllClients("Order with Id " + order.Id + " finished!");
            foreach (var singleOrderPart in order.OrderParts)
            {
                var stock = _context.Stocks.Single(a => a.ArticleForeignKey == singleOrderPart.ArticleId);
                stock.Current -= singleOrderPart.Quantity;
                _context.StockExchanges.Add(new StockExchange()
                {
                    ExchangeType   = ExchangeType.Withdrawal,
                    Quantity       = singleOrderPart.Quantity,
                    StockId        = stock.Id,
                    RequiredOnTime = order.DueTime,
                    Time           = _context.SimulationConfigurations.Single(a => a.Id == simulationId).Time
                });
                _context.Update(stock);
            }
            _context.SaveChanges();
        }
Пример #2
0
        private void OrderProvided(InstructionSet instructionSet)
        {
            if (!(instructionSet.ObjectToProcess is RequestItem requestItem))
            {
                throw new InvalidCastException(this.Name + " Cast to RequestItem Failed");
            }

            var order = _productionDomainContext.Orders
                        .Include(x => x.OrderParts)
                        .Single(x => x.Id == _productionDomainContext.OrderParts.Single(s => s.Id == requestItem.OrderId).OrderId);

            order.FinishingTime = (int)Context.TimePeriod;
            order.State         = State.Finished;
            _productionDomainContext.SaveChanges();
            _messageHub.SendToAllClients("Oder No:" + order.Id + " finished at " + Context.TimePeriod);
            _messageHub.ProcessingUpdate(_simConfig.Id, orderCount++, SimulationType.Decentral, _simConfig.OrderQuantity);
        }