1 #pragma once 2 #include "MercProfile.h" 3 #include "MERCSpeckQuote.h" 4 #include <memory> 5 #include <rapidjson/document.h> 6 #include <vector> 7 8 typedef std::shared_ptr<MERCSpeckQuote> SpeckQuote; 9 10 class MERCListingModel 11 { 12 public: 13 MERCListingModel(uint8_t index_, uint8_t profileID_, uint8_t bioIndex_, uint32_t minTotalSpending_, uint32_t mindays, std::vector<SpeckQuote> quotes_); 14 const uint8_t index; 15 16 // If we are coming from M.E.R.C., we should always use the GetProfileIDFromMERCListing 17 // instead, due to the hard-coded LARRY logic 18 const uint8_t profileID; 19 const uint8_t bioIndex; 20 21 const uint32_t minTotalSpending; 22 const uint32_t minDays; 23 24 bool isAvailableAtStart() const; 25 std::vector<SpeckQuote> getQuotesByType(SpeckQuoteType type) const; 26 27 static MERCListingModel* deserialize(uint8_t index, const rapidjson::Value& json); 28 static void validateData(const std::vector<const MERCListingModel*>&); 29 private: 30 const std::vector<SpeckQuote> quotes; 31 };