static function getMap()
{
return [
(new FieldsIntegerField('ID'))
->configurePrimary(true)
->configureAutocomplete(true)
,
(new FieldsStringField('NAME'))
,
(new FieldsEnumField('SCHEDULE_TYPE'))
->configureValues([
static::SCHEDULE_TYPE_FIXED,
static::SCHEDULE_TYPE_FLEXTIME,
static::SCHEDULE_TYPE_SHIFT,
])
->configureDefaultValue(static::SCHEDULE_TYPE_FIXED)
,
(new FieldsEnumField('REPORT_PERIOD'))
->configureValues([
static::REPORT_PERIOD_WEEK,
static::REPORT_PERIOD_TWO_WEEKS,
static::REPORT_PERIOD_MONTH,
static::REPORT_PERIOD_QUARTER,
])
->configureDefaultValue(static::REPORT_PERIOD_MONTH)
,
(new FieldsArrayField('REPORT_PERIOD_OPTIONS'))
->configureSerializeCallback(function ($value) {
try
{
return Json::encode($value);
}
catch (Exception $exc)
{
return Json::encode([]);
}
})
->configureUnserializeCallback(function ($value) {
try
{
return Json::decode($value);
}
catch (Exception $exc)
{
return [];
}
})
,
(new FieldsIntegerField('CALENDAR_ID'))
,
(new FieldsArrayField('ALLOWED_DEVICES'))
->configureSerializeCallback(function ($value) {
try
{
return Json::encode($value);
}
catch (Exception $exc)
{
return Json::encode([]);
}
})
->configureUnserializeCallback(function ($value) {
try
{
return Json::decode($value);
}
catch (Exception $exc)
{
return Json::decode('[]');
}
})
,
(new FieldsEnumField('DELETED'))
->configureValues([
static::DELETED_YES,
static::DELETED_NO,
])
->configureDefaultValue(static::DELETED_NO)
,
(new FieldsBooleanField('IS_FOR_ALL_USERS'))
->configureDefaultValue(0)
->configureValues(0, 1)
,
(new FieldsArrayField('WORKTIME_RESTRICTIONS'))
->configureDefaultValue([])
->configureSerializeCallback(function ($value) {
try
{
return Json::encode($value);
}
catch (Exception $exc)
{
return Json::encode([]);
}
})
->configureUnserializeCallback(function ($value) {
try
{
return Json::decode($value);
}
catch (Exception $exc)
{
return [];
}
})
,
(new FieldsIntegerField('CONTROLLED_ACTIONS'))
,
(new FieldsIntegerField('UPDATED_BY'))
,
(new FieldsIntegerField('DELETED_BY'))
,
(new FieldsStringField('DELETED_AT'))
,
(new FieldsIntegerField('CREATED_BY'))
->configureDefaultValue(function () {
global $USER;
if ($USER && is_object($USER))
{
return $USER->GetID();
}
return 0;
})
,
(new FieldsDatetimeField('CREATED_AT'))
->configureDefaultValue(function () {
return new MainTypeDateTime();
})
,
# relations
(new OneToMany('SHIFTS', ShiftTable::class, 'SCHEDULE')) // active, not deleted
->configureJoinType('left')
,
(new OneToMany('ALL_SHIFTS', ShiftTable::class, 'SCHEDULE_WITH_ALL_SHIFTS')) // deleted too
->configureJoinType('left')
,
(new Reference(
'SCHEDULE_VIOLATION_RULES',
ViolationRulesTable::class,
Join::on('this.ID', 'ref.SCHEDULE_ID')->where('ref.ENTITY_CODE', EntityCodesHelper::getAllUsersCode())
))
->configureJoinType('LEFT')
,
(new Reference(
'CALENDAR',
CalendarTable::class,
Join::on('this.CALENDAR_ID', 'ref.ID')
))
->configureJoinType('LEFT')
,
(new OneToMany('USER_ASSIGNMENTS', ScheduleUserTable::class, 'SCHEDULE'))
->configureJoinType('LEFT')
,
(new OneToMany('DEPARTMENT_ASSIGNMENTS', ScheduleDepartmentTable::class, 'SCHEDULE'))
->configureJoinType('LEFT')
,
];
}