Skip to content

Commit d9b3d3f

Browse files
committed
Fixed #807 - LOTW & eQSL upload status updated even when nothing is uploaded
1 parent e7e498d commit d9b3d3f

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

Changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ TBC - 0.46.2
55
- Fixed Bandmap truncated output despite having space (issue #779)
66
- Fixed Statistics - Anti-meridian bug on map (issue #786)
77
- Fixed Binary file in the tarballs (issue #794)
8+
- Fixed LOTW & eQSL upload status updated even when nothing is uploaded (issue #807)
89
- Fixed Statistics Dialog does not show confirmed grids
910

1011
2025/09/26 - 0.46.1

ui/UploadQSODialog.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -303,30 +303,29 @@ void UploadQSODialog::processNextUploader()
303303
&& currentTask.getServiceID() != QRZCOMID
304304
&& currentTask.getServiceID() != WAVELOGID )
305305
{
306-
const QString &statusField = currentTask.getDBUploadStatusFieldName();
307-
const QString &dateField = currentTask.getDBUploadDateFieldName();
308-
QString statement = QString("UPDATE contacts "
309-
"SET %1='Y', %2 = strftime('%Y-%m-%d',DATETIME('now', 'utc')) ").arg(statusField,
310-
dateField);
311306

312-
statement.append("WHERE " + currentTask.getWhereClause());
307+
const QString statusField = currentTask.getDBUploadStatusFieldName();
308+
const QString dateField = currentTask.getDBUploadDateFieldName();
309+
const QList<qulonglong> idsToUpdate = currentTask.getQSOIDs();
313310

314-
if ( !ui->myCallsignCombo->currentText().isEmpty() )
315-
statement.append(" AND COALESCE(NULLIF(TRIM(station_callsign), ''), TRIM(operator)) = '" + ui->myCallsignCombo->currentText().trimmed() + "'");
311+
QStringList idStrings;
316312

317-
if ( !ui->myGridCombo->currentText().isEmpty() && ui->myGridCombo->currentIndex() > 0 )
318-
statement.append(" AND my_gridsquare = '" + ui->myGridCombo->currentText().trimmed() + "'");
313+
for ( qulonglong id : idsToUpdate )
314+
idStrings.append(QString::number(id));
319315

320-
qCDebug(runtime) << statement;
316+
QString statement = QString("UPDATE contacts "
317+
"SET %1='Y', %2 = strftime('%Y-%m-%d',DATETIME('now', 'utc')) "
318+
"WHERE id IN (%3) ").arg(statusField, dateField, idStrings.join(","));
321319

322-
QSqlQuery updateQuery(statement);
320+
QSqlQuery updateQuery;
321+
updateQuery.prepare(statement);
323322

324323
if ( !updateQuery.exec() )
325324
qWarning() << "Cannot update" << currentTask.getServiceName()
326325
<< "Upload status in DB" << updateQuery.lastError().text();
327326
else
328327
currentTask.updateAllDBFieldValue(statusField, "Y",
329-
dateField, "2025-05-13");
328+
dateField, QDateTime::currentDateTimeUtc().date().toString(Qt::ISODate));
330329
}
331330
processNextUploader();
332331
});
@@ -480,7 +479,6 @@ void UploadQSODialog::executeQuery()
480479
const QString serviceSelectCondition = whereTemplate.arg(task.getDBUploadStatusFieldName(),
481480
uploadStatuses.join(","),
482481
addlCondition);
483-
task.setWhereClause(serviceSelectCondition);
484482
serviceSelectConditions << serviceSelectCondition;
485483
serviceStatusColumns << statusColumnTemplate.arg(serviceSelectCondition,
486484
QString::number(task.getServiceID()));

ui/UploadQSODialog.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ private slots:
7373
enableWidget->setToolTip((isActivable) ? ""
7474
: tr("Service is not configured properly.<p> Please, use <b>Settings</b> dialog to configure it.</p>"));
7575
};
76-
~UploadTask() {if ( uploader ) uploader->deleteLater();};
76+
77+
~UploadTask() {};
7778

7879
ServiceID getServiceID() const {return serviceID;};
79-
void addQSO(QSharedPointer<QSqlRecord> record) {qsoRefs.append(record);};
80-
void clearEnqueuedQSOs() {qsoRefs.clear();};
80+
void addQSO(QSharedPointer<QSqlRecord> record) {qsoRefs.append(record); qsoIds.append(record->value("id").toULongLong());};
81+
void clearEnqueuedQSOs() {qsoRefs.clear(); qsoIds.clear();};
8182
const QList<QSqlRecord> getQSOList() const
8283
{
8384
QList<QSqlRecord> retList;
@@ -89,14 +90,12 @@ private slots:
8990
}
9091
return retList;
9192
};
92-
93+
const QList<qulonglong>& getQSOIDs() const { return qsoIds; };
9394
bool isChecked() {return (controElement) ? controElement->isChecked() : false;};
9495
const QString& getDBUploadStatusFieldName() const {return dbUploadStatusFieldName;};
9596
const QString& getDBUploadDateFieldName() const {return dbUploadDateFieldName;};
9697
const QString& getServiceName() const {return serviceName;};
9798
GenericQSOUploader *getUploader() const {return uploader;};
98-
void setWhereClause(const QString &clause) {finalWhereClause = clause;};
99-
const QString& getWhereClause() const {return finalWhereClause;};
10099
void updateQSONumberLabel() {qsoNumberLabel->setText((isChecked()) ? "(" + QString::number(qsoRefs.size()) + ")"
101100
: "");};
102101
bool isQSOListEmpty() const {return qsoRefs.isEmpty(); };
@@ -120,10 +119,10 @@ private slots:
120119
QString serviceName;
121120
GenericQSOUploader *uploader;
122121
QList<QWeakPointer<QSqlRecord>> qsoRefs;
122+
QList<qulonglong> qsoIds;
123123
QCheckBox *controElement;
124124
QString dbUploadStatusFieldName;
125125
QString dbUploadDateFieldName;
126-
QString finalWhereClause;
127126
QLabel *qsoNumberLabel;
128127
};
129128

0 commit comments

Comments
 (0)