124 lines
4.4 KiB
PHP
124 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
|
|
class UserattributeController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->_service = 'ums';
|
|
$this->_module = 'userattribute';
|
|
$this->_viewname = 'userattribute';
|
|
$this->_title = 'User Attributes';
|
|
$this->_base_url = '/userattribute';
|
|
}
|
|
|
|
protected function get_list_fields()
|
|
{
|
|
return [
|
|
'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
|
|
'attribute' => ['title' => 'Attribute', 'type' => 'text'],
|
|
'code' => ['title' => 'Code', 'type' => 'text'],
|
|
'type' => ['title' => 'Type', 'type' => 'text'],
|
|
'status' => ['title' => 'Status', 'type' => 'select'],
|
|
];
|
|
}
|
|
|
|
protected function get_form_fields($type, $values)
|
|
{
|
|
$roles_dd = [];
|
|
$roles = $this->getlambda('get', 'ums', 'roles', 'dropdown');
|
|
if (isset($roles->data->items) && is_array($roles->data->items)) {
|
|
foreach ($roles->data->items as $role) {
|
|
$roles_dd[$role->id] = $role->name;
|
|
}
|
|
}
|
|
|
|
return [
|
|
'attribute' => ['title' => 'Attribute', 'type' => 'text', 'required' => true],
|
|
'code' => ['title' => 'Code (small caps without spaces and special chars except "_")', 'type' => 'text', 'required' => true],
|
|
'required' => ['title' => 'Is Required', 'type' => 'yesno', 'required' => true],
|
|
'editable' => ['title' => 'Is Editable', 'type' => 'yesno', 'required' => true],
|
|
'type' => [
|
|
'title' => 'Attribute Type',
|
|
'type' => 'select',
|
|
'required' => true,
|
|
'values' => [
|
|
'text' => 'Text',
|
|
'number' => 'Number',
|
|
'date' => 'Date',
|
|
'email' => 'Email',
|
|
'url' => 'Url',
|
|
'select' => 'Dropdown',
|
|
'multiselect' => 'Multi Select',
|
|
'checkbox' => 'Checkbox',
|
|
'radio' => 'Radio',
|
|
],
|
|
],
|
|
'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'values' => $roles_dd],
|
|
'sort_order' => ['title' => 'Sort Order', 'type' => 'number', 'required' => true],
|
|
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
|
|
'options' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true],
|
|
];
|
|
}
|
|
|
|
protected function _beforeform($type, $values)
|
|
{
|
|
if ($type == 'edit' && is_object($values)) {
|
|
if (!empty($values->id)) {
|
|
$this->_request->session()->put('entity_id', $values->id);
|
|
}
|
|
if (!isset($values->roles) || !is_array($values->roles)) {
|
|
$values->roles = [];
|
|
}
|
|
if (!isset($values->options) || !is_array($values->options)) {
|
|
$values->options = [];
|
|
}
|
|
if (!isset($values->required)) {
|
|
$values->required = 'yes';
|
|
}
|
|
if (!isset($values->editable)) {
|
|
$values->editable = 'yes';
|
|
}
|
|
if (!isset($values->sort_order)) {
|
|
$values->sort_order = 0;
|
|
}
|
|
} else {
|
|
$this->_request->session()->forget('entity_id');
|
|
}
|
|
|
|
return $values;
|
|
}
|
|
|
|
protected function _beforesave($type, $request)
|
|
{
|
|
$data = $request->except('_token');
|
|
$data['id'] = $request->session()->get('entity_id');
|
|
if (!$data['id']) {
|
|
unset($data['id']);
|
|
}
|
|
$options = [];
|
|
if (isset($data['option_value'])) {
|
|
foreach ($data['option_value'] as $k => $ov) {
|
|
$options[] = ['value' => $ov, 'display' => $data['option_name'][$k]];
|
|
}
|
|
$data['options'] = $options;
|
|
unset($data['option_value']);
|
|
unset($data['option_name']);
|
|
}
|
|
if (!isset($data['roles']) || !is_array($data['roles'])) {
|
|
$data['roles'] = [];
|
|
}
|
|
$optionTypes = ['select', 'multiselect', 'checkbox', 'radio'];
|
|
if (!isset($data['type']) || !in_array($data['type'], $optionTypes, true)) {
|
|
$data['options'] = [];
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
}
|