restsmodel.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "restsmodel.h"
  2. RestsModel::RestsModel(QObject *parent) : BaseModel { "rests", parent }
  3. {
  4. connect(this, &BaseModel::dataChanged, this, &RestsModel::clearCache);
  5. }
  6. float RestsModel::productRest(const QString &storeId, const QString &productId)
  7. {
  8. return findRest(storeId, productId).value("rest", 0.0).toFloat();
  9. }
  10. void RestsModel::submitRest(const QString &storeId, const QString &productId, float rest)
  11. {
  12. QVariantMap productRest = findRest(storeId, productId);
  13. productRest["rest"] = rest;
  14. submitItem(productRest);
  15. }
  16. QVariantMap RestsModel::findRest(const QString &storeId, const QString &productId)
  17. {
  18. Key restKey(storeId, productId);
  19. if (m_rests.isEmpty()) {
  20. loadCache();
  21. }
  22. return m_rests.value(restKey, { { "storeId", storeId}, { "productId", productId} });
  23. }
  24. void RestsModel::loadCache()
  25. {
  26. for (const QVariant &var : items()) {
  27. QVariantMap rest = var.toMap();
  28. m_rests[Key(rest.value("storeId").toString(), rest.value("productId").toString())] = rest;
  29. }
  30. }
  31. void RestsModel::clearCache()
  32. {
  33. m_rests.clear();
  34. }