private function getFieldMap(): array
{
return [
"ID" => "ID",
"TITLE" => "TITLE",
"DESCRIPTION" => "DESCRIPTION",
"DESCRIPTION_IN_BBCODE" => "DESCRIPTION_IN_BBCODE",
"DECLINE_REASON" => "DECLINE_REASON",
"PRIORITY" => "PRIORITY",
"STATUS_COMPLETE" => new ExpressionField(
"STATUS_COMPLETE",
"CASE
WHEN
%s = '".Status::COMPLETED."'
THEN
'".Status::PENDING."'
ELSE
'".Status::NEW."'
END",
["STATUS"]
),
"COMPUTE_STATUS" => function() {
return $this->getStatusField();
},
"REAL_STATUS" => "STATUS",
"MULTITASK" => "MULTITASK",
"STAGE_ID" => "STAGE_ID",
"RESPONSIBLE_ID" => "RESPONSIBLE_ID",
"RESPONSIBLE_NAME" => self::ALIAS_USER_RESPONSIBLE.".NAME",
"RESPONSIBLE_LAST_NAME" => self::ALIAS_USER_RESPONSIBLE.".LAST_NAME",
"RESPONSIBLE_SECOND_NAME" => self::ALIAS_USER_RESPONSIBLE.".SECOND_NAME",
"RESPONSIBLE_LOGIN" => self::ALIAS_USER_RESPONSIBLE.".LOGIN",
"RESPONSIBLE_WORK_POSITION" => self::ALIAS_USER_RESPONSIBLE.".WORK_POSITION",
"RESPONSIBLE_PHOTO" => self::ALIAS_USER_RESPONSIBLE.".PERSONAL_PHOTO",
"DATE_START" => "DATE_START",
"TIME_ESTIMATE" => "TIME_ESTIMATE",
"REPLICATE" => "REPLICATE",
"DEADLINE" => "DEADLINE",
"DEADLINE_ORIG" => "DEADLINE",
"START_DATE_PLAN" => "START_DATE_PLAN",
"END_DATE_PLAN" => "END_DATE_PLAN",
"CREATED_BY" => "CREATED_BY",
"CREATED_BY_NAME" => self::ALIAS_USER_CREATE.".NAME",
"CREATED_BY_LAST_NAME" => self::ALIAS_USER_CREATE.".LAST_NAME",
"CREATED_BY_SECOND_NAME" => self::ALIAS_USER_CREATE.".SECOND_NAME",
"CREATED_BY_LOGIN" => self::ALIAS_USER_CREATE.".LOGIN",
"CREATED_BY_WORK_POSITION" => self::ALIAS_USER_CREATE.".WORK_POSITION",
"CREATED_BY_PHOTO" => self::ALIAS_USER_CREATE.".PERSONAL_PHOTO",
"CREATED_DATE" => "CREATED_DATE",
"CHANGED_BY" => "CHANGED_BY",
"CHANGED_DATE" => "CHANGED_DATE",
"STATUS_CHANGED_BY" => "STATUS_CHANGED_BY",
"CLOSED_BY" => "CLOSED_BY",
"CLOSED_DATE" => "CLOSED_DATE",
"ACTIVITY_DATE" => "ACTIVITY_DATE",
"GUID" => "GUID",
"XML_ID" => "XML_ID",
"MARK" => "MARK",
"ALLOW_CHANGE_DEADLINE" => "ALLOW_CHANGE_DEADLINE",
"ALLOW_TIME_TRACKING" => "ALLOW_TIME_TRACKING",
"MATCH_WORK_TIME" => "MATCH_WORK_TIME",
"TASK_CONTROL" => "TASK_CONTROL",
"ADD_IN_REPORT" => "ADD_IN_REPORT",
"COMPUTE_GROUP_ID" => new ExpressionField(
'COMPUTE_GROUP_ID',
'CASE WHEN %1$s IS NULL THEN 0 ELSE %1$s END',
['GROUP_ID']
),
"FORUM_TOPIC_ID" => "FORUM_TOPIC_ID",
"PARENT_ID" => "PARENT_ID",
"COMMENTS_COUNT" => self::ALIAS_FORUM_TOPIC.".POSTS",
"SERVICE_COMMENTS_COUNT" => self::ALIAS_FORUM_TOPIC.".POSTS_SERVICE",
"FORUM_ID" => self::ALIAS_FORUM_TOPIC.".FORUM_ID",
"MESSAGE_ID" => function () {
return $this->getMessageIdField();
},
"SITE_ID" => "SITE_ID",
"EXCHANGE_MODIFIED" => "EXCHANGE_MODIFIED",
"EXCHANGE_ID" => "EXCHANGE_ID",
"OUTLOOK_VERSION" => "OUTLOOK_VERSION",
"VIEWED_DATE" => self::ALIAS_TASK_VIEW.".VIEWED_DATE",
"DEADLINE_COUNTED" => "DEADLINE_COUNTED",
"FORKED_BY_TEMPLATE_ID" => "FORKED_BY_TEMPLATE_ID",
"NOT_VIEWED" => function () {
return $this->getNotViewedField();
},
"COMPUTE_FAVORITE" => function () {
return $this->getFavoriteField();
},
"SORTING" => self::ALIAS_TASK_SORT.".SORT",
"IM_CHAT_ID" => self::ALIAS_CHAT_TASK.".ID",
"IM_CHAT_MESSAGE_ID" => self::ALIAS_CHAT_TASK.".MESSAGE_ID",
"IM_CHAT_CHAT_ID" => self::ALIAS_CHAT_TASK.".CHAT_ID",
"IM_CHAT_AUTHOR_ID" => self::ALIAS_CHAT_TASK.".AUTHOR_ID",
"DURATION_PLAN_SECONDS" => "DURATION_PLAN",
"DURATION_TYPE_ALL" => "DURATION_TYPE",
"COMPUTE_DURATION_PLAN" => new ExpressionField(
'COMPUTE_DURATION_PLAN',
'case
when
%1$s = ''. TimeUnitType::MINUTE .'' or %1$s = ''. TimeUnitType::HOUR .''
then
ROUND(%2$s / 3600, 0)
when
%1$s = ''. TimeUnitType::DAY .'' or %1$s = '' or %1$s is null
then
ROUND(%2$s / 86400, 0)
else
%2$s
end',
["DURATION_TYPE", "DURATION_PLAN"]
),
"COMPUTE_DURATION_TYPE" => new ExpressionField(
"COMPUTE_DURATION_TYPE",
'case
when
%1$s = ''. TimeUnitType::MINUTE .''
then
''. TimeUnitType::HOUR .''
else
%1$s
end',
["DURATION_TYPE"]
),
"COMPUTE_STATUS_CHANGED_DATE" => new ExpressionField(
"COMPUTE_STATUS_CHANGED_DATE",
'CASE
WHEN
%1$s IS NULL
THEN
%2$s
ELSE
%1$s
END',
["STATUS_CHANGED_DATE", "CHANGED_DATE"]
),
"TIME_SPENT_IN_LOGS" => function () {
return $this->getTimeSpentField();
},
"DURATION_FACT" => function () {
return $this->getDurationFactField();
},
"IS_MUTED" => function () {
return $this->getUserOptionField("IS_MUTED", Option::MUTED);
},
"IS_PINNED" => function () {
return $this->getUserOptionField("IS_PINNED", Option::PINNED);
},
"IS_PINNED_IN_GROUP" => function () {
return $this->getUserOptionField("IS_PINNED_IN_GROUP", Option::PINNED_IN_GROUP);
},
"SUBORDINATE" => function () {
return $this->getSubordinateField();
},
"COUNT" => new ExpressionField("CNT", "COUNT(DISTINCT %s)", ['ID']),
"NULL_SORTING" => new ExpressionField(
"NULL_SORTING",
'CASE
WHEN
%s IS NULL
THEN
1
ELSE
0
END',
[self::ALIAS_TASK_SORT.".SORT"]
),
"LENGTH_DEADLINE" => new ExpressionField(
"LENGTH_DEADLINE",
'CASE
WHEN
length(%s) > 0
THEN
1
ELSE
0
END',
["DEADLINE"]
),
"SCENARIO_NAME" => self::ALIAS_TASK_SCENARIO.".SCENARIO",
];
}