| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #include "basemodel.h"
- #include "services/beerservice.h"
- BaseModel::BaseModel(const QString &entity, QObject *parent) : QObject{parent},
- m_entity(entity)
- {
- Q_ASSERT(!m_entity.isEmpty());
- m_dumpService.setEntityName(m_entity);
- m_data = m_dumpService.loadMap();
- service()->connectListener(this);
- service()->sendCommand(m_entity, BeerService::ActionGet);
- }
- BaseModel::~BaseModel()
- {
- m_dumpService.dump(m_data);
- service()->removeListener(this);
- }
- QString BaseModel::entity() const
- {
- return m_entity;
- }
- QVariantList BaseModel::items() const
- {
- return m_data.values();
- }
- QVariantMap BaseModel::item(const QString &itemId) const
- {
- return m_data.value(itemId).toMap();
- }
- QVariant BaseModel::itemProperty(const QString &itemId, const QString &propertyName, const QVariant &def) const
- {
- return item(itemId).value(propertyName, def);
- }
- void BaseModel::submitItem(const QVariantMap &item) const
- {
- 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
- {
- service()->sendCommand(entity(), BeerService::ActionDelete, QVariantMap { { "id", itemId } });
- }
- void BaseModel::created(const QVariant &data)
- {
- modified(data);
- }
- void BaseModel::modified(const QVariant &data)
- {
- QVariantMap d = data.toMap();
- m_data[d.value("id").toString()] = d;
- emit dataChanged();
- }
- void BaseModel::deleted(const QVariant &data)
- {
- QString id = data.toString();
- m_data.remove(id);
- emit dataChanged();
- }
- void BaseModel::received(const QVariant &data)
- {
- m_data = data.toMap();
- emit dataChanged();
- }
- BeerService *BaseModel::service() const
- {
- return BeerService::instance();
- }
|