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