Merge branch 'feature-notification-management-not004' into feature-notification-management
This commit is contained in:
+49
@@ -1 +1,50 @@
|
||||
#include <stdexcept>
|
||||
#include "InventoryManagementService.h"
|
||||
#include "Vector.h"
|
||||
#include "Enums.h"
|
||||
#include "InventoryItem.h"
|
||||
#include "Config.h"
|
||||
|
||||
static void sendLowStockAlertsToAdmins(InventoryManagementService& inventoryManagementService, const InventoryItem* inventoryItem, const util::Vector<User*>& adminUsers)
|
||||
{
|
||||
int adminUsersSize = adminUsers.getSize();
|
||||
for (int index = 0; index < adminUsersSize; index++)
|
||||
{
|
||||
inventoryManagementService.sendNotification(
|
||||
adminUsers[index],
|
||||
"Low Stock Alert",
|
||||
"The inventory item with ID " + inventoryItem->getId() +
|
||||
" has very low quantity in the inventory"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void InventoryManagementService::sendLowStockAlerts()
|
||||
{
|
||||
auto& inventoryItems = m_dataStore.getInventoryItems();
|
||||
int inventoryItemsSize = inventoryItems.getSize();
|
||||
auto& usersMap = m_dataStore.getUsers();
|
||||
int usersMapSize = usersMap.getSize();
|
||||
util::Vector<User*> adminUsers;
|
||||
for (int index = 0; index < usersMapSize; index++)
|
||||
{
|
||||
User* user = usersMap.getValueAt(index);
|
||||
if (user->getUserType() == util::UserType::ADMIN)
|
||||
{
|
||||
adminUsers.push_back(user);
|
||||
}
|
||||
}
|
||||
int adminUsersSize = adminUsers.getSize();
|
||||
if (adminUsersSize < 1)
|
||||
{
|
||||
throw std::runtime_error("The system has no admins present!");
|
||||
}
|
||||
for (int index = 0; index <= inventoryItemsSize; index++)
|
||||
{
|
||||
InventoryItem* inventoryItem = inventoryItems.getValueAt(index);
|
||||
if (inventoryItem && inventoryItem->getQuantity() < config::threshold::INVENTORY_LOW_STOCK_THRESHOLD)
|
||||
{
|
||||
sendLowStockAlertsToAdmins(*this, inventoryItem, adminUsers);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user