From 94ea75be6aaa4d8d4cefb5c6dc05c926cee2f2ce Mon Sep 17 00:00:00 2001 From: Gabriel Moreira Minossi Date: Sat, 16 Jan 2021 19:03:26 -0300 Subject: [PATCH] Changing `getMultiblockstatusUsecase` to consider a single machine. Returning progress, state, problems, efficiency and consumption --- .../get-multiblock-status-usecase.lua | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua b/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua index 5c4292d..c680f00 100755 --- a/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua +++ b/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua @@ -1,22 +1,41 @@ -- Import section +Machine = require("data.datasource.machine") Alarm = require("api.sound.alarm") -- -local function exec(multiblocks) - local statuses = {} - for _, multiblock in ipairs(multiblocks) do - local problems = multiblock:getNumberOfProblems() - if problems > 0 then - Alarm() - end +local function exec(address, name) + local multiblock = Machine.getMachine(address, name, Machine.types.multiblock) + local status = {} + local problems = multiblock:getNumberOfProblems() - statuses[multiblock.name] = { - problems = problems, - probablyUses = multiblock:getEnergyUsage(), - efficiencyPercentage = multiblock:getEfficiencyPercentage() - } + local state = {} + if multiblock:isMachineEnabled() then + if multiblock:hasWork() then + state = Machine.states.ON + else + state = Machine.states.IDLE + end + else + state = Machine.states.OFF end - return statuses + + if problems > 0 then + state = Machine.states.BROKEN + end + + local totalProgress = multiblock:getProgress() + local maxProgress = totalProgress.maximum + local progress = totalProgress.current + + status[multiblock.name] = { + progress = progress, + maxProgress = maxProgress, + problems = problems, + probablyUses = multiblock:getEnergyUsage(), + efficiencyPercentage = multiblock:getEfficiencyPercentage(), + state = state + } + return status end return exec