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 }