File indexing completed on 2024-05-12 16:42:43

0001 /*
0002     SPDX-FileCopyrightText: 2013-2015 Christian Dávid <christian-david@web.de>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "onlinejob.h"
0007 #include "onlinejob_p.h"
0008 
0009 #include "mymoneyfile.h"
0010 #include "mymoneyaccount.h"
0011 
0012 #include "tasks/onlinetask.h"
0013 #include "onlinejobadministration.h"
0014 
0015 onlineJob::onlineJob() :
0016     MyMoneyObject(*new onlineJobPrivate),
0017     m_task(0)
0018 {
0019     Q_D(onlineJob);
0020     d->m_jobSend = QDateTime();
0021     d->m_jobBankAnswerDate = QDateTime();
0022     d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
0023     d->m_messageList = QList<onlineJobMessage>();
0024     d->m_locked = false;
0025 }
0026 
0027 onlineJob::onlineJob(const QString &id) :
0028     MyMoneyObject(*new onlineJobPrivate, id),
0029     m_task(nullptr)
0030 {
0031 }
0032 
0033 onlineJob::onlineJob(onlineTask* onlinetask, const QString &id) :
0034     MyMoneyObject(*new onlineJobPrivate, id),
0035     m_task(onlinetask)
0036 {
0037     Q_D(onlineJob);
0038     d->m_jobSend = QDateTime();
0039     d->m_jobBankAnswerDate = QDateTime();
0040     d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
0041     d->m_messageList = QList<onlineJobMessage>();
0042     d->m_locked = false;
0043 }
0044 
0045 onlineJob::onlineJob(onlineTask* onlinetask) :
0046     MyMoneyObject(*new onlineJobPrivate, QString()),
0047     m_task(onlinetask)
0048 {
0049     Q_D(onlineJob);
0050     d->m_jobSend = QDateTime();
0051     d->m_jobBankAnswerDate = QDateTime();
0052     d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
0053     d->m_messageList = QList<onlineJobMessage>();
0054     d->m_locked = false;
0055 }
0056 
0057 onlineJob::onlineJob(onlineJob const& other) :
0058     MyMoneyObject(*new onlineJobPrivate(*other.d_func()), other.id()),
0059     m_task(0)
0060 {
0061     copyPointerFromOtherJob(other);
0062 }
0063 
0064 onlineJob::onlineJob(const QString &id, const onlineJob& other) :
0065     MyMoneyObject(*new onlineJobPrivate(*other.d_func()), id),
0066     m_task()
0067 {
0068     Q_D(onlineJob);
0069     d->m_jobSend = QDateTime();
0070     d->m_jobBankAnswerDate = QDateTime();
0071     d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
0072     d->m_messageList = QList<onlineJobMessage>();
0073     d->m_locked = false;
0074     copyPointerFromOtherJob(other);
0075 }
0076 
0077 void onlineJob::copyPointerFromOtherJob(const onlineJob &other)
0078 {
0079     if (!other.isNull())
0080         m_task = other.constTask()->clone();
0081 }
0082 
0083 void onlineJob::reset()
0084 {
0085     Q_D(onlineJob);
0086     clearId();
0087     d->m_jobSend = QDateTime();
0088     d->m_jobBankAnswerDate = QDateTime();
0089     d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
0090     d->m_locked = false;
0091 }
0092 
0093 onlineJob::~onlineJob()
0094 {
0095     delete m_task;
0096 }
0097 
0098 void onlineJob::setTask(onlineTask *_task)
0099 {
0100     m_task = _task;
0101 }
0102 
0103 onlineTask* onlineJob::task()
0104 {
0105     if (m_task == 0)
0106         throw EMPTYTASKEXCEPTION;
0107     return m_task;
0108 }
0109 
0110 const onlineTask* onlineJob::task() const
0111 {
0112     if (m_task == 0)
0113         throw EMPTYTASKEXCEPTION;
0114     return m_task;
0115 }
0116 
0117 const onlineTask* onlineJob::constTask() const
0118 {
0119     return task();
0120 }
0121 
0122 
0123 QString onlineJob::taskIid() const
0124 {
0125     try {
0126         return task()->taskName();
0127     } catch (const emptyTask&) {
0128     }
0129     return QString();
0130 }
0131 
0132 QString onlineJob::responsibleAccount() const
0133 {
0134     try {
0135         return task()->responsibleAccount();
0136     } catch (const emptyTask&) {
0137     }
0138     return QString();
0139 }
0140 
0141 MyMoneyAccount onlineJob::responsibleMyMoneyAccount() const
0142 {
0143     QString accountId = responsibleAccount();
0144     if (!accountId.isEmpty())
0145         return MyMoneyFile::instance()->account(accountId);
0146 
0147     return MyMoneyAccount();
0148 }
0149 
0150 bool onlineJob::setLock(bool enable)
0151 {
0152     Q_D(onlineJob);
0153     d->m_locked = enable;
0154     return true;
0155 }
0156 
0157 bool onlineJob::isLocked() const
0158 {
0159     Q_D(const onlineJob);
0160     return d->m_locked;
0161 }
0162 
0163 bool onlineJob::isEditable() const
0164 {
0165     Q_D(const onlineJob);
0166     return (!isLocked() && sendDate().isNull() && (d->m_jobBankAnswerState == eMyMoney::OnlineJob::sendingState::noBankAnswer || d->m_jobBankAnswerState == eMyMoney::OnlineJob::sendingState::sendingError));
0167 }
0168 
0169 bool onlineJob::isNull() const
0170 {
0171     return (m_task == 0);
0172 }
0173 
0174 void onlineJob::setJobSend(const QDateTime &dateTime)
0175 {
0176     Q_D(onlineJob);
0177     d->m_jobSend = dateTime;
0178 }
0179 
0180 void onlineJob::setJobSend()
0181 {
0182     setJobSend(QDateTime::currentDateTime());
0183 }
0184 
0185 void onlineJob::setBankAnswer(const eMyMoney::OnlineJob::sendingState state, const QDateTime &dateTime)
0186 {
0187     Q_D(onlineJob);
0188     d->m_jobBankAnswerState = state;
0189     d->m_jobBankAnswerDate = dateTime;
0190 }
0191 
0192 void onlineJob::setBankAnswer(const eMyMoney::OnlineJob::sendingState state)
0193 {
0194     setBankAnswer(state, QDateTime::currentDateTime());
0195 }
0196 
0197 QDateTime onlineJob::bankAnswerDate() const
0198 {
0199     Q_D(const onlineJob);
0200     return d->m_jobBankAnswerDate;
0201 }
0202 
0203 eMyMoney::OnlineJob::sendingState onlineJob::bankAnswerState() const
0204 {
0205     Q_D(const onlineJob);
0206     return d->m_jobBankAnswerState;
0207 }
0208 
0209 void onlineJob::addJobMessage(const onlineJobMessage& message)
0210 {
0211     Q_D(onlineJob);
0212     d->m_messageList.append(message);
0213 }
0214 
0215 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message, const QString& errorCode, const QDateTime& timestamp)
0216 {
0217     Q_D(onlineJob);
0218     onlineJobMessage logMessage(type, sender, message, timestamp);
0219     logMessage.setSenderErrorCode(errorCode);
0220     d->m_messageList.append(logMessage);
0221 }
0222 
0223 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message, const QString& errorCode)
0224 {
0225     addJobMessage(type, sender, message, errorCode, QDateTime::currentDateTime());
0226 }
0227 
0228 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message)
0229 {
0230     addJobMessage(type, sender, message, QString(), QDateTime::currentDateTime());
0231 
0232 }
0233 
0234 QList<onlineJobMessage> onlineJob::jobMessageList() const
0235 {
0236     Q_D(const onlineJob);
0237     return d->m_messageList;
0238 }
0239 
0240 void onlineJob::clearJobMessageList()
0241 {
0242     Q_D(onlineJob);
0243     d->m_messageList = QList<onlineJobMessage>();
0244 }
0245 
0246 bool onlineJob::isValid() const
0247 {
0248     if (m_task != 0)
0249         return m_task->isValid();
0250     return false;
0251 }
0252 
0253 QDateTime onlineJob::sendDate() const
0254 {
0255     Q_D(const onlineJob);
0256     return d->m_jobSend;
0257 }
0258 
0259 bool onlineJob::hasReferenceTo(const QString& id) const
0260 {
0261     if (m_task != 0)
0262         return m_task->hasReferenceTo(id);
0263     return false;
0264 }