/// <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);
        }
        /// <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);
        }
示例#3
0
        /// <summary>
        /// Извлекаем покупателя из очереди
        /// </summary>
        public decimal Dequeue()
        {
            //Сумма продажи
            decimal summ = 0;
            var     card = Queue.Dequeue();

            if (card != null)
            {
                var check = new Check()           // создаем экземпляр чека.
                {
                    CheckId    = Seller.SellerId, //приваеваем id
                    Seller     = Seller,          // присваеыаем текущего продавца
                    Customer   = card.Customer,   // присваеваем текущего покупателя
                    CustomerId = card.Customer.CustomerId,
                    Created    = DateTime.Now     //дата создание чека
                };

                //проверка на запись в бд
                if (!IsModel)
                {
                    db.Checks.Add(check); // добавляем новую запись в бд
                    db.SaveChanges();     // cохраняем в бд
                }

                else
                {
                    check.CheckId = 0;
                }

                //вспомогательный список продаж
                var sells = new List <Sell>();


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

                        //уменьшать количество товара
                        product.Count--;
                        summ = product.Price; // запысываем сумму продажи
                        sells.Add(sell);      //записывакм текущую продажу в лист

                        //Проверка на текущий статус
                        if (!IsModel)
                        {
                            db.Sells.Add(sell); // добавляем в базу данных
                        }
                    }
                    else
                    {
                        //Товара нет в наличии
                    }
                } //конец цикла

                if (!IsModel)
                {
                    db.SaveChanges(); // сохранение в бд
                }
            }

            return(summ);
        }
示例#4
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); //возвращаем сумму в вызов
        }