143 lines
5.9 KiB
Lua
143 lines
5.9 KiB
Lua
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
local _, TSM = ...
|
|
local Log = TSM.Auctioning:NewPackage("Log")
|
|
local L = TSM.Include("Locale").GetTable()
|
|
local Database = TSM.Include("Util.Database")
|
|
local Theme = TSM.Include("Util.Theme")
|
|
local ItemInfo = TSM.Include("Service.ItemInfo")
|
|
local private = {
|
|
db = nil,
|
|
}
|
|
local REASON_INFO = {
|
|
-- general
|
|
invalidItemGroup = { color = "RED", str = L["Item/Group is invalid (see chat)."] },
|
|
invalidSeller = { color = "RED", str = L["Invalid seller data returned by server."] },
|
|
-- post scan
|
|
postDisabled = { color = "ORANGE", str = L["Posting disabled."] },
|
|
postNotEnough = { color = "ORANGE", str = L["Not enough items in bags."] },
|
|
postMaxExpires = { color = "ORANGE", str = L["Above max expires."] },
|
|
postBelowMin = { color = "ORANGE", str = L["Cheapest auction below min price."] },
|
|
postTooMany = { color = "BLUE", str = L["Maximum amount already posted."] },
|
|
postNormal = { color = "GREEN", str = L["Posting at normal price."] },
|
|
postResetMin = { color = "GREEN", str = L["Below min price. Posting at min."] },
|
|
postResetMax = { color = "GREEN", str = L["Below min price. Posting at max."] },
|
|
postResetNormal = { color = "GREEN", str = L["Below min price. Posting at normal."] },
|
|
postAboveMaxMin = { color = "GREEN", str = L["Above max price. Posting at min."] },
|
|
postAboveMaxMax = { color = "GREEN", str = L["Above max price. Posting at max."] },
|
|
postAboveMaxNormal = { color = "GREEN", str = L["Above max price. Posting at normal."] },
|
|
postAboveMaxNoPost = { color = "ORANGE", str = L["Above max price. Not posting."] },
|
|
postUndercut = { color = "GREEN", str = L["Undercutting competition."] },
|
|
postPlayer = { color = "GREEN", str = L["Posting at your current price."] },
|
|
postWhitelist = { color = "GREEN", str = L["Posting at whitelisted player's price."] },
|
|
postWhitelistNoPost = { color = "ORANGE", str = L["Lowest auction by whitelisted player."] },
|
|
postBlacklist = { color = "GREEN", str = L["Undercutting blacklisted player."] },
|
|
-- cancel scan
|
|
cancelDisabled = { color = "ORANGE", str = L["Canceling disabled."] },
|
|
cancelNotUndercut = { color = "GREEN", str = L["Your auction has not been undercut."] },
|
|
cancelBid = { color = "BLUE", str = L["Auction has been bid on."] },
|
|
cancelNoMoney = { color = "BLUE", str = L["Not enough money to cancel."] },
|
|
cancelKeepPosted = { color = "BLUE", str = L["Keeping undercut auctions posted."] },
|
|
cancelBelowMin = { color = "ORANGE", str = L["Not canceling auction below min price."] },
|
|
cancelAtReset = { color = "GREEN", str = L["Not canceling auction at reset price."] },
|
|
cancelAtNormal = { color = "GREEN", str = L["At normal price and not undercut."] },
|
|
cancelAtAboveMax = { color = "GREEN", str = L["At above max price and not undercut."] },
|
|
cancelAtWhitelist = { color = "GREEN", str = L["Posted at whitelisted player's price."] },
|
|
cancelUndercut = { color = "RED", str = L["You've been undercut."] },
|
|
cancelRepost = { color = "BLUE", str = L["Canceling to repost at higher price."] },
|
|
cancelReset = { color = "BLUE", str = L["Canceling to repost at reset price."] },
|
|
cancelWhitelistUndercut = { color = "RED", str = L["Undercut by whitelisted player."] },
|
|
cancelPlayerUndercut = { color = "BLUE", str = L["Canceling auction you've undercut."] },
|
|
}
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Module Functions
|
|
-- ============================================================================
|
|
|
|
function Log.OnInitialize()
|
|
private.db = Database.NewSchema("AUCTIONING_LOG")
|
|
:AddNumberField("index")
|
|
:AddStringField("itemString")
|
|
:AddStringField("seller")
|
|
:AddNumberField("buyout")
|
|
:AddStringField("operation")
|
|
:AddStringField("reasonStr")
|
|
:AddStringField("reasonKey")
|
|
:AddStringField("state")
|
|
:AddIndex("index")
|
|
:Commit()
|
|
end
|
|
|
|
function Log.Truncate()
|
|
private.db:Truncate()
|
|
end
|
|
|
|
function Log.CreateQuery()
|
|
return private.db:NewQuery()
|
|
:InnerJoin(ItemInfo.GetDBForJoin(), "itemString")
|
|
:OrderBy("index", true)
|
|
end
|
|
|
|
function Log.UpdateRowByIndex(index, field, value)
|
|
local row = private.db:NewQuery()
|
|
:Equal("index", index)
|
|
:GetFirstResultAndRelease()
|
|
|
|
if field == "state" then
|
|
assert(value == "POSTED" or value == "CANCELLED" or value == "SKIPPED")
|
|
if not row then
|
|
return
|
|
end
|
|
end
|
|
|
|
row:SetField(field, value)
|
|
:Update()
|
|
|
|
row:Release()
|
|
end
|
|
|
|
function Log.SetQueryUpdatesPaused(paused)
|
|
private.db:SetQueryUpdatesPaused(paused)
|
|
end
|
|
|
|
function Log.AddEntry(itemString, operationName, reasonKey, seller, buyout, index)
|
|
private.db:NewRow()
|
|
:SetField("itemString", itemString)
|
|
:SetField("seller", seller)
|
|
:SetField("buyout", buyout)
|
|
:SetField("operation", operationName)
|
|
:SetField("reasonStr", REASON_INFO[reasonKey].str)
|
|
:SetField("reasonKey", reasonKey)
|
|
:SetField("index", index)
|
|
:SetField("state", "PENDING")
|
|
:Create()
|
|
end
|
|
|
|
function Log.GetColorFromReasonKey(reasonKey)
|
|
return Theme.GetFeedbackColor(REASON_INFO[reasonKey].color)
|
|
end
|
|
|
|
function Log.GetInfoStr(row)
|
|
local state, reasonKey = row:GetFields("state", "reasonKey")
|
|
local reasonInfo = REASON_INFO[reasonKey]
|
|
local color = nil
|
|
if state == "PENDING" then
|
|
return Theme.GetFeedbackColor(reasonInfo.color):ColorText(reasonInfo.str)
|
|
elseif state == "POSTED" then
|
|
return Theme.GetColor("INDICATOR"):ColorText(L["Posted:"]).." "..reasonInfo.str
|
|
elseif state == "CANCELLED" then
|
|
return Theme.GetColor("INDICATOR"):ColorText(L["Cancelled:"]).." "..reasonInfo.str
|
|
elseif state == "SKIPPED" then
|
|
return Theme.GetColor("INDICATOR"):ColorText(L["Skipped:"]).." "..reasonInfo.str
|
|
else
|
|
error("Invalid state: "..tostring(state))
|
|
end
|
|
return color:ColorText(reasonInfo.str)
|
|
end
|