Something went wrong on our end
-
Florian Azizian authoredFlorian Azizian authored
ResModelAbstract.php 6.84 KiB
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*
*/
/**
* @brief Res Model
* @author dev@maarch.org
*/
namespace Resource\models;
use SrcCore\models\ValidatorModel;
use SrcCore\models\DatabaseModel;
abstract class ResModelAbstract
{
public static function getOnView(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['select']);
ValidatorModel::arrayType($aArgs, ['select', 'where', 'data', 'orderBy', 'groupBy']);
ValidatorModel::intType($aArgs, ['limit', 'offset']);
$aResources = DatabaseModel::select([
'select' => $aArgs['select'],
'table' => ['res_view_letterbox'],
'where' => empty($aArgs['where']) ? [] : $aArgs['where'],
'data' => empty($aArgs['data']) ? [] : $aArgs['data'],
'order_by' => empty($aArgs['orderBy']) ? [] : $aArgs['orderBy'],
'groupBy' => empty($aArgs['groupBy']) ? [] : $aArgs['groupBy'],
'offset' => empty($aArgs['offset']) ? 0 : $aArgs['offset'],
'limit' => empty($aArgs['limit']) ? 0 : $aArgs['limit']
]);
return $aResources;
}
public static function get(array $args)
{
ValidatorModel::notEmpty($args, ['select']);
ValidatorModel::arrayType($args, ['select', 'where', 'data', 'orderBy', 'groupBy']);
ValidatorModel::intType($args, ['limit']);
$resources = DatabaseModel::select([
'select' => $args['select'],
'table' => ['res_letterbox'],
'where' => empty($args['where']) ? [] : $args['where'],
'data' => empty($args['data']) ? [] : $args['data'],
'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'],
'limit' => empty($args['limit']) ? 0 : $args['limit'],
'groupBy' => empty($args['groupBy']) ? [] : $args['groupBy'],
]);
return $resources;
}
public static function getById(array $args)
{
ValidatorModel::notEmpty($args, ['resId']);
ValidatorModel::intVal($args, ['resId']);
$resource = DatabaseModel::select([
'select' => $args['select'],
'table' => ['res_letterbox'],
'where' => ['res_id = ?'],
'data' => [$args['resId']]
]);
if (empty($resource[0])) {
return [];
}
return $resource[0];
}
public static function create(array $args)
{
ValidatorModel::notEmpty($args, ['res_id', 'model_id', 'category_id', 'typist', 'creation_date']);
ValidatorModel::stringType($args, ['category_id', 'creation_date', 'format', 'docserver_id', 'path', 'filename', 'fingerprint']);
ValidatorModel::intVal($args, ['res_id', 'model_id', 'typist', 'filesize']);
DatabaseModel::insert([
'table' => 'res_letterbox',
'columnsValues' => $args
]);
return true;
}
public static function update(array $args)
{
ValidatorModel::notEmpty($args, ['where', 'data']);
ValidatorModel::arrayType($args, ['set', 'postSet', 'where', 'data']);
DatabaseModel::update([
'table' => 'res_letterbox',
'set' => $args['set'],
'postSet' => $args['postSet'],
'where' => $args['where'],
'data' => $args['data']
]);
return true;
}
public static function delete(array $args)
{
ValidatorModel::notEmpty($args, ['where', 'data']);
ValidatorModel::arrayType($args, ['where', 'data']);
DatabaseModel::delete([
'table' => 'res_letterbox',
'where' => $args['where'],
'data' => $args['data']
]);
return true;
}
public static function getLastResources(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['limit', 'select']);
ValidatorModel::intType($aArgs, ['limit', 'userId',]);
ValidatorModel::arrayType($aArgs, ['select']);
$resources = DatabaseModel::select([
'select' => $aArgs['select'],
'table' => ['history, res_letterbox, status'],
'where' => [
'history.user_id = ?', 'history.table_name IN (?)',
'history.record_id IS NOT NULL', 'history.record_id != ?',
'history.event_id != ?', 'history.event_id NOT LIKE ?',
'CAST(history.record_id AS INT) = res_letterbox.res_id',
'res_letterbox.status != ?',
'res_letterbox.status = status.id'
],
'data' => [$aArgs['userId'], ['res_letterbox', 'res_view_letterbox'], 'none', 'linkup', 'attach%', 'DEL'],
'groupBy' => ['res_letterbox.subject', 'res_letterbox.creation_date', 'res_letterbox.res_id', 'res_letterbox.alt_identifier', 'res_letterbox.closing_date', 'res_letterbox.process_limit_date', 'status.id', 'status.label_status', 'status.img_filename'],
'order_by' => ['MAX(history.event_date) DESC'],
'limit' => $aArgs['limit']
]);
return $resources;
}
public static function getByAltIdentifier(array $args)
{
ValidatorModel::notEmpty($args, ['altIdentifier']);
ValidatorModel::stringType($args, ['altIdentifier']);
$resource = DatabaseModel::select([
'select' => empty($args['select']) ? ['*'] : $args['select'],
'table' => ['res_letterbox'],
'where' => ['alt_identifier = ?'],
'data' => [$args['altIdentifier']]
]);
if (empty($resource[0])) {
return [];
}
return $resource[0];
}
public static function getCategories()
{
$categories = [
[
'id' => 'incoming',
'label' => _INCOMING
],
[
'id' => 'outgoing',
'label' => _OUTGOING
],
[
'id' => 'internal',
'label' => _INTERNAL
],
[
'id' => 'ged_doc',
'label' => _GED_DOC
],
[
'id' => 'registeredMail',
'label' => _REGISTERED_MAIL
]
];
return $categories;
}
public static function getCategoryLabel(array $args)
{
ValidatorModel::stringType($args, ['categoryId']);
$categories = ResModel::getCategories();
foreach ($categories as $category) {
if ($category['id'] == $args['categoryId']) {
return $category['label'];
}
}
return '';
}
}