Ulf Gebhardt ac99a7097e Add 'login_server/' from commit 'ca71af1817a801db9a108c205bc298250d498c4b'
git-subtree-dir: login_server
git-subtree-mainline: 09ebb40de21084bb10ee466429d900a5e757d349
git-subtree-split: ca71af1817a801db9a108c205bc298250d498c4b
2021-03-17 22:05:25 +01:00

109 lines
4.0 KiB
C++

#include "ElopageBuy.h"
#include "Poco/DateTimeFormatter.h"
using namespace Poco::Data::Keywords;
namespace model {
namespace table {
const static std::string g_requestFieldsNames[] = {
"product[affiliate_program_id]", "publisher[id]", "order_id", "product_id",
"product[price]", "payer[email]", "publisher[email]", "payment_state", "success_date", "event" };
ElopageBuy::ElopageBuy(const Poco::Net::NameValueCollection& elopage_webhook_requestData)
: mPayed(false)
{
memset(mIDs, 0, ELOPAGE_BUY_MAX * sizeof(Poco::Int32));
for (int i = 0; i < 5; i++) {
std::string temp = elopage_webhook_requestData.get(g_requestFieldsNames[i], "0");
//printf("get: %s for field: %s (%d)\n", temp.data(), g_requestFieldsNames[i].data(), i);
try {
if (i == 4) {
mIDs[i + 1] = static_cast<Poco::Int32>(round(stof(temp) * 100.0f));
}
else {
mIDs[i + 1] = stoul(temp);
}
}
catch (const std::invalid_argument& ia) { addError(new ParamError("ElopageBuy", "parse string to number, invalid argument", ia.what())); }
catch (const std::out_of_range& oor) { addError(new ParamError("ElopageBuy", "parse string to number, Out of Range error", oor.what())); }
catch (const std::logic_error & ler) { addError(new ParamError("ElopageBuy", "parse string to number, Logical error", ler.what())); }
catch (...) { addError(new Error("ElopageBuy", "parse string to number, unknown error")); }
}
mPayerEmail = elopage_webhook_requestData.get(g_requestFieldsNames[5], "");
mPublisherEmail = elopage_webhook_requestData.get(g_requestFieldsNames[6], "");
std::string payed = elopage_webhook_requestData.get(g_requestFieldsNames[7], "");
// payment_state = paid
if (payed == "paid") mPayed = true;
mSuccessDate = parseElopageDate(elopage_webhook_requestData.get(g_requestFieldsNames[8], ""));
mEvent = elopage_webhook_requestData.get(g_requestFieldsNames[9], "");
}
ElopageBuy::~ElopageBuy()
{
}
/*
ELOPAGE_BUY_AFFILIATE_PROGRAM_ID,
ELOPAGE_BUY_PUBLISHER_ID,
ELOPAGE_BUY_ORDER_ID,
ELOPAGE_BUY_PRODUCT_ID,
ELOPAGE_BUY_PRODUCT_PRICE
*/
Poco::Data::Statement ElopageBuy::_insertIntoDB(Poco::Data::Session session)
{
Poco::Data::Statement insert(session);
lock();
insert << "INSERT INTO " << getTableName()
<< " (affiliate_program_id, publisher_id, order_id, product_id, product_price, payer_email, publisher_email, payed, success_date, event) "
<< " VALUES(?,?,?,?,?,?,?,?,?,?)"
, bind(mIDs[ELOPAGE_BUY_AFFILIATE_PROGRAM_ID]), bind(mIDs[ELOPAGE_BUY_PUBLISHER_ID])
, bind(mIDs[ELOPAGE_BUY_ORDER_ID]), bind(mIDs[ELOPAGE_BUY_PRODUCT_ID]), bind(mIDs[ELOPAGE_BUY_PRODUCT_PRICE])
, bind(mPayerEmail), bind(mPublisherEmail), bind(mPayed), bind(mSuccessDate), bind(mEvent);
unlock();
return insert;
}
std::string ElopageBuy::toString()
{
std::stringstream ss;
ss << "affiliate program id: " << mIDs[ELOPAGE_BUY_AFFILIATE_PROGRAM_ID] << std::endl;
ss << "publisher id: " << mIDs[ELOPAGE_BUY_PUBLISHER_ID] << std::endl;
ss << "order id: " << mIDs[ELOPAGE_BUY_ORDER_ID] << std::endl;
ss << "product id: " << mIDs[ELOPAGE_BUY_PRODUCT_ID] << std::endl;
ss << "product price: " << mIDs[ELOPAGE_BUY_PRODUCT_PRICE] << std::endl;
ss << "payer email: " << mPayerEmail << std::endl;
ss << "publisher email: " << mPublisherEmail << std::endl;
ss << "payed: " << mPayed << std::endl;
ss << "success date: " << Poco::DateTimeFormatter::format(mSuccessDate, "%d.%m.%Y %H:%M:%S") << std::endl;
ss << "event: " << mEvent << std::endl;
return ss.str();
}
Poco::Data::Statement ElopageBuy::_loadFromDB(Poco::Data::Session session, const std::string& fieldName)
{
// Poco::Data::Statement select(session);
throw Poco::Exception("ElopageBuy::loadFromDB not implemented");
}
Poco::Data::Statement ElopageBuy::_loadIdFromDB(Poco::Data::Session session)
{
Poco::Data::Statement select(session);
select << "SELECT id FROM " << getTableName()
<< " where order_id = ?"
, into(mID), use(mIDs[ELOPAGE_BUY_ORDER_ID]);
return select;
}
}
}