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(); } } }