Rests model was added
This commit is contained in:
@@ -36,9 +36,18 @@ QVariant BaseModel::itemProperty(const QString &itemId, const QString &propertyN
|
||||
return item(itemId).value(propertyName, def);
|
||||
}
|
||||
|
||||
void BaseModel::addItem(const QVariantMap &item) const
|
||||
void BaseModel::submitItem(const QVariantMap &item) const
|
||||
{
|
||||
service()->sendCommand(entity(), BeerService::ActionAdd, item);
|
||||
QString itemId = item.value("id").toString();
|
||||
if (itemId.isEmpty()) {
|
||||
service()->sendCommand(entity(), BeerService::ActionAdd, item);
|
||||
} else {
|
||||
QVariantMap modItem = this->item(itemId);
|
||||
for (auto it = item.constBegin(); it != item.constEnd(); ++it) {
|
||||
modItem[it.key()] = it.value();
|
||||
}
|
||||
service()->sendCommand(entity(), BeerService::ActionModify, modItem);
|
||||
}
|
||||
}
|
||||
|
||||
void BaseModel::deleteItem(const QString &itemId) const
|
||||
@@ -46,16 +55,6 @@ void BaseModel::deleteItem(const QString &itemId) const
|
||||
service()->sendCommand(entity(), BeerService::ActionDelete, QVariantMap { { "id", itemId } });
|
||||
}
|
||||
|
||||
void BaseModel::modifyItem(const QString &itemId, const QVariantMap &properties) const
|
||||
{
|
||||
QVariantMap item = this->item(itemId);
|
||||
for (auto it = properties.constBegin(); it != properties.constEnd(); ++it) {
|
||||
item[it.key()] = it.value();
|
||||
}
|
||||
|
||||
service()->sendCommand(entity(), BeerService::ActionModify, item);
|
||||
}
|
||||
|
||||
void BaseModel::created(const QVariant &data)
|
||||
{
|
||||
modified(data);
|
||||
|
||||
@@ -21,9 +21,8 @@ public:
|
||||
QVariantMap item(const QString &itemId) const;
|
||||
QVariant itemProperty(const QString &itemId, const QString &propertyName, const QVariant &def = QVariant{}) const;
|
||||
|
||||
void addItem(const QVariantMap &item) const;
|
||||
void submitItem(const QVariantMap &item) const;
|
||||
void deleteItem(const QString &itemId) const;
|
||||
void modifyItem(const QString &itemId, const QVariantMap &properties) const;
|
||||
|
||||
public slots:
|
||||
void created(const QVariant &data);
|
||||
|
||||
40
models/restsmodel.cpp
Normal file
40
models/restsmodel.cpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#include "restsmodel.h"
|
||||
|
||||
RestsModel::RestsModel(QObject *parent) : BaseModel { "rests", parent }
|
||||
{
|
||||
connect(this, &BaseModel::dataChanged, this, &RestsModel::clearCache);
|
||||
}
|
||||
|
||||
float RestsModel::productRest(const QString &storeId, const QString &productId)
|
||||
{
|
||||
return findRest(storeId, productId).value("rest", 0.0).toFloat();
|
||||
}
|
||||
|
||||
void RestsModel::submitRest(const QString &storeId, const QString &productId, float rest)
|
||||
{
|
||||
QVariantMap productRest = findRest(storeId, productId);
|
||||
productRest["rest"] = rest;
|
||||
submitItem(productRest);
|
||||
}
|
||||
|
||||
QVariantMap RestsModel::findRest(const QString &storeId, const QString &productId)
|
||||
{
|
||||
Key restKey(storeId, productId);
|
||||
if (m_rests.isEmpty()) {
|
||||
loadCache();
|
||||
}
|
||||
return m_rests.value(restKey, { { "storeId", storeId}, { "productId", productId} });
|
||||
}
|
||||
|
||||
void RestsModel::loadCache()
|
||||
{
|
||||
for (const QVariant &var : items()) {
|
||||
QVariantMap rest = var.toMap();
|
||||
m_rests[Key(rest.value("storeId").toString(), rest.value("productId").toString())] = rest;
|
||||
}
|
||||
}
|
||||
|
||||
void RestsModel::clearCache()
|
||||
{
|
||||
m_rests.clear();
|
||||
}
|
||||
23
models/restsmodel.h
Normal file
23
models/restsmodel.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef RESTSMODEL_H
|
||||
#define RESTSMODEL_H
|
||||
|
||||
#include "models/basemodel.h"
|
||||
|
||||
class RestsModel : public BaseModel
|
||||
{
|
||||
public:
|
||||
explicit RestsModel(QObject *parent = nullptr);
|
||||
|
||||
float productRest(const QString &storeId, const QString &productId);
|
||||
void submitRest(const QString &storeId, const QString &productId, float rest);
|
||||
|
||||
private:
|
||||
QVariantMap findRest(const QString &storeId, const QString &productId);
|
||||
void loadCache();
|
||||
void clearCache();
|
||||
|
||||
using Key = QPair<QString, QString>;
|
||||
QMap<Key, QVariantMap> m_rests;
|
||||
};
|
||||
|
||||
#endif // RESTSMODEL_H
|
||||
Reference in New Issue
Block a user