diff --git a/genericcore.cpp b/genericcore.cpp index 539e6ab..1327f67 100644 --- a/genericcore.cpp +++ b/genericcore.cpp @@ -168,6 +168,14 @@ void GenericCore::onPostRequestFailure(const QString errorString) { emit displayStatusMessage(QString("Error: %1").arg(errorString)); } +void GenericCore::onDeleteRequestSuccessful(const QByteArray responseData) { + qWarning() << "TODO: Process success response!!!"; +} + +void GenericCore::onDeleteRequestFailure(const QString errorString) { + qWarning() << "TODO: Process error response!!!"; +} + void GenericCore::setupModels() { m_mainModel = make_shared(m_modelUndoStack, this); m_sortFilterModel = make_shared(m_mainModel); @@ -231,6 +239,8 @@ void GenericCore::setupServerConfiguration() { connect(this, &GenericCore::fetchItemsFromServer, m_serverCommunicator.get(), &ServerCommunicator::fetchItems); connect(this, &GenericCore::postItemToServer, this, &GenericCore::onSendItemTriggered); + connect(this, &GenericCore::deleteItemFromServer, m_serverCommunicator.get(), + &ServerCommunicator::deleteItem); /// response connections connect(m_serverCommunicator.get(), &ServerCommunicator::itemsFetched, this, @@ -241,6 +251,10 @@ void GenericCore::setupServerConfiguration() { &GenericCore::onPostRequestSuccessful); connect(m_serverCommunicator.get(), &ServerCommunicator::postRequestFailure, this, &GenericCore::onPostRequestFailure); + connect(m_serverCommunicator.get(), &ServerCommunicator::deleteRequestSuccessful, this, + &GenericCore::onDeleteRequestSuccessful); + connect(m_serverCommunicator.get(), &ServerCommunicator::deleteRequestFailure, this, + &GenericCore::onDeleteRequestFailure); /// fetching/posting items on startup to test the communication with the server // m_serverCommunicator->fetchItems(); diff --git a/genericcore.h b/genericcore.h index 66877f9..f939692 100644 --- a/genericcore.h +++ b/genericcore.h @@ -41,11 +41,14 @@ class GenericCore : public QObject { void onItemsFetchFailure(const QString errorString); void onPostRequestSuccessful(const QByteArray responseData); void onPostRequestFailure(const QString errorString); + void onDeleteRequestSuccessful(const QByteArray responseData); + void onDeleteRequestFailure(const QString errorString); signals: void displayStatusMessage(QString message); void fetchItemsFromServer(); void postItemToServer(const QByteArray& jsonData); + void deleteItemFromServer(const QString& id); private: QUndoStack* m_modelUndoStack; diff --git a/model/tablemodel.cpp b/model/tablemodel.cpp index 0b3460f..c78bd70 100644 --- a/model/tablemodel.cpp +++ b/model/tablemodel.cpp @@ -202,7 +202,6 @@ QString TableModel::updateItemsFromJson(const QByteArray& jsonData) { QMap roles = valueList.first(); setItemData(foundIndex, roles); /// return status what happened in this function (i. e. "Created x items, updated y items.") - // return data(foundIndex, ToStringRole).toString(); return QString("Item found at row %1.").arg(foundIndex.row()); } } diff --git a/network/servercommunicator.cpp b/network/servercommunicator.cpp index a48dae1..cab273e 100644 --- a/network/servercommunicator.cpp +++ b/network/servercommunicator.cpp @@ -77,3 +77,22 @@ void ServerCommunicator::postItems(const QByteArray& jsonData) { reply->deleteLater(); }); } + +void ServerCommunicator::deleteItem(const QString& id) { + const QString deleteRoute = QString("%1/%2").arg(ROUTE_ITEMS, id); + QNetworkReply* reply = m_restManager->deleteResource(m_serviceApi->createRequest(deleteRoute)); + + QObject::connect(reply, &QNetworkReply::finished, [=]() { + if (reply->error() == QNetworkReply::NoError) { + QByteArray responseData = reply->readAll(); + const QString message = QString("DELETE successful! Response: %1").arg(responseData); + qInfo() << message; + emit deleteRequestSuccessful(responseData); + } else { + const QString message = QString("Error: %1").arg(reply->errorString()); + qDebug() << message; + emit deleteRequestFailure(message); + } + reply->deleteLater(); + }); +} diff --git a/network/servercommunicator.h b/network/servercommunicator.h index 6fdb7ba..e364b6d 100644 --- a/network/servercommunicator.h +++ b/network/servercommunicator.h @@ -19,7 +19,7 @@ class ServerCommunicator : public QObject { public slots: void fetchItems(); void postItems(const QByteArray& jsonData); - // NEXT void deleteItems(QList idList) + void deleteItem(const QString& id); signals: void urlChanged(); @@ -28,6 +28,8 @@ class ServerCommunicator : public QObject { void itemsFetchFailure(const QString errorString); void postRequestSuccessful(const QByteArray responseData); void postRequestFailure(const QString errorString); + void deleteRequestSuccessful(const QByteArray responseData); + void deleteRequestFailure(const QString errorString); private: QNetworkAccessManager m_netManager;