Exemplo n.º 1
0
        /// <summary>
        /// Добавление материала на конвейер для транспортировки
        /// </summary>
        /// <param name="material"></param>
        async public void Deliver(List <Material> material, Delivered ondelivered)
        {
            Status = Status.Delivering;
            if (material != null)
            {
                // Расчитать время, необходимое на доставку материала до конца конвейера по формуле T=S/V
                // Запусить метод с задержкой на указанное время и передать ему материал, который требуется доставить
                // и внешний метод обратного вызова, который требуется вызвать при завершении доставки материала

                /* Добавление материала на конвейер:
                 *      - Найти следующий свободный UID для материала на ленте
                 *      - Добавить в словарь материал и его UID
                 *      - вызвать метод доставки передав ему UID материала на ленте
                 */

                ushort uid = GetNextUID();
                Material.Add(uid, material);
                MaterialCount = Material.Count;

                await OnDelivered(uid, ondelivered);
            }
            else
            {
                logger.Error($"Материал для загрузки на конвейер {ConveyorId} не может быть NULL");
                throw new ArgumentNullException($"Материал для загрузки на конвейер {ConveyorId} не может быть NULL");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Метод, осуществляет доставку материала до конца конвейера и вызывает внешний метод при завершении доставки
        /// </summary>
        private async Task OnDelivered(ushort uid, Delivered delivered)
        {
            if (Speed == 0)
            {
                logger.Error($"Не установлена скорость перемещения для конвейера {ConveyorId}");
                throw new DivideByZeroException($"Не установлена скорость перемещения для конвейера {ConveyorId}");
            }

            List <Material> material = new List <Material>();

            foreach (KeyValuePair <ushort, List <Material> > _material in Material)
            {
                if (_material.Key == uid)
                {
                    material = _material.Value;
                    break;
                }
            }

            double delay = (Math.Round(Length / Speed, 0)) * 1000;
            await Task.Delay(TimeSpan.FromMilliseconds(delay));

            delivered?.Invoke(material);

            Material.Remove(uid);
            MaterialCount = Material.Count;
            Status        = Status.Delivered;
        }
Exemplo n.º 3
0
 public void MarkAsDelivered()
 {
     if (_promise.TrySetResult(0))
     {
         Delivered?.Invoke(this, EventArgs.Empty);
     }
 }
Exemplo n.º 4
0
        public void AddDelivered(DadTupleId upstreamId)
        {
            Debug.Assert(!Delivered.Contains(upstreamId));

            Delivered.Add(upstreamId);
            // TODO: remove from shared?
        }
Exemplo n.º 5
0
        public void ToStorableEvent_uses_EventStreamName_property_if_present_on_non_domain_event_classes()
        {
            var e = new Delivered
            {
                EventStreamName = Any.Word()
            };

            e.ToStorableEvent().StreamName.Should().Be(e.EventStreamName);
        }
Exemplo n.º 6
0
 public GamePlayEvents()
 {
     JobCancelled  = new Cancelled();
     JobDelivered  = new Delivered();
     FinedEvent    = new Fined();
     TollgateEvent = new Tollgate();
     TrainEvent    = new Transport();
     FerryEvent    = new Transport();
 }
Exemplo n.º 7
0
        public void OnDelivered()
        {
            if (notified)
            {
                throw new InvalidOperationException("this token as already been notified");
            }
            notified = true;

            Delivered?.Invoke();
        }
Exemplo n.º 8
0
        public void SaveProcessedTuples(DadTupleId upstreamId, List <DadTuple> processedTuples)
        {
            Debug.Assert(!Processed.ContainsKey(upstreamId));
            Debug.Assert(!Delivered.Contains(upstreamId));

            foreach (var processedTuple in processedTuples)
            {
                Debug.Assert(!Deleted.Contains(processedTuple.Id));
            }

            Processed.Add(upstreamId, processedTuples);
            // TODO: remove from shared?
        }
Exemplo n.º 9
0
        public override void AddInnerXML(XElement elemMessage)
        {
            if (Delivered > DateTime.MinValue)
            {
                elemMessage.Add(new XElement("delay", new XAttribute("stamp", Delivered.ToString()), new XAttribute("from", From), new XAttribute("xmlns", "urn:xmpp:delay")));
            }
            if ((InnerXML != null) && (InnerXML.Length > 0))
            {
                elemMessage.Add(XElement.Parse(InnerXML));
            }

            base.AddInnerXML(elemMessage);
        }
Exemplo n.º 10
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = EventId?.GetHashCode() ?? 0;
         hashCode = (hashCode * 397) ^ (BeaconId?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (ActionTime?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (Location?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ Trigger;
         hashCode = (hashCode * 397) ^ Delivered.GetHashCode();
         hashCode = (hashCode * 397) ^ Background.GetHashCode();
         return(hashCode);
     }
 }
Exemplo n.º 11
0
        internal void Notify(bool delivered)
        {
            if (notified)
            {
                throw new InvalidOperationException("this token as already been notified");
            }
            notified = true;

            if (delivered)
            {
                Delivered.Invoke();
            }
            else
            {
                Lost.Invoke();
            }
        }
        private void ExecuteAccept()
        {
            if (Delivered.Count > 0 && Delivered.First().ProductId != 0)
            {
                try
                {
                    Date = Date.Date;
                    Date = Date.AddHours(Time.Hour);
                    Date = Date.AddMinutes(Time.Minute);
                    if (Date > DateTime.Now)
                    {
                        Date = DateTime.Now;
                    }
                    CreatedSupply.Date = Date;
                    CreatedSupply.DeliveredToWareHouse = Delivered;

                    using (ProductRepository productRepository = new ProductRepository())
                    {
                        foreach (var delivered in Delivered)
                        {
                            Product deliveredProduct = productRepository.GetById(delivered.ProductId);
                            deliveredProduct.Amount += delivered.Amount;
                            productRepository.SaveChanges();
                        }
                    }

                    SupplyRepository.Add(CreatedSupply);
                    SupplyRepository.SaveChanges();
                    (View.Owner.DataContext as SupplyViewModel).Update();
                    View.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("Непредвиденная ошибка");
                }
            }
            else
            {
                MessageBox.Show("Таблица не может быть пустой или содержать нулевые значения");
            }
        }
Exemplo n.º 13
0
        public virtual int _GetUniqueIdentifier()
        {
            var hashCode = 399326290;

            hashCode = hashCode * -1521134295 + (Id?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (TransactionDateOccured?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (Status?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (Shipped.GetHashCode());
            hashCode = hashCode * -1521134295 + (Invoiced.GetHashCode());
            hashCode = hashCode * -1521134295 + (ShippedDateOccured?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (InvoicedDateOccured?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (Cancelled.GetHashCode());
            hashCode = hashCode * -1521134295 + (InTransit.GetHashCode());
            hashCode = hashCode * -1521134295 + (Picked.GetHashCode());
            hashCode = hashCode * -1521134295 + (PaymentStatus.GetHashCode());
            hashCode = hashCode * -1521134295 + (InitialOrderDate?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (FinalOrderDate?.GetHashCode() ?? 0);
            hashCode = hashCode * -1521134295 + (Delivered.GetHashCode());
            hashCode = hashCode * -1521134295 + (Ordered.GetHashCode());
            return(hashCode);
        }
Exemplo n.º 14
0
        //процесс доставки заказчику
        public virtual bool Deliver(Purchase purchase, SynchronizationContext context)
        {
            bool CanDeliver = DeliveringThread == null || !DeliveringThread.IsAlive;

            //смотрим, может ли доставщик выполнить доставку
            if (CanDeliver)
            {
                lock (purchase)
                {
                    DeliveringThread = new Thread(() =>
                    {
                        Thread.Sleep(10000);
                        purchase.IsMade = true;  //теперь считаем заказ выполненным
                        context.Send(obj => Delivered?.Invoke(obj as Purchase, this), purchase);
                    });
                    DeliveringThread.Start();
                }
            }

            return(CanDeliver);
        }
Exemplo n.º 15
0
 public async void LoadDelivered()
 {
     //Triger que se ejecuta para actualizar la view model, cada vez que se muestra la ventana
     Delivered.LoadProducts();
 }
Exemplo n.º 16
0
 public override int GetHashCode() =>
 TrackingInformation.GetHashCode() ^
 Description.GetHashCode() ^
 Delivered.GetHashCode() ^
 Weight.GetHashCode() ^
 Status.GetHashCode();
Exemplo n.º 17
0
        public void Delivery()
        {
            var NextState = new Delivered();

            DefineNextState(NextState);
        }
Exemplo n.º 18
0
 public DeliveredVM(Delivered delivered) : base(delivered)
 {
 }