Files
joelthomastrenser d10cc91c40 Add state tracking for models and menu loop setup
<Changes>
    1. Added State enum with ACTIVE and INACTIVE values in Enums.h.
    2. Added state member, getter, and setter in User, Service, InventoryItem, and ComboPackage models.
    3. Updated constructors to initialize model objects with ACTIVE state by default.
    4. Added state string conversion helper functions in Enums.h.
    5. Added default return values in Controller getter methods to complete stub implementations.
    6. Added basic menu loop implementation in CustomerMenu and TechnicianMenu for handling user input.
</Changes>
2026-05-19 16:21:56 +05:30

170 lines
3.6 KiB
C++

#pragma once
#include <stdexcept>
namespace util
{
enum class UserType
{
ADMIN,
TECHNICIAN,
CUSTOMER
};
enum class PaymentMode
{
ONLINE,
OFFLINE
};
enum class PaymentStatus
{
PENDING,
COMPLETED
};
enum class ServiceJobStatus
{
STARTED,
COMPLETED
};
enum class State
{
ACTIVE,
INACTIVE
};
inline std::string getUserTypeString(UserType type)
{
switch (type)
{
case UserType::ADMIN:
return "ADMIN";
case UserType::TECHNICIAN:
return "TECHNICIAN";
case UserType::CUSTOMER:
return "CUSTOMER";
}
throw std::invalid_argument("Invalid UserType");
}
inline UserType getUserType(const std::string& value)
{
if (value == "ADMIN")
{
return UserType::ADMIN;
}
if (value == "TECHNICIAN")
{
return UserType::TECHNICIAN;
}
if (value == "CUSTOMER")
{
return UserType::CUSTOMER;
}
throw std::invalid_argument("Invalid UserType string");
}
inline std::string getPaymentModeString(PaymentMode mode)
{
switch (mode)
{
case PaymentMode::ONLINE:
return "ONLINE";
case PaymentMode::OFFLINE:
return "OFFLINE";
}
throw std::invalid_argument("Invalid PaymentMode");
}
inline PaymentMode getPaymentMode(const std::string& value)
{
if (value == "ONLINE")
{
return PaymentMode::ONLINE;
}
if (value == "OFFLINE")
{
return PaymentMode::OFFLINE;
}
throw std::invalid_argument("Invalid PaymentMode string");
}
inline std::string getPaymentStatusString(PaymentStatus status)
{
switch (status)
{
case PaymentStatus::PENDING:
return "PENDING";
case PaymentStatus::COMPLETED:
return "COMPLETED";
}
throw std::invalid_argument("Invalid PaymentStatus");
}
inline PaymentStatus getPaymentStatus(const std::string& value)
{
if (value == "PENDING")
{
return PaymentStatus::PENDING;
}
if (value == "COMPLETED")
{
return PaymentStatus::COMPLETED;
}
throw std::invalid_argument("Invalid PaymentStatus string");
}
inline std::string getServiceJobStatusString(ServiceJobStatus status)
{
switch (status)
{
case ServiceJobStatus::STARTED:
return "STARTED";
case ServiceJobStatus::COMPLETED:
return "COMPLETED";
}
throw std::invalid_argument("Invalid ServiceJobStatus");
}
inline ServiceJobStatus getServiceJobStatus(const std::string& value)
{
if (value == "STARTED")
{
return ServiceJobStatus::STARTED;
}
if (value == "COMPLETED")
{
return ServiceJobStatus::COMPLETED;
}
throw std::invalid_argument("Invalid ServiceJobStatus string");
}
inline std::string getStateString(State status)
{
switch (status)
{
case State::ACTIVE:
return "STARTED";
case State::INACTIVE:
return "COMPLETED";
}
throw std::invalid_argument("Invalid State");
}
inline State getState(const std::string& value)
{
if (value == "ACTIVE")
{
return State::ACTIVE;
}
if (value == "COMPLETED")
{
return State::INACTIVE;
}
throw std::invalid_argument("Invalid State string");
}
}