185 lines
6.5 KiB
PHP
185 lines
6.5 KiB
PHP
|
|
<?
|
|||
|
|
|
|||
|
|
namespace controller\themes\merakomis\team\member;
|
|||
|
|
|
|||
|
|
use core\core\structure\eRowClick;
|
|||
|
|
use ms\ms\structure\msControllerTable;
|
|||
|
|
use themes\Merakomis;
|
|||
|
|
use themes\merakomis\Emp;
|
|||
|
|
use themes\merakomis\Project;
|
|||
|
|
use themes\merakomis\structure\merakomisControllerTable;
|
|||
|
|
use themes\merakomis\Team;
|
|||
|
|
use themes\merakomis\team\Member;
|
|||
|
|
|
|||
|
|
class Api extends merakomisControllerTable {
|
|||
|
|
|
|||
|
|
static $class = 'themes\merakomis\team\Member';
|
|||
|
|
|
|||
|
|
|
|||
|
|
public static function getForm() {
|
|||
|
|
$res = [];
|
|||
|
|
if(Emp::$IS_AUTH) {
|
|||
|
|
$_POST[static::$class::$ID] = $_POST['id'];
|
|||
|
|
$res = static::$class::getFormInfo($_POST);
|
|||
|
|
$res['title'] = 'Редактор члена команды';
|
|||
|
|
}
|
|||
|
|
echo je($res);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
public static function getTableData($post = []) {
|
|||
|
|
$TITLE = null;
|
|||
|
|
|
|||
|
|
$post['options'][\Query::LEFT_JOINS] = [
|
|||
|
|
[Emp::$table_name,Emp::$ID,Member::$EMP]
|
|||
|
|
];
|
|||
|
|
if(($id = intval($post['data']['params']['id']))){
|
|||
|
|
//$project = Team::getProjectByTeamID($id);
|
|||
|
|
$project = Project::getByID($id);
|
|||
|
|
//$TITLE = ['title'=>Project::getCodeName($project),'subtitle'=>'Команда проекта','text'=>'Сводная таблица, содержащая данные о команде проекта.'];
|
|||
|
|
//$TITLE = ['title'=>Project::getCodeName($project),'subtitle'=>Merakomis::$TEAM_TABLE_SUBTITLE,'text'=>Merakomis::$TEAM_TABLE_TEXT];
|
|||
|
|
|
|||
|
|
$team_id = $project[Project::$TEAM];
|
|||
|
|
|
|||
|
|
$TITLE = [
|
|||
|
|
'title' => Project::getCodeName($project),
|
|||
|
|
'edit' => true,
|
|||
|
|
'subtitle' => Merakomis::$TEAM_TABLE_SUBTITLE,
|
|||
|
|
'text' => Merakomis::$TEAM_TABLE_TEXT,
|
|||
|
|
'subtitle_var' => Merakomis::$_TEAM_TABLE_SUBTITLE,
|
|||
|
|
'text_var' => Merakomis::$_TEAM_TABLE_TEXT,
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
|
|||
|
|
$post['options'][\Query::WHERE] = \Where::_operator(Member::$TEAM,'=',$team_id);
|
|||
|
|
|
|||
|
|
$post['options'][\ModuleTable::ROW_CLICK] = eRowClick::NONE;
|
|||
|
|
|
|||
|
|
$sort = [
|
|||
|
|
Emp::$NAME => 'ASC',
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
if($_POST['options']['sort']){
|
|||
|
|
$sort = [];
|
|||
|
|
$count = 0;
|
|||
|
|
foreach ($_POST['options']['sort'] as $k=>$v){
|
|||
|
|
if($k==Member::$EMP) $k = Emp::$NAME;
|
|||
|
|
$sort[$k] = $v;
|
|||
|
|
if($v) $count++;
|
|||
|
|
}
|
|||
|
|
if(!$count) $sort = [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$post['options'][\Query::SORT] = $sort;
|
|||
|
|
|
|||
|
|
|
|||
|
|
} else if(isset($post['data']['project'])){
|
|||
|
|
if($id = intval($post['data']['project'])){
|
|||
|
|
|
|||
|
|
$project = Project::getByID($id);
|
|||
|
|
|
|||
|
|
$team_id = $project[Project::$TEAM];
|
|||
|
|
$my_post = Member::getMyPostForTeam($team_id);
|
|||
|
|
$posts = Member\structure\eMemberRole::getSubRoles($my_post);
|
|||
|
|
if(!$posts) $posts=[0];
|
|||
|
|
$sections = [];
|
|||
|
|
if(isset($post['options']['filter']['section'])){
|
|||
|
|
foreach ($post['options']['filter']['section'] as $v){
|
|||
|
|
if(!$v) {
|
|||
|
|
$sections = [];
|
|||
|
|
break;
|
|||
|
|
} else {
|
|||
|
|
$sections[] = $v;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$post['options'][\Query::WHERE] = \Where::_and([
|
|||
|
|
\Where::_operator(Member::$TEAM,'=',$team_id),
|
|||
|
|
\Where::_operator(Member::$ACTIVE,'=',1),
|
|||
|
|
\Where::_operator(Emp::$ARCHIVE,'=',0),
|
|||
|
|
$sections ? \Where::_in(Member::$SECTION,$sections) : null,
|
|||
|
|
//$posts ? \Where::_in(Member::$POST,$posts) : null,
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
$post['options'][\ModuleTable::ROW_CLICK] = eRowClick::NONE;
|
|||
|
|
$post['options'][\Query::COUNT] = 0;
|
|||
|
|
|
|||
|
|
$post['options'][\ModuleTable::COLUMN_LIST] = [
|
|||
|
|
Member::$EMP,
|
|||
|
|
Member::$ROLE,
|
|||
|
|
Member::$SECTION,
|
|||
|
|
Member::$_DISCORD,
|
|||
|
|
Member::$_EMAIL,
|
|||
|
|
Member::$_PHONE,
|
|||
|
|
(Emp::$table_name.'_name'),
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
$post['options'][\Query::SELECT] = ['*','if('.Member::$ROLE.'='.Member\structure\eMemberRole::MAIN_ENGINEER.',1,0) as type'];
|
|||
|
|
$sort = [];
|
|||
|
|
if($_POST['options']['sort']){
|
|||
|
|
$sort['type']='DESC';
|
|||
|
|
$count = 0;
|
|||
|
|
foreach ($_POST['options']['sort'] as $k=>$v){
|
|||
|
|
if($k==Member::$EMP) $k = Emp::$NAME;
|
|||
|
|
$sort[$k] = $v;
|
|||
|
|
if($v) $count++;
|
|||
|
|
}
|
|||
|
|
if(!$count) $sort = [];
|
|||
|
|
}
|
|||
|
|
$post['options'][\Query::SORT] =$sort ? : [
|
|||
|
|
'type' => 'DESC',
|
|||
|
|
Emp::$NAME => 'ASC',
|
|||
|
|
];
|
|||
|
|
$TITLE = ['title'=>'Команда проекта','subtitle'=>'','text'=>'Контакт-лист команды проекта'];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$post['options'][\ModuleTable::COLUMN_RENDER] = [
|
|||
|
|
Member::$EMP => [
|
|||
|
|
/*
|
|||
|
|
\ModuleTable::COLUMN_RENDER_LINK_FUNCTION=>function($v){
|
|||
|
|
return '/public_profile/'.$v[Member::$EMP].'/';
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
]
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
$post['getData'] = true;
|
|||
|
|
$res = parent::getTableData($post);
|
|||
|
|
if($TITLE) $res['title'] = $TITLE;
|
|||
|
|
|
|||
|
|
//if($_POST['options']['sort'][Member::$EMP]) {
|
|||
|
|
if($_POST['options']['sort'][Member::$EMP] || isset($post['data']['project'])) {
|
|||
|
|
$res['columns'][0]['sort'] = $res['sort'][Emp::$NAME]?:'';
|
|||
|
|
}
|
|||
|
|
// $res['sort'][Member::$ROLE] = 'DESC';
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
|
|||
|
|
if($_POST['options']['sort'][Member::$EMP] || $res['sort'][Emp::$NAME]){
|
|||
|
|
$res['sort'][Member::$EMP] = $res['sort'][Emp::$NAME]?:'ASC';
|
|||
|
|
unset($res['sort'][Emp::$NAME]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
switch (intval($id)){
|
|||
|
|
case merakomru::$PARTNERS->id_for_theme : $res['title'] = 'Партнёры'; break;
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
$res["per_page_options"] = [
|
|||
|
|
["id"=>0,"title"=>'Показать всё'],
|
|||
|
|
["id"=>10, "title"=>'10'],
|
|||
|
|
["id"=>25, "title"=>'25'],
|
|||
|
|
["id"=>50, "title"=>'50'],
|
|||
|
|
["id"=>100,"title"=>'100'],
|
|||
|
|
];
|
|||
|
|
echo je($res);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|