gradido/src/cpp/tasks/VerificationEmailResendTask.cpp

66 lines
1.7 KiB
C++

#include "VerificationEmailResendTask.h"
#include "../controller/User.h"
#include "../controller/EmailVerificationCode.h"
#include "../SingletonManager/EmailManager.h"
VerificationEmailResendTask::VerificationEmailResendTask(int userId)
: mUserId(userId)
{
}
VerificationEmailResendTask::~VerificationEmailResendTask()
{
}
int VerificationEmailResendTask::run()
{
auto user = controller::User::create();
if (1 == user->load(mUserId)) {
auto model = user->getModel();
// if email is checked, we can exit
if (model->isEmailChecked()) {
return 1;
}
auto email_verification = controller::EmailVerificationCode::load(mUserId, model::table::EMAIL_OPT_IN_REGISTER_DIRECT);
if (nullptr == email_verification) {
email_verification = controller::EmailVerificationCode::create(mUserId, model::table::EMAIL_OPT_IN_REGISTER_DIRECT);
email_verification->getModel()->insertIntoDB(false);
}
else if (email_verification->getModel()->getResendCount() > 1) {
// if email was already send maybe by another process, we can exit
return 1;
}
else {
email_verification->getModel()->addResendCountAndUpdate();
}
auto em = EmailManager::getInstance();
em->addEmail(new model::Email(email_verification, user, model::EMAIL_USER_VERIFICATION_CODE_RESEND));
}
return 0;
}
VerificationEmailResendTimerTask::VerificationEmailResendTimerTask(int userId)
: mUserId(userId)
{
}
VerificationEmailResendTimerTask::~VerificationEmailResendTimerTask()
{
}
void VerificationEmailResendTimerTask::run()
{
UniLib::controller::TaskPtr verificationResendTask(new VerificationEmailResendTask(mUserId));
verificationResendTask->scheduleTask(verificationResendTask);
}