finish current sale

This commit is contained in:
Martin Brodbeck 2018-07-21 21:18:22 +02:00
parent 8b534e1229
commit 150ce946d1
5 changed files with 81 additions and 11 deletions

View file

@ -45,10 +45,8 @@ void Marketplace::sortSellers() { std::sort(sellers_.begin(), sellers_.end()); }
Seller* Marketplace::findSellerWithSellerNo(int sellerNo)
{
auto iter =
std::find_if(sellers_.begin(), sellers_.end(), [sellerNo](const auto& a) {
return a->getSellerNo() == sellerNo;
});
auto iter = std::find_if(sellers_.begin(), sellers_.end(),
[sellerNo](const auto& a) { return a->getSellerNo() == sellerNo; });
if (iter == sellers_.end())
return nullptr;
return (*iter).get();
@ -57,4 +55,21 @@ Seller* Marketplace::findSellerWithSellerNo(int sellerNo)
void Marketplace::addArticleToBasket(std::unique_ptr<Article> article)
{
basket_.push_back(std::move(article));
}
size_t Marketplace::basketSize() { return basket_.size(); }
void Marketplace::finishCurrentSale()
{
if (basket_.size() == 0)
return;
auto sale = std::make_unique<Sale>();
for (auto iter = basket_.begin(); iter != basket_.end(); ++iter) {
sale->addArticle((*iter).get());
(*iter)->getSeller()->addArticle(std::move(*iter));
}
sales_.push_back(std::move(sale));
}

View file

@ -21,6 +21,7 @@ class Marketplace
{
public:
Marketplace();
void storeToDb(bool onlyDelete = false);
void loadFromDb();
SellersVec& getSellers();
@ -29,6 +30,8 @@ class Marketplace
void sortSellers();
Seller* findSellerWithSellerNo(int sellerNo);
void addArticleToBasket(std::unique_ptr<Article> article);
size_t basketSize();
void finishCurrentSale();
private:
SellersVec sellers_;