Ejemplo n.º 1
0
        public decimal Dequeue()
        {
            decimal sum = 0;

            if (Queue.Count == 0)
            {
                return(0);
            }
            var card = Queue.Dequeue();

            if (card != null)
            {
                //задаем параметры для чека
                var check = new Check()
                {
                    SellerId   = Seller.SellerId,
                    Seller     = Seller,
                    CustomerId = card.Customer.CustomerId,
                    Customer   = card.Customer,
                    Created    = DateTime.Now
                };

                //если не модель сохраним в базу
                if (!isModel)
                {
                    db.Checks.Add(check);
                    db.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                }

                var sells = new List <Sell>();
                //теперь перебираем все элементы из корзины
                foreach (Product product in card)
                {
                    //условия, что товар есть на складе. считаем с нулем, а не с count, потому что считаем по единично. те, которых нет на складе не идут в продажу
                    if (product.Count > 0)
                    {
                        var sell = new Sell()
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        sells.Add(sell);

                        if (!isModel)
                        {
                            db.Sells.Add(sell);
                        }

                        product.Count--;
                        sum += product.Price;
                    }
                }
                check.price = sum;

                if (!isModel)
                {
                    db.SaveChanges();
                }

                checkClosed?.Invoke(this, check);
            }

            return(sum);
        }
Ejemplo n.º 2
0
        //выход из очереди
        //возвращаем сумму товара из функции очереди
        public decimal Dequeue()
        {
            decimal sum = 0;

            if (Queue.Count == 0)
            {
                return(0);
            }
            var card = Queue.Dequeue();

            if (card != null)
            {
                //создание чека
                var check = new Check()
                {
                    Seller     = Seller,
                    Customer   = card.Customer,
                    SellerId   = Seller.SellerId,
                    CustomerId = card.Customer.CustomerId,
                    Created    = DateTime.Now
                };

                if (!IsModel)
                {
                    db.Checks.Add(check);
                    db.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                }
                var sells = new List <Sell>();
                //проходка по всем продуктам
                foreach (Product product in card)
                {
                    //если продукта на складе нет ничего не продаем
                    if (product.Count > 0)
                    {
                        //создание продажи
                        var sell = new Sell()
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        //транзакция -группа операций действий обьединеным логическим принципом,если сбой откатить до предыдущего(например банкомат 1.списать деньги со счета
                        //2.выдать наличные если списать не удалось возвращаем на предыдущее состояние как будто деньги не выдавали ,или сли нет необходимых купюр возвращаем состояние на предыдущее)
                        //добавлю позже!!!!
                        sells.Add(sell);

                        if (!IsModel)
                        {
                            //сохранение в локальное хранилище
                            db.Sells.Add(sell);
                        }
                        product.Count--;
                        sum += product.Price;
                    }
                }
                check.Price = sum;
                if (!IsModel)
                {
                    //засунуть в базу
                    db.SaveChanges();
                }
                //рассыылка о событии всем подписчикамоооо
                CheckClosed?.Invoke(this, check);
                //if (CheckClosed != null)
                //{
                //    CheckClosed(this, check);
                //}
            }
            return(sum);
        }