Rapport-Laravel/app/Http/Controllers/UserattributeController.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;
}
}