135 lines
4.0 KiB
PHP
135 lines
4.0 KiB
PHP
<?
|
|
namespace themes\merakomis\time;
|
|
|
|
use core\db\structure\Column as C;
|
|
use core\db\structure\eColumnType;
|
|
use core\lang\structure\LangVariable as V;
|
|
use ms\ms\structure\msModuleTable;
|
|
use common\Image;
|
|
use ModuleBZ\Form\Input\ImagePicker;
|
|
use ModuleBZ\Form\Input\Switcher;
|
|
use ModuleBZ\Form\Input\Text;
|
|
use ModuleBZ\Form\Input\Textarea;
|
|
use ModuleBZ\Layout\Row;
|
|
use themes\merakomis\structure\merakomisModuleTable;
|
|
use themes\merakomis\time\cache\structure\lang as Vars;
|
|
|
|
|
|
class Cache extends merakomisModuleTable {
|
|
static $self;
|
|
static $cache = [];
|
|
static $table_name = 'tMerakomisTimeCache';
|
|
static $controller = 'themes.merakomis.time.cache';
|
|
|
|
static $ID = 'id';
|
|
static $EMP = 'emp';
|
|
static $PROJECT = 'project';
|
|
static $BEGIN = 'begin';
|
|
static $END = 'end';
|
|
static $KEY = 'key';
|
|
static $DATA = 'data';
|
|
|
|
|
|
public static function installUniques()
|
|
{
|
|
\DB::addUnique(self::$table_name,self::$table_name.'_unique',[self::$KEY]);
|
|
}
|
|
|
|
static function getData($begin,$end,$emp,$project){
|
|
$key = self::getKey($begin,$end,$emp,$project);
|
|
$row = self::getOneEqualByColumn(self::$KEY,$key);
|
|
$res = null;
|
|
if($row){
|
|
$res = json_decode($row[self::$DATA],true)?:[];
|
|
if(!$res){
|
|
$res = [
|
|
'hours'=> 0,
|
|
'over'=>0,
|
|
'over1'=>0,
|
|
'over2'=>0,
|
|
'total'=>0,
|
|
];
|
|
}
|
|
} else {
|
|
$res['empty'] = true;
|
|
}
|
|
return $res;
|
|
}
|
|
static function getKey($begin,$end,$emp,$project){
|
|
$key = $begin.":".$end.":".$emp.":".$project;
|
|
return md5($key);
|
|
}
|
|
|
|
static function add($begin,$end,$emp,$project,$data)
|
|
{
|
|
return self::insert([
|
|
self::$KEY => self::getKey($begin,$end,$emp,$project),
|
|
self::$BEGIN => $begin,
|
|
self::$END => $end,
|
|
self::$EMP => $emp,
|
|
self::$PROJECT => $project,
|
|
self::$DATA => $data ? je($data) : [],
|
|
]);
|
|
}
|
|
|
|
static function removeRows($date,$emp = null,$project = null){
|
|
$res = self::delete($q = new \Where(\Where::_and([
|
|
\Where::_operator(self::$BEGIN,'<=',$date),
|
|
\Where::_operator(self::$END,'>=',$date),
|
|
$emp ? \Where::_operator(self::$EMP,'=',$emp) : null,
|
|
$project ? \Where::_or([
|
|
\Where::_operator(self::$PROJECT,'=',$project),
|
|
\Where::_operator(self::$PROJECT,'=',0)
|
|
]) : null
|
|
])));
|
|
echo $q;
|
|
return $res;
|
|
}
|
|
|
|
|
|
|
|
|
|
static function columnInfo() : array {
|
|
return [
|
|
new C([
|
|
C::VAR_NAME =>&self::$ID,
|
|
C::TYPE =>eColumnType::INT,
|
|
C::AUTO_INCREMENT =>true,
|
|
C::PRIMARY =>true,
|
|
C::DEFAULT =>0,
|
|
C::HIDDEN =>true,
|
|
C::TH =>V::get(Vars::$ID),
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$EMP,
|
|
C::TYPE => eColumnType::INT,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$PROJECT,
|
|
C::TYPE => eColumnType::INT,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$BEGIN,
|
|
C::TYPE => eColumnType::DATE,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$END,
|
|
C::TYPE => eColumnType::DATE,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$KEY,
|
|
C::TYPE => eColumnType::VARCHAR,
|
|
C::LENGTH => 63,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME => &self::$DATA,
|
|
C::TYPE => eColumnType::TEXT,
|
|
]),
|
|
];
|
|
}
|
|
|
|
}
|
|
new Cache();
|
|
|
|
|