TutorTaskItem = class("TutorTaskItem")

function TutorTaskItem:ctor(serverData)
	self:ResetData()

	self:UpdateData(serverData)
end

function TutorTaskItem:ResetData()
	self.progress = 0
	self.canReward = false	--導師是否可領獎
end

function TutorTaskItem:UpdateData(serverData)
	if serverData ~= nil then
		if serverData.id ~= nil then
			self.id = serverData.id
		end
		if serverData.progress ~= nil then
			self.progress = serverData.progress
		end
	end
end

function TutorTaskItem:SetId(id, ownId)
	self.id = id
	self.ownId = ownId
end

function TutorTaskItem:SetCanReward(canReward)
	self.canReward = canReward

	--後端快取沒更新
	if self.canReward then
		local staticData = Table_StudentAdventureQuest[self.id]
		if staticData and staticData.Target then
			self.progress = staticData.Target
		end
	end
end

function TutorTaskItem:GetStudentRewardLevel()
	local staticData = Table_StudentAdventureQuest[self.id]
	if staticData ~= nil then
		--處理數據
		local temp = ReusableTable.CreateArray()
		for k,v in pairs(staticData.StudentReward) do
			TableUtility.ArrayPushBack(temp, k)
		end
		table.sort(temp, TutorTaskItem.Sort)

		--等級
		local level = 1
		if self:IsMySelf() then
			level = MyselfProxy.Instance:RoleLevel()
		else
			local socialData = Game.SocialManager:Find(self.ownId)
			if socialData and socialData.level ~= 0 then
				level = socialData.level
			end
		end
		local rewardLevel
		for i=1,#temp do
			if level <= temp[i] then
				rewardLevel = temp[i]
				break
			end
		end
		ReusableTable.DestroyArray(temp)

		return rewardLevel
	end

	return nil
end

function TutorTaskItem.Sort(l,r)
	return l < r
end

function TutorTaskItem:CanTake()
	if self:IsMySelf() then
		return false
	end

	if self.canReward then
		return true
	end

	return false
end

--導師任務是否完成
function TutorTaskItem:IsComplete()
	local staticData = Table_StudentAdventureQuest[self.id]
	if staticData and staticData.Target and self.progress then
		return self.progress >= staticData.Target
	end
end

function TutorTaskItem:IsMySelf()
	return self.ownId == Game.Myself.data.id
end