Compare commits
5 commits
7c40ea6f97
...
2c5368c621
Author | SHA1 | Date | |
---|---|---|---|
2c5368c621 | |||
7063637ad4 | |||
6b6dddcaaa | |||
b84bc5bff0 | |||
70ce0ceb19 |
9 changed files with 36 additions and 7 deletions
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
|
|
||||||
find_package(Boost 1.62 REQUIRED)
|
find_package(Boost 1.62 COMPONENTS date_time REQUIRED)
|
||||||
find_package(SQLite3 REQUIRED)
|
find_package(SQLite3 REQUIRED)
|
||||||
|
|
||||||
#set(CORE_HEADERS
|
#set(CORE_HEADERS
|
||||||
|
@ -13,8 +13,9 @@ set(CORE_SOURCES
|
||||||
entity.cpp
|
entity.cpp
|
||||||
seller.cpp
|
seller.cpp
|
||||||
article.cpp
|
article.cpp
|
||||||
|
sale.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(core STATIC ${CORE_SOURCES})
|
add_library(core STATIC ${CORE_SOURCES})
|
||||||
target_link_libraries(core Boost::boost)
|
target_link_libraries(core Boost::boost Boost::date_time)
|
||||||
target_link_libraries(core sqlite3)
|
target_link_libraries(core sqlite3)
|
|
@ -17,3 +17,5 @@ bool Article::isSold() { return salePtr_ ? true : false; }
|
||||||
std::string Article::getDescription() { return description_; }
|
std::string Article::getDescription() { return description_; }
|
||||||
|
|
||||||
Seller* Article::getSeller() { return sellerPtr_.get(); }
|
Seller* Article::getSeller() { return sellerPtr_.get(); }
|
||||||
|
|
||||||
|
int Article::getPrice() { return price_; }
|
|
@ -9,6 +9,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Seller;
|
class Seller;
|
||||||
|
class Sale;
|
||||||
|
|
||||||
class Article : public Entity
|
class Article : public Entity
|
||||||
{
|
{
|
||||||
|
@ -24,6 +25,7 @@ class Article : public Entity
|
||||||
|
|
||||||
std::string getDescription();
|
std::string getDescription();
|
||||||
Seller* getSeller();
|
Seller* getSeller();
|
||||||
|
int getPrice();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<Seller> sellerPtr_{};
|
std::shared_ptr<Seller> sellerPtr_{};
|
||||||
|
|
|
@ -184,7 +184,7 @@ unsigned int Database::storeSellers(std::vector<Seller>& sellers)
|
||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
throw std::runtime_error(errMsg);
|
throw std::runtime_error(errMsg);
|
||||||
}
|
}
|
||||||
seller.setState(Seller::State::CLEAN);
|
seller.setState(Seller::State::OK);
|
||||||
++count;
|
++count;
|
||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
class Entity
|
class Entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class State { NEW, UPDATED, CLEAN };
|
enum class State { NEW, UPDATE, DELETE, OK };
|
||||||
|
|
||||||
virtual ~Entity() = 0;
|
virtual ~Entity() = 0;
|
||||||
const boost::uuids::uuid& getUuid() const { return uuid_; };
|
const boost::uuids::uuid& getUuid() const { return uuid_; };
|
||||||
|
|
10
src/core/sale.cpp
Normal file
10
src/core/sale.cpp
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#include "sale.h"
|
||||||
|
|
||||||
|
#include <numeric>
|
||||||
|
|
||||||
|
int Sale::sumInCents()
|
||||||
|
{
|
||||||
|
int test = std::accumulate(articles_.begin(), articles_.end(), 0,
|
||||||
|
[](int a, Article* b) { return a + b->getPrice(); });
|
||||||
|
return test;
|
||||||
|
}
|
|
@ -1,8 +1,21 @@
|
||||||
#ifndef SALE_H
|
#ifndef SALE_H
|
||||||
#define SALE_H
|
#define SALE_H
|
||||||
|
|
||||||
class Sale : public Entity {
|
#include "article.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <boost/date_time.hpp>
|
||||||
|
|
||||||
|
class Article;
|
||||||
|
|
||||||
|
class Sale : public Entity
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int sumInCents();
|
||||||
|
private:
|
||||||
|
boost::posix_time::ptime systemTime_{boost::posix_time::second_clock::local_time()};
|
||||||
|
std::vector<Article*> articles_{};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -51,6 +51,6 @@ BOOST_AUTO_TEST_CASE(seller_states)
|
||||||
std::cout << "Anzahl sellers: " << sellers.size() << "\n";
|
std::cout << "Anzahl sellers: " << sellers.size() << "\n";
|
||||||
BOOST_TEST((sellers.at(0).getState() == Entity::State::NEW));
|
BOOST_TEST((sellers.at(0).getState() == Entity::State::NEW));
|
||||||
BOOST_TEST(db.storeSellers(sellers) == 1);
|
BOOST_TEST(db.storeSellers(sellers) == 1);
|
||||||
BOOST_TEST((sellers.at(0).getState() == Entity::State::CLEAN));
|
BOOST_TEST((sellers.at(0).getState() == Entity::State::OK));
|
||||||
BOOST_TEST(db.storeSellers(sellers) == 0);
|
BOOST_TEST(db.storeSellers(sellers) == 0);
|
||||||
}
|
}
|
|
@ -35,4 +35,5 @@ BOOST_AUTO_TEST_CASE(with_article) {
|
||||||
article->setDescription("Test article");
|
article->setDescription("Test article");
|
||||||
seller.addArticle(article);
|
seller.addArticle(article);
|
||||||
BOOST_TEST(seller.getArticles().at(0)->getDescription() == "Test article");
|
BOOST_TEST(seller.getArticles().at(0)->getDescription() == "Test article");
|
||||||
|
BOOST_TEST(seller.soldArticles() == 0);
|
||||||
}
|
}
|
Loading…
Reference in a new issue