예제 #1
0
        public decimal Dequeue()
        {
            var cart = Queue.Dequeue();

            if (Queue.Count == 0)
            {
                return(0);
            }
            decimal sum = 0;

            if (cart != null)
            {
                var check = new Check()
                {
                    SellerId   = Seller.SellerId,
                    Seller     = Seller,
                    Customer   = cart.Customer,
                    CustomerId = cart.Customer.CustomerId,
                    Created    = DateTime.UtcNow
                };
                if (!IsModel)
                {
                    db.Checks.Add(check);
                    db.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                };
                var sells = new List <Sell>();
                foreach (Product product in cart)
                {
                    var sell = new Sell()
                    {
                        CheckId   = check.CheckId,
                        Check     = check,
                        ProductId = product.ProductId,
                        Product   = product
                    };
                    product.Count--;
                    sum += product.Price;
                    sells.Add(sell);
                }
                check.Price = sum;

                if (!IsModel)
                {
                    db.Sells.AddRange(sells);
                    db.SaveChanges();
                }

                CheckClosed?.Invoke(this, check);
            }

            return(sum);
        }
        /// <summary>
        /// Извлекаем корзину из очереди
        /// We remove the basket from the queue
        /// </summary>
        /// <returns>Количество денег за продукты в корзине. Count money at product in cart</returns>
        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)
                {
                    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);
        }
예제 #3
0
        public decimal Dequeue()
        {
            if (Queue.Count == 0)
            {
                return(0);
            }

            decimal fullPrice = 0;
            var     cart      = Queue.Dequeue();

            if (cart != null)
            {
                var check = new Check()
                {
                    SellerId   = Seller.SellerId,
                    Seller     = Seller,
                    CustomerId = cart.Customer.CustomerId,
                    Customer   = cart.Customer,
                    Created    = DateTime.Now
                };

                if (!IsModel)
                {
                    dbContext.Checks.Add(check);
                    dbContext.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                }

                var sells = new List <Sell>();

                foreach (var product in cart)
                {
                    if (product.Count > 0)
                    {
                        var sell = new Sell()
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        sells.Add(sell);
                        if (!IsModel)
                        {
                            dbContext.Sells.Add(sell);
                        }

                        product.Count--;
                        fullPrice += product.Price;
                    }
                }
                check.Price = fullPrice;
                if (!IsModel)
                {
                    dbContext.SaveChanges();
                }

                CheckClosed?.Invoke(this, check);
            }
            return(fullPrice);
        }
예제 #4
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) // достаем из корзины
                {
                    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); // генерируем событие (? - проверка на null)
            }
            return(sum);
        }
예제 #5
0
        /// <summary>
        ///     Получение суммы
        /// </summary>
        /// <returns>decimal sum</returns>
        public decimal Dequeue()
        {
            decimal sum = 0;

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

            var card = Queue.Dequeue();

            if (card == null)
            {
                return(sum);
            }
            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)
            {
                if (product.Count > 0)
                {
                    var sell = new Sell
                    {
                        CheckId    = check.CheckId,
                        Check      = check,
                        ProdeuctId = product.ProductId,
                        Product    = product
                    };
                    sells.Add(sell);

                    if (!IsModel)
                    {
                        _dB.Sells.Add(sell);
                    }
                    sum += product.Price;
                    product.Count--;
                }
            }

            check.Price = sum;

            if (!IsModel)
            {
                _dB.SaveChanges();
            }

            CheckClosed?.Invoke(this, check);

            return(sum);
        }
예제 #6
0
        /// <summary>
        /// Удаление обслуженной корзины из очереди
        /// </summary>
        /// <returns>Возвращает стоимость покупок</returns>
        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) // перебираем продукты в корзине
                {
                    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); //если продажа закрыта, вызываем событие
                ServedCustomers++;
            }

            return(sum); //возвращаем сумму в вызов
        }
예제 #7
0
        public decimal Dequeue()
        {
            decimal sum = 0;

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

            Cart cart = Queue.Dequeue();

            if (cart != null)
            {
                Check check = new Check()
                {
                    SellerId   = Seller.SellerId,
                    Seller     = Seller,
                    CustomerId = cart.Customer.CustomerId,
                    Customer   = cart.Customer,
                    Created    = DateTime.Now,
                };

                if (!isModel)
                {
                    _dbContext.Checks.Add(check);
                    _dbContext.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                }

                List <Sell> sells = new List <Sell>();

                foreach (Product product in cart)
                {
                    if (product.Count > 0)
                    {
                        Sell sell = new Sell()
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        sells.Add(sell);

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

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

                check.Price = sum;

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

                CheckClosed?.Invoke(this, check);
            }

            return(sum);
        }
예제 #8
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);
        }