37 lines
1.2 KiB
PHP
37 lines
1.2 KiB
PHP
<?php
|
|
namespace sammo\Command;
|
|
use \sammo\Util;
|
|
|
|
abstract class GeneralCommand extends BaseCommand{
|
|
|
|
public function getNextExecuteKey():string{
|
|
$turnKey = static::$actionName;
|
|
$generalID = $this->getGeneral()->getID();
|
|
$executeKey = "next_execute_{$generalID}_{$turnKey}";
|
|
return $executeKey;
|
|
}
|
|
|
|
public function getNextAvailableTurn():?int{
|
|
if($this->isArgValid && !$this->getPostReqTurn()){
|
|
return null;
|
|
}
|
|
$db = \sammo\DB::db();
|
|
$lastExecuteStor = \sammo\KVStorage::getStorage($db, 'next_execute');
|
|
return $lastExecuteStor->getValue($this->getNextExecuteKey());
|
|
}
|
|
|
|
public function setNextAvailable(?int $yearMonth=null){
|
|
if(!$this->getPostReqTurn()){
|
|
return;
|
|
}
|
|
if($yearMonth === null){
|
|
$yearMonth = Util::joinYearMonth($this->env['year'], $this->env['month'])
|
|
+ $this->getPostReqTurn() - $this->getPreReqTurn();
|
|
}
|
|
|
|
$db = \sammo\DB::db();
|
|
$lastExecuteStor = \sammo\KVStorage::getStorage($db, 'next_execute');
|
|
$lastExecuteStor->setValue($this->getNextExecuteKey(), $yearMonth);
|
|
}
|
|
|
|
}; |