Proyectos de Subversion LeadersLinked - Services

Rev

Rev 499 | Rev 501 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 499 Rev 500
Línea 103... Línea 103...
103
        }
103
        }
Línea 104... Línea 104...
104
 
104
 
Línea 105... Línea 105...
105
        if ($request->isGet()) {
105
        if ($request->isGet()) {
106
 
106
 
Línea 107... Línea 107...
107
            // Llamar a la función que obtiene los archivos de la vacante
107
            // Llamar a la función que obtiene los archivos de la vacante
108
            $files = $this->getSelectionFiles($vacancyId);
108
            $candidates = $this->getSelectionPreAplicationCandidates($vacancyId);
109
 
109
 
110
            return new JsonModel([
110
            return new JsonModel([
111
                'success' => true,
111
                'success' => true,
Línea 112... Línea 112...
112
                'data' => $files
112
                'data' => $candidates
113
            ]);
113
            ]);
Línea 137... Línea 137...
137
                ]);
137
                ]);
138
            }
138
            }
Línea 139... Línea 139...
139
 
139
 
140
            // 🔹 Procesar los CVs y analizar compatibilidad con los criterios
140
            // 🔹 Procesar los CVs y analizar compatibilidad con los criterios
141
            try {
141
            try {
142
                //$processedCvs = $this->processCvs($cvs, $criteria, $vacancyId);
-
 
143
 
-
 
144
                $candidates = [
-
 
145
                    [
-
 
146
                        "uuid" => "b3e5b5c5-32b2-43b8-8c0a-3f9b9b5e8f3b",
-
 
147
                        "vacancy_id" => "5",
-
 
148
                        "full_name" => "Stivens Carrasquel",
-
 
149
                        "location" => "Caracas, Venezuela",
-
 
150
                        "years_of_experience" => 5,
-
 
151
                        "previous_positions" => [
-
 
152
                            "Desarrollador Frontend en Cesa Management Solutions",
-
 
153
                            "Desarrollador Full-Stack en Korvuss",
-
 
154
                            "Desarrollador Full-Stack Freelance",
-
 
155
                            "Analista TI en Empresas Polar"
-
 
156
                        ],
-
 
157
                        "specialization" => "Informática",
-
 
158
                        "skills" => [
-
 
159
                            "JavaScript",
-
 
160
                            "TypeScript",
-
 
161
                            "C#",
-
 
162
                            "React.js",
-
 
163
                            "Next.js",
-
 
164
                            "Redux",
-
 
165
                            "Zustand",
-
 
166
                            "Axios",
-
 
167
                            "React Native",
-
 
168
                            "Node.js",
-
 
169
                            "Express.js",
-
 
170
                            "MongoDB",
-
 
171
                            "SQL",
-
 
172
                            "Jest",
-
 
173
                            "SCRUM"
-
 
174
                        ],
-
 
175
                        "compatibility_score" => 75
-
 
176
                    ],
-
 
177
                    [
-
 
178
                        "uuid" => "f7d3b6f1-0c5a-4c2a-9b8e-0e6f2e35d8e3",
-
 
179
                        "vacancy_id" => "5",
-
 
180
                        "full_name" => "Lisseth Gonzalez",
-
 
181
                        "location" => "Caracas, Venezuela",
-
 
182
                        "years_of_experience" => 8,
-
 
183
                        "previous_positions" => [
-
 
184
                            "Docente Suplente en CEIN 'Magdalena de Sucre'",
-
 
185
                            "Personal Administrativo en UEN 'Mireya Vanegas'"
-
 
186
                        ],
-
 
187
                        "specialization" => "Lengua y Literatura",
-
 
188
                        "skills" => [
-
 
189
                            "Manejo avanzado de herramientas Microsoft Office",
-
 
190
                            "Elaboración de blog y Páginas Web",
-
 
191
                            "Docente en el área de Castellano y Literatura"
-
 
192
                        ],
-
 
193
                        "compatibility_score" => 40
-
 
194
                    ]
-
 
195
                ];
-
 
196
 
-
 
Línea 197... Línea 142...
197
                $data = $this->saveOrUpdatePreApplications($candidates);
142
                $processedCvs = $this->processCvs($cvs, $criteria, $vacancyId);
198
 
143
 
199
                return new JsonModel([
144
                return new JsonModel([
200
                    'success' => true,
145
                    'success' => true,
201
                    'data' => $data
146
                    'data' => $processedCvs
202
                ]);
147
                ]);
203
            } catch (\Exception $e) {
148
            } catch (\Exception $e) {
204
                return new JsonModel([
149
                return new JsonModel([
Línea 292... Línea 237...
292
 
237
 
293
        return $formattedText;
238
        return $formattedText;
Línea 294... Línea 239...
294
    }
239
    }
295
 
240
 
296
 
241
 
297
    public function getSelectionFiles($vacancyId)
242
    public function getSelectionPreAplicationCandidates($vacancyId)
298
    {
243
    {
299
        // 🔹 Verificar si el ID es válido
244
        // 🔹 Verificar si el ID es válido
Línea 305... Línea 250...
305
        }
250
        }
Línea 306... Línea 251...
306
 
251
 
307
        // 🔹 Construcción de la consulta SQL
252
        // 🔹 Construcción de la consulta SQL
308
        $queryMapper = QueryMapper::getInstance($this->adapter);
253
        $queryMapper = QueryMapper::getInstance($this->adapter);
309
        $select = $queryMapper->getSql()->select();
254
        $select = $queryMapper->getSql()->select();
310
        $select->from('tbl_recruitment_selection_files');
255
        $select->from('tbl_recruitment_selection_pre_aplications'); // Se cambia la tabla
Línea 311... Línea 256...
311
        $select->columns(['uuid', 'id', 'name', 'file']);
256
        $select->columns(['*']); // Obtener todos los campos
312
 
257
 
Línea 313... Línea 258...
313
        // 🔹 Filtrar por vacancy_id
258
        // 🔹 Filtrar por vacancy_id
Línea 321... Línea 266...
321
        $hydrator = new ArraySerializableHydrator();
266
        $hydrator = new ArraySerializableHydrator();
322
        $hydratingResultSet = new HydratingResultSet($hydrator);
267
        $hydratingResultSet = new HydratingResultSet($hydrator);
323
        $hydratingResultSet->initialize($resultSet);
268
        $hydratingResultSet->initialize($resultSet);
Línea 324... Línea 269...
324
 
269
 
325
        // 🔹 Convertir los resultados en un array de diccionarios
270
        // 🔹 Convertir los resultados en un array de diccionarios
326
        $files = [];
271
        $applications = [];
327
        foreach ($hydratingResultSet as $row) {
272
        foreach ($hydratingResultSet as $row) {
328
            $files[] = $row;
273
            $applications[] = $row;
Línea 329... Línea 274...
329
        }
274
        }
330
 
275
 
Línea 331... Línea 276...
331
        return $files;
276
        return $applications;
332
    }
277
    }
333
 
278
 
Línea 375... Línea 320...
375
 
320
 
376
        // Retornar el contenido arreglado
321
        // Retornar el contenido arreglado
377
        return $text;
322
        return $text;
Línea 378... Línea -...
378
    }
-
 
379
 
323
    }
380
 
324
 
381
    public function processCvs(array $cvs, $criteria, $vacancyId)
325
    public function processCvs(array $cvs, $criteria, $vacancyId)
382
    {
326
    {
383
        // Extraer los textos de los CVs desde base64
327
        // Extraer los textos de los CVs desde base64