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); }
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); }
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); }
/// <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); }
/// <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); //возвращаем сумму в вызов }
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); }
//выход из очереди //возвращаем сумму товара из функции очереди 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); }