File indexing completed on 2024-05-19 05:07:26
0001 /* 0002 SPDX-FileCopyrightText: 2013-2015 Christian Dávid <christian-david@web.de> 0003 SPDX-FileCopyrightText: 2019 Thomas Baumgart <tbaumgart@kde.org> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include <QSet> 0008 0009 #include "onlinejob.h" 0010 #include "onlinejob_p.h" 0011 0012 #include "mymoneyfile.h" 0013 #include "mymoneyaccount.h" 0014 0015 #include "tasks/onlinetask.h" 0016 #include "onlinejobadministration.h" 0017 0018 onlineJob::onlineJob() 0019 : MyMoneyObject(*new onlineJobPrivate(this)) 0020 , m_task(nullptr) 0021 { 0022 } 0023 0024 onlineJob::onlineJob(const QString& id) 0025 : MyMoneyObject(*new onlineJobPrivate(this), id) 0026 , m_task(nullptr) 0027 { 0028 } 0029 0030 onlineJob::onlineJob(onlineTask* onlinetask, const QString& id) 0031 : MyMoneyObject(*new onlineJobPrivate(this), id) 0032 , m_task(onlinetask) 0033 { 0034 } 0035 0036 onlineJob::onlineJob(onlineTask* onlinetask) 0037 : MyMoneyObject(*new onlineJobPrivate(this), QString()) 0038 , m_task(onlinetask) 0039 { 0040 } 0041 0042 onlineJob::onlineJob(onlineJob const& other) 0043 : MyMoneyObject(*new onlineJobPrivate(this, *other.d_func()), other.id()) 0044 , m_task(nullptr) 0045 { 0046 copyPointerFromOtherJob(other); 0047 } 0048 0049 onlineJob::onlineJob(const QString& id, const onlineJob& other) 0050 : MyMoneyObject(*new onlineJobPrivate(this, *other.d_func()), id) 0051 , m_task(nullptr) 0052 { 0053 Q_D(onlineJob); 0054 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer; 0055 d->m_locked = false; 0056 d->m_jobSend = QDateTime(); 0057 d->m_jobBankAnswerDate = QDateTime(); 0058 d->m_messageList.clear(); 0059 0060 copyPointerFromOtherJob(other); 0061 } 0062 0063 void onlineJob::copyPointerFromOtherJob(const onlineJob &other) 0064 { 0065 if (!other.isNull()) 0066 m_task = other.constTask()->clone(); 0067 } 0068 0069 void onlineJob::reset() 0070 { 0071 Q_D(onlineJob); 0072 clearId(); 0073 d->m_jobSend = QDateTime(); 0074 d->m_jobBankAnswerDate = QDateTime(); 0075 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer; 0076 d->m_locked = false; 0077 } 0078 0079 onlineJob::~onlineJob() 0080 { 0081 delete m_task; 0082 } 0083 0084 void onlineJob::setTask(onlineTask *_task) 0085 { 0086 Q_D(onlineJob); 0087 m_task = _task; 0088 d->clearReferences(); 0089 if (m_task) { 0090 d->m_referencedObjects = m_task->referencedObjects(); 0091 } 0092 } 0093 0094 onlineTask* onlineJob::task() 0095 { 0096 if (m_task == nullptr) 0097 throw EMPTYTASKEXCEPTION; 0098 return m_task; 0099 } 0100 0101 const onlineTask* onlineJob::task() const 0102 { 0103 if (m_task == nullptr) 0104 throw EMPTYTASKEXCEPTION; 0105 return m_task; 0106 } 0107 0108 const onlineTask* onlineJob::constTask() const 0109 { 0110 return task(); 0111 } 0112 0113 0114 QString onlineJob::taskIid() const 0115 { 0116 try { 0117 return task()->taskName(); 0118 } catch (const emptyTask&) { 0119 } 0120 return QString(); 0121 } 0122 0123 QString onlineJob::purpose() const 0124 { 0125 try { 0126 return task()->purpose(); 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 == nullptr); 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.clear(); 0244 } 0245 0246 bool onlineJob::isValid() const 0247 { 0248 if (m_task != nullptr) 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 }