78 lines
2.6 KiB
Lua
78 lines
2.6 KiB
Lua
local PANEL = {}
|
||
|
||
function PANEL:Init()
|
||
self:SetSize(350, 300)
|
||
self:DockPadding(5, 5, 5, 5)
|
||
|
||
self.title = self:Add 'DLabel'
|
||
self.title:Dock(TOP)
|
||
self.title:SetTall(40)
|
||
self.title:SetContentAlignment(5)
|
||
self.title:SetFont('dbg-jobs.title')
|
||
self.title:SetText('...')
|
||
|
||
self.desc = self:Add 'DMarkup'
|
||
self.desc:Dock(TOP)
|
||
self.desc:DockMargin(5, 0, 5, 0)
|
||
self.desc:SetText('...')
|
||
|
||
self.accept = octolib.button(self, 'Принять заказ', function()
|
||
self:AcceptJob()
|
||
end)
|
||
self.accept:Dock(BOTTOM)
|
||
self.accept:SetTall(30)
|
||
end
|
||
|
||
function PANEL:SetJob(mainPanel, publishData, startData)
|
||
self.mainPanel = mainPanel
|
||
self.publishData = publishData
|
||
self.startData = startData
|
||
|
||
self.title:SetText(publishData.name)
|
||
|
||
local desc = publishData.desc .. '\n'
|
||
if publishData.timeout then desc = desc .. '\nОграничение по времени: ' .. math.floor(publishData.timeout / 60) .. ' мин' end
|
||
if publishData.deposit then
|
||
desc = desc .. '\nЗалог за взятие заказа: ' .. DarkRP.formatMoney(publishData.deposit)
|
||
end
|
||
|
||
if startData and startData.ply == LocalPlayer() then
|
||
self.accept:SetText('Отказаться')
|
||
elseif publishData.deposit then
|
||
self.accept:SetText(('Принять заказ (%s)'):format(DarkRP.formatMoney(publishData.deposit)))
|
||
else
|
||
self.accept:SetText('Принять заказ')
|
||
end
|
||
desc = desc .. '\nПлата за выполнение: ' .. publishData.reward
|
||
|
||
self.desc:SetText(desc)
|
||
end
|
||
|
||
function PANEL:AcceptJob()
|
||
if not self.publishData then return end
|
||
|
||
if self.startData and self.startData.ply == LocalPlayer() then
|
||
Derma_Query('Ты хочешь отказаться от выполнения?\nЗалог не будет возвращен', 'Отмена заказа', 'Да', function()
|
||
netstream.Start('dbg-jobs.cancel', self.publishData.id)
|
||
self.mainPanel.overlay:Remove()
|
||
end, 'Отмена')
|
||
else
|
||
Derma_Query('Ты хочешь принять этот заказ?\nПри его невыполнении залог не будет возвращен', 'Принятие заказа', 'Да', function()
|
||
self.accept:SetEnabled(false)
|
||
self.accept:SetText('Загрузка...')
|
||
|
||
netstream.Request('dbg-jobs.take', self.publishData.id):Then(function(err)
|
||
if not err then
|
||
self.mainPanel:SwitchToName('Принятые')
|
||
self.mainPanel.overlay:Remove()
|
||
else
|
||
Derma_Message(err, 'Ошибка', 'Понятно')
|
||
self.accept:SetEnabled(true)
|
||
self:SetJob(self.mainPanel, self.publishData, self.startData)
|
||
end
|
||
end)
|
||
end, 'Отмена')
|
||
end
|
||
end
|
||
|
||
vgui.Register('dbg_jobs_overlay', PANEL, 'DPanel')
|