| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "productsviewmodel.h"
- #include "services/settingsservice.h"
- #include "models/ordersmodel.h"
- ProductsViewModel::ProductsViewModel(QObject *parent)
- : QObject{parent}
- {
- connect(&m_productsModel, &BaseModel::dataChanged, this, &ProductsViewModel::productsChanged);
- }
- QVariantList ProductsViewModel::products() const
- {
- return m_productsModel.items();
- }
- QVariantList ProductsViewModel::order() const
- {
- QVariantList res;
- for (auto it = m_order.constBegin(); it != m_order.constEnd(); ++it) {
- QVariantMap product = m_productsModel.item(it.key());
- product["count"] = it.value().toMap().value("quantity").toDouble();
- res << product;
- }
- return res;
- }
- float ProductsViewModel::orderSum() const
- {
- float res = 0.0;
- for (auto it = m_order.constBegin(); it != m_order.constEnd(); ++it) {
- QVariantMap product = m_productsModel.item(it.key());
- float price = product.value("price", 0.0).toFloat();
- float quantity = it.value().toMap().value("quantity").toDouble();
- res += quantity * price;
- }
- return res;
- }
- void ProductsViewModel::setOrderValue(const QString &productId, float value)
- {
- if (value) {
- float price = m_productsModel.itemProperty(productId, "price", 0.0).toFloat();
- m_order[productId] = QVariantMap {
- { "productId", productId },
- { "quantity", value},
- { "price", price }
- };
- } else {
- m_order.remove(productId);
- }
- emit orderChanged();
- }
- void ProductsViewModel::submitOrder()
- {
- OrdersModel model;
- model.submitOrder(QVariantMap {
- { "userId", settings()->selectedUserId() },
- { "storeId", settings()->selectedStoreId() },
- { "products", m_order.values() },
- { "amount", orderSum() }
- });
- m_order.clear();
- emit orderChanged();
- }
- SettingsService *ProductsViewModel::settings() const
- {
- return SettingsService::instance();
- }
|