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 };