#include "sale.h" #include void Sale::addArticle(Article* articlePtr) { articlePtr->setSale(this); articles_.push_back(articlePtr); } ArticlesVec& Sale::getArticles() { return articles_; } void Sale::removeArticle(const Article* articlePtr) { /* auto it = std::find_if(articles_.begin(), articles_.end(), [&articlePtr](auto art) { return art.get() == articlePtr; }); */ auto it = std::find(articles_.begin(), articles_.end(), articlePtr); if (it != articles_.end()) { (*it)->setSale(nullptr); (*it)->setState( Article::State::DELETE); // since we only have ad-hoc articles, that have all been sold articles_.erase(it); } } int Sale::sumInCents() { int sum = std::accumulate(articles_.begin(), articles_.end(), 0, [](int a, const Article* b) { return a + b->getPrice(); }); return sum; } std::string Sale::sumAsString() { std::stringstream sumStream; sumStream << std::right << std::setw(12) << std::showbase << std::put_money(sumInCents(), false); return sumStream.str(); } std::string Sale::getTimestamp() { return timestamp_; } void Sale::setTimestamp(const std::string& timestamp) { timestamp_ = timestamp; }