1 /*
2 * Copyright 2013-2015 Christian Dávid <christian-david@web.de>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation; either version 2 of
7 * the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #include "onlinejob.h"
19 #include "onlinejob_p.h"
20
21 #include "mymoneyfile.h"
22 #include "mymoneyaccount.h"
23
24 #include "tasks/onlinetask.h"
25 #include "onlinejobadministration.h"
26
onlineJob()27 onlineJob::onlineJob() :
28 MyMoneyObject(*new onlineJobPrivate),
29 m_task(0)
30 {
31 Q_D(onlineJob);
32 d->m_jobSend = QDateTime();
33 d->m_jobBankAnswerDate = QDateTime();
34 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
35 d->m_messageList = QList<onlineJobMessage>();
36 d->m_locked = false;
37 }
38
onlineJob(const QString & id)39 onlineJob::onlineJob(const QString &id) :
40 MyMoneyObject(*new onlineJobPrivate, id),
41 m_task(nullptr)
42 {
43 }
44
onlineJob(onlineTask * onlinetask,const QString & id)45 onlineJob::onlineJob(onlineTask* onlinetask, const QString &id) :
46 MyMoneyObject(*new onlineJobPrivate, id),
47 m_task(onlinetask)
48 {
49 Q_D(onlineJob);
50 d->m_jobSend = QDateTime();
51 d->m_jobBankAnswerDate = QDateTime();
52 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
53 d->m_messageList = QList<onlineJobMessage>();
54 d->m_locked = false;
55 }
56
onlineJob(onlineTask * onlinetask)57 onlineJob::onlineJob(onlineTask* onlinetask) :
58 MyMoneyObject(*new onlineJobPrivate, QString()),
59 m_task(onlinetask)
60 {
61 Q_D(onlineJob);
62 d->m_jobSend = QDateTime();
63 d->m_jobBankAnswerDate = QDateTime();
64 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
65 d->m_messageList = QList<onlineJobMessage>();
66 d->m_locked = false;
67 }
68
onlineJob(onlineJob const & other)69 onlineJob::onlineJob(onlineJob const& other) :
70 MyMoneyObject(*new onlineJobPrivate(*other.d_func()), other.id()),
71 m_task(0)
72 {
73 copyPointerFromOtherJob(other);
74 }
75
onlineJob(const QString & id,const onlineJob & other)76 onlineJob::onlineJob(const QString &id, const onlineJob& other) :
77 MyMoneyObject(*new onlineJobPrivate(*other.d_func()), id),
78 m_task()
79 {
80 Q_D(onlineJob);
81 d->m_jobSend = QDateTime();
82 d->m_jobBankAnswerDate = QDateTime();
83 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
84 d->m_messageList = QList<onlineJobMessage>();
85 d->m_locked = false;
86 copyPointerFromOtherJob(other);
87 }
88
copyPointerFromOtherJob(const onlineJob & other)89 void onlineJob::copyPointerFromOtherJob(const onlineJob &other)
90 {
91 if (!other.isNull())
92 m_task = other.constTask()->clone();
93 }
94
reset()95 void onlineJob::reset()
96 {
97 Q_D(onlineJob);
98 clearId();
99 d->m_jobSend = QDateTime();
100 d->m_jobBankAnswerDate = QDateTime();
101 d->m_jobBankAnswerState = eMyMoney::OnlineJob::sendingState::noBankAnswer;
102 d->m_locked = false;
103 }
104
~onlineJob()105 onlineJob::~onlineJob()
106 {
107 delete m_task;
108 }
109
setTask(onlineTask * _task)110 void onlineJob::setTask(onlineTask *_task)
111 {
112 m_task = _task;
113 }
114
task()115 onlineTask* onlineJob::task()
116 {
117 if (m_task == 0)
118 throw EMPTYTASKEXCEPTION;
119 return m_task;
120 }
121
task() const122 const onlineTask* onlineJob::task() const
123 {
124 if (m_task == 0)
125 throw EMPTYTASKEXCEPTION;
126 return m_task;
127 }
128
constTask() const129 const onlineTask* onlineJob::constTask() const
130 {
131 return task();
132 }
133
134
taskIid() const135 QString onlineJob::taskIid() const
136 {
137 try {
138 return task()->taskName();
139 } catch (const emptyTask&) {
140 }
141 return QString();
142 }
143
responsibleAccount() const144 QString onlineJob::responsibleAccount() const
145 {
146 try {
147 return task()->responsibleAccount();
148 } catch (const emptyTask&) {
149 }
150 return QString();
151 }
152
responsibleMyMoneyAccount() const153 MyMoneyAccount onlineJob::responsibleMyMoneyAccount() const
154 {
155 QString accountId = responsibleAccount();
156 if (!accountId.isEmpty())
157 return MyMoneyFile::instance()->account(accountId);
158
159 return MyMoneyAccount();
160 }
161
setLock(bool enable)162 bool onlineJob::setLock(bool enable)
163 {
164 Q_D(onlineJob);
165 d->m_locked = enable;
166 return true;
167 }
168
isLocked() const169 bool onlineJob::isLocked() const
170 {
171 Q_D(const onlineJob);
172 return d->m_locked;
173 }
174
isEditable() const175 bool onlineJob::isEditable() const
176 {
177 Q_D(const onlineJob);
178 return (!isLocked() && sendDate().isNull() && (d->m_jobBankAnswerState == eMyMoney::OnlineJob::sendingState::noBankAnswer || d->m_jobBankAnswerState == eMyMoney::OnlineJob::sendingState::sendingError));
179 }
180
isNull() const181 bool onlineJob::isNull() const
182 {
183 return (m_task == 0);
184 }
185
setJobSend(const QDateTime & dateTime)186 void onlineJob::setJobSend(const QDateTime &dateTime)
187 {
188 Q_D(onlineJob);
189 d->m_jobSend = dateTime;
190 }
191
setJobSend()192 void onlineJob::setJobSend()
193 {
194 setJobSend(QDateTime::currentDateTime());
195 }
196
setBankAnswer(const eMyMoney::OnlineJob::sendingState state,const QDateTime & dateTime)197 void onlineJob::setBankAnswer(const eMyMoney::OnlineJob::sendingState state, const QDateTime &dateTime)
198 {
199 Q_D(onlineJob);
200 d->m_jobBankAnswerState = state;
201 d->m_jobBankAnswerDate = dateTime;
202 }
203
setBankAnswer(const eMyMoney::OnlineJob::sendingState state)204 void onlineJob::setBankAnswer(const eMyMoney::OnlineJob::sendingState state)
205 {
206 setBankAnswer(state, QDateTime::currentDateTime());
207 }
208
bankAnswerDate() const209 QDateTime onlineJob::bankAnswerDate() const
210 {
211 Q_D(const onlineJob);
212 return d->m_jobBankAnswerDate;
213 }
214
bankAnswerState() const215 eMyMoney::OnlineJob::sendingState onlineJob::bankAnswerState() const
216 {
217 Q_D(const onlineJob);
218 return d->m_jobBankAnswerState;
219 }
220
addJobMessage(const onlineJobMessage & message)221 void onlineJob::addJobMessage(const onlineJobMessage& message)
222 {
223 Q_D(onlineJob);
224 d->m_messageList.append(message);
225 }
226
addJobMessage(const eMyMoney::OnlineJob::MessageType & type,const QString & sender,const QString & message,const QString & errorCode,const QDateTime & timestamp)227 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message, const QString& errorCode, const QDateTime& timestamp)
228 {
229 Q_D(onlineJob);
230 onlineJobMessage logMessage(type, sender, message, timestamp);
231 logMessage.setSenderErrorCode(errorCode);
232 d->m_messageList.append(logMessage);
233 }
234
addJobMessage(const eMyMoney::OnlineJob::MessageType & type,const QString & sender,const QString & message,const QString & errorCode)235 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message, const QString& errorCode)
236 {
237 addJobMessage(type, sender, message, errorCode, QDateTime::currentDateTime());
238 }
239
addJobMessage(const eMyMoney::OnlineJob::MessageType & type,const QString & sender,const QString & message)240 void onlineJob::addJobMessage(const eMyMoney::OnlineJob::MessageType& type, const QString& sender, const QString& message)
241 {
242 addJobMessage(type, sender, message, QString(), QDateTime::currentDateTime());
243
244 }
245
jobMessageList() const246 QList<onlineJobMessage> onlineJob::jobMessageList() const
247 {
248 Q_D(const onlineJob);
249 return d->m_messageList;
250 }
251
clearJobMessageList()252 void onlineJob::clearJobMessageList()
253 {
254 Q_D(onlineJob);
255 d->m_messageList = QList<onlineJobMessage>();
256 }
257
isValid() const258 bool onlineJob::isValid() const
259 {
260 if (m_task != 0)
261 return m_task->isValid();
262 return false;
263 }
264
sendDate() const265 QDateTime onlineJob::sendDate() const
266 {
267 Q_D(const onlineJob);
268 return d->m_jobSend;
269 }
270
hasReferenceTo(const QString & id) const271 bool onlineJob::hasReferenceTo(const QString& id) const
272 {
273 if (m_task != 0)
274 return m_task->hasReferenceTo(id);
275 return false;
276 }
277