@@ 7,7 7,20 @@ class ValidatorBuscarPuesto
{
public $messages;
- private function validateLevels(Request $request, array &$parametros) {
+ protected array $validOrdenacion;
+
+ public function setValidOrdenacion(array $ordenacion)
+ {
+ $this->validOrdenacion = $ordenacion;
+ }
+
+ protected function getValidOrdenacion(): array
+ {
+ return $this->validOrdenacion;
+ }
+
+ private function validateLevels(Request $request, array &$parametros)
+ {
$okNivelMin = true;
$okNivelMax = true;
@@ 31,7 44,8 @@ class ValidatorBuscarPuesto
return [$okNivelMin, $okNivelMax, $nivelMinimo, $nivelMaximo];
}
- private function validateGroup(Request $request, &$parametros) {
+ private function validateGroup(Request $request, &$parametros)
+ {
$name = 'grupo';
$thereIsGroup = false;
$parametros[$name] = [];
@@ 48,7 62,8 @@ class ValidatorBuscarPuesto
return $thereIsGroup;
}
- private function validateOrganismo(Request $request, &$parametros) {
+ private function validateOrganismo(Request $request, &$parametros)
+ {
$name = 'organismo';
$thereIsOrg = false;
$parametros[$name] = [];
@@ 65,7 80,8 @@ class ValidatorBuscarPuesto
return $thereIsOrg;
}
- private function validateEstado(Request $request, &$parametros) {
+ private function validateEstado(Request $request, &$parametros)
+ {
$name = 'estado';
$estado = trim($request->getParsedBody()[$name]);
$estados = ['vacante', 'ocupada', 'ambos'];
@@ 75,7 91,8 @@ class ValidatorBuscarPuesto
}
}
- private function validateProvision(Request $request, &$parametros) {
+ private function validateProvision(Request $request, &$parametros)
+ {
$name = 'provision';
$provision = trim($request->getParsedBody()[$name]);
$provisiones = ['C', 'I', 'L'];
@@ 84,6 101,33 @@ class ValidatorBuscarPuesto
$parametros[$name] = "";
}
}
+
+ private function validateOrdenacion(Request $request, &$parametros)
+ {
+ $ordenacion1 = trim($request->getParsedBody()['ordenacion_1']);
+ $parametros['ordenacion_1'] = "";
+ if (key_exists($ordenacion1, $this->getValidOrdenacion())) {
+ $parametros['ordenacion_1'] = $ordenacion1;
+ }
+
+ $ordenacion2 = trim($request->getParsedBody()['ordenacion_2']);
+ $parametros['ordenacion_2'] = "";
+ if (key_exists($ordenacion2, $this->getValidOrdenacion())) {
+ $parametros['ordenacion_2'] = $ordenacion2;
+ }
+
+ $ordenacion3 = trim($request->getParsedBody()['ordenacion_3']);
+ $parametros['ordenacion_3'] = "";
+ if (key_exists($ordenacion3, $this->getValidOrdenacion())) {
+ $parametros['ordenacion_3'] = $ordenacion3;
+ }
+
+ $ordenacion4 = trim($request->getParsedBody()['ordenacion_4']);
+ $parametros['ordenacion_4'] = "";
+ if (key_exists($ordenacion4, $this->getValidOrdenacion())) {
+ $parametros['ordenacion_4'] = $ordenacion4;
+ }
+ }
public function validate(Request $request)
{
@@ 108,6 152,8 @@ class ValidatorBuscarPuesto
$parametros[$name] = trim($request->getParsedBody()[$name]);
}
+ $this->validateOrdenacion($request, $parametros);
+
return $parametros;
}
@@ 91,7 91,28 @@ function dataForIndex($app, $isWebview)
fn ($g) => '' === ($g['grupo']) ? ['grupo' => 'Sin grupo'] : $g,
$grupos
);
- return [$grupos, $organismos, $paises, $provincias];
+ $ordenacion = [
+ 'nivel' => [
+ 'nombre' => 'Nivel',
+ ],
+ 'puesto.ministerio_id' => [
+ 'nombre' => 'Ministerio',
+ ],
+ 'puesto.centrodirectivo_id' => [
+ 'nombre' => 'Centro Directivo',
+ ],
+ 'puesto.unidad_id' => [
+ 'nombre' => 'Unidad',
+ ],
+ 'especifico' => [
+ 'nombre' => 'Complemento específico',
+ ],
+ 'grupo' => [
+ 'nombre' => 'Grupo',
+ ],
+ ];
+
+ return [$grupos, $organismos, $paises, $provincias, $ordenacion];
}
$app->get('/', function (Request $request, Response $response, $args) use ($app) {
@@ 104,7 125,13 @@ $app->get('/', function (Request $request, Response $response, $args) use ($app)
'pais' => 0,
'provincia' => 0,
'provision' => '',
- 'textolibre' => ''
+ 'textolibre' => '',
+ 'ordenacion_1' => 'nivel',
+ 'ordenacion_2' => 'puesto.ministerio_id',
+ 'ordenacion_3' => 'puesto.centrodirectivo_id',
+ 'ordenacion_4' => 'puesto.unidad_id',
+ 'ordenacion_5' => '',
+ 'ordenacion_6' => ''
];
$configuracion = $app->getContainer()['configuracion'];
@@ 115,6 142,7 @@ $app->get('/', function (Request $request, Response $response, $args) use ($app)
$organismos,
$paises,
$provincias,
+ $ordenacion
) = dataForIndex($app, $isWebview);
return $this->view->render(
@@ 128,6 156,7 @@ $app->get('/', function (Request $request, Response $response, $args) use ($app)
'organismos' => $organismos,
'paises' => $paises,
'provincias' => $provincias,
+ 'ordenacion' => $ordenacion,
'is_webview' => $isWebview,
'flash' => $flash
]
@@ 136,7 165,18 @@ $app->get('/', function (Request $request, Response $response, $args) use ($app)
$app->post('/buscapuesto', function (Request $request, Response $response, $args) use ($app) {
$configuracion = $app->getContainer()['configuracion'];
+
+ $isWebview = is_requested_by_webview($configuracion);
+ list(
+ $grupos,
+ $organismos,
+ $paises,
+ $provincias,
+ $ordenacion
+ ) = dataForIndex($app, $isWebview);
+
$validator = new ValidatorBuscarPuesto();
+ $validator->setValidOrdenacion($ordenacion);
$parametros = $validator->validate($request);
$formDefaultValues = [
@@ 151,14 191,6 @@ $app->post('/buscapuesto', function (Request $request, Response $response, $args
'provision' => $parametros['provision']
];
- $isWebview = is_requested_by_webview($configuracion);
- list(
- $grupos,
- $organismos,
- $paises,
- $provincias,
- ) = dataForIndex($app, $isWebview);
-
$flash = [];
$flash['defaults'] = $formDefaultValues;
@@ 178,6 210,7 @@ $app->post('/buscapuesto', function (Request $request, Response $response, $args
'organismos' => $organismos,
'paises' => $paises,
'provincias' => $provincias,
+ 'ordenacion' => $ordenacion,
'is_webview' => $isWebview,
'flash' => $flash
]
@@ 194,6 227,13 @@ $app->post('/buscapuesto', function (Request $request, Response $response, $args
$provision = $parametros['provision'];
$textoLibre = $parametros['textolibre'];
+ $ordenacion1 = $parametros['ordenacion_1'];
+ $ordenacion2 = $parametros['ordenacion_2'];
+ $ordenacion3 = $parametros['ordenacion_3'];
+ $ordenacion4 = $parametros['ordenacion_4'];
+
+
+ die(var_export($request->getParsedBody(), true));
$puesto = $app->getContainer()['puesto'];
$puesto->addSearchCriteria(new NivelPuestoCriteria((int)$nivelMinimo, (int)$nivelMaximo));
$puesto->addSearchCriteria(new OrganismoCriteria($organismo));