155 lines
4.7 KiB
PHP
155 lines
4.7 KiB
PHP
<?php
|
||
|
||
namespace App\v2\Controller;
|
||
|
||
class FieldsController extends ApiController
|
||
{
|
||
public function getFields($app, $get = null, $post = null, $need_return = false) {
|
||
$error = false;
|
||
$errors = [];
|
||
|
||
$section = null;
|
||
if (isset($get['section']))
|
||
$section = $get['section'];
|
||
|
||
$filtrable = false;
|
||
if (isset($get['filtrable']))
|
||
$filtrable = boolval($get['filtrable']);
|
||
|
||
$source_id = (isset($get['source_id'])) ? (int)$get['source_id'] : null;
|
||
|
||
if (($user_id = $_SESSION['id']) && $section) {
|
||
|
||
// Открываем соединение с БД
|
||
$mdb = $app->container->get('mysql');
|
||
$pdo = $app->container->get('mypdo');
|
||
|
||
$list = [];
|
||
$results = [];
|
||
$user = new \User();
|
||
$user->get($user_id);
|
||
|
||
if ($agency_id = $user->getUserAgencyID()) {
|
||
$fields = new \Fields($pdo);
|
||
if ($section == "clients") {
|
||
$results = $fields->get_client_fields($agency_id, $source_id, $user_id);
|
||
} else if ($section == "requisitions") {
|
||
$results = $fields->get_req_fields($agency_id, $source_id, $user_id);
|
||
} else {
|
||
$error = true;
|
||
}
|
||
} else {
|
||
$error = true;
|
||
}
|
||
|
||
if (!$error) {
|
||
|
||
foreach ($results['fields'] as $field) {
|
||
|
||
$field_id = (int)$field['id'];
|
||
|
||
$values = null;
|
||
if ((bool)$field['is_podgroup'])
|
||
$values = (isset($results['values']['modelp_'.$field_id])) ? $results['values']['modelp_'.$field_id] : null;
|
||
else
|
||
$values = (isset($results['values']['model_'.$field_id])) ? $results['values']['model_'.$field_id] : null;
|
||
|
||
$value = json_decode($values, true);
|
||
|
||
|
||
$sub_groups = [];
|
||
if (!empty($field['podgroups'])) {
|
||
foreach ($field['podgroups'] as $key => $group) {
|
||
|
||
$sub_group['id'] = $group['id'];
|
||
$sub_group['name'] = ($group['title']) ? trim($group['title']) : null;
|
||
$sub_group['value'] = ($group['id']) ? (int)$group['id'] : null;
|
||
$sub_group['type'] = ($group['type']) ? (int)$group['type'] : 0;
|
||
|
||
if (!empty($field['podgroups_select'])) {
|
||
foreach ($field['podgroups_select'] as $select) {
|
||
if ($group['id'] == $select['id']) {
|
||
$sub_group['is_active'] = true;
|
||
} else {
|
||
$sub_group['is_active'] = false;
|
||
}
|
||
}
|
||
} else {
|
||
$sub_group['is_active'] = false;
|
||
}
|
||
|
||
if (isset($group['params'])) {
|
||
|
||
if (is_array($group['params']['items'])) {
|
||
|
||
$sub_group['params']['items'] = [];
|
||
foreach ($group['params']['items'] as $option) {
|
||
$sub_group['options'][] = [
|
||
'name' => ($option['name']) ? trim($option['name']) : null,
|
||
'value' => ($option['value']) ? (int)$option['value'] : null,
|
||
'mode' => ($option['mode']) ? (int)$option['mode'] : null,
|
||
];
|
||
}
|
||
}
|
||
}
|
||
|
||
$sub_group['is_required'] = boolval($group['is_required']);
|
||
$sub_group['created_by'] = ($group['created_by']) ? (int)$group['created_by'] : null;
|
||
$sub_group['updated_by'] = ($group['updated_by']) ? (int)$group['updated_by'] : null;
|
||
$sub_groups['modelp_' . $group['id']] = $sub_group;
|
||
}
|
||
}
|
||
|
||
if (!$filtrable || ($filtrable === true && (bool)$field['is_filtrable'])) {
|
||
|
||
$list['model_' . $field_id] = [
|
||
'id' => (int)$field_id,
|
||
'label' => $field['title'],
|
||
'type' => (int)$field['type'],
|
||
'is_for_clients' => (bool)$field['is_client'],
|
||
'is_for_requisitions' => (bool)$field['is_req'],
|
||
'is_sub_group' => (bool)$field['is_podgroup'],
|
||
'is_required' => (bool)$field['is_required'],
|
||
'is_filtrable' => (bool)$field['is_filtrable'],
|
||
'requisition_type' => ((bool)$field['is_req'] && isset($field['req_type'])) ? json_decode($field['req_type']) : null,
|
||
'value' => $value,
|
||
'params' => (!empty((bool)$field['is_podgroup'])) ? ['items' => $sub_groups] : $field['params'],
|
||
'created_at' => $field['created_at'],
|
||
'created_by' => ($field['created_by']) ? $field['created_by'] : null,
|
||
'updated_at' => $field['updated_at'],
|
||
'updated_by' => ($field['updated_by']) ? $field['updated_by'] : null,
|
||
'_raw' => $field,
|
||
];
|
||
}
|
||
}
|
||
|
||
if ($need_return) {
|
||
return $list;
|
||
} else {
|
||
$app->response->header('Content-Type', 'application/json');
|
||
$app->response->setStatus(200);
|
||
$app->response->setBody(json_encode([
|
||
'success' => true,
|
||
'user_id' => $_SESSION['id'],
|
||
'list' => $list,
|
||
], JSON_UNESCAPED_UNICODE));
|
||
$app->stop();
|
||
}
|
||
}
|
||
}
|
||
|
||
if ($need_return) {
|
||
return false;
|
||
} else {
|
||
$app->response->header('Content-Type', 'application/json');
|
||
$app->response->setStatus(200);
|
||
$app->response->setBody(json_encode([
|
||
'success' => false,
|
||
'user_id' => $_SESSION['id'],
|
||
'errors' => $errors,
|
||
], JSON_UNESCAPED_UNICODE));
|
||
$app->stop();
|
||
}
|
||
}
|
||
}
|