ItemList = ZO_Object:Subclass()
local fm = FarmManager

local function GetValue(itemLink)
	if fm.settings.db.useMM then
		if MasterMerchant ~= nil then
			local mmValue = MasterMerchant:itemStats(itemLink)["avgPrice"]
			if mmValue ~= nil then
				return mmValue
			end
		end
	else
		if ArkadiusTradeTools ~= nil then
			local mmValue = ArkadiusTradeTools.Modules.Sales:GetAveragePricePerItem(itemLink)
			if mmValue ~= nil then
				return mmValue
			end
		end
	end

	local _, vendorValue = GetItemLinkInfo(itemLink)

	return vendorValue
end

function ItemList:New()
    local itemList = ZO_Object.New(self)
    itemList:Init()
    return itemList
end

function ItemList:Init()
	self.totalValue = 0
	self.items = {}
end

function ItemList:Add(itemLink, quantity)
	local itemId = GetItemLinkItemId(itemLink)
    if self.items[itemId] == nil then
        self.items[itemId] = Item:New(itemLink)
    end

    item = self.items[itemId]

    local value = GetValue(itemLink)
	item.quantity = item.quantity + quantity
	item.value = value
    item.totalValue = item.totalValue + (value * quantity)
	self.totalValue = self.totalValue + (value * quantity)
	return item
end

function ItemList:Get(itemLink)
	local itemId = GetItemLinkItemId(itemLink)
	return self.items[itemId]
end