Completed
Push — master ( 9b8b24...6e1754 )
by Julito
58:58
created

Sepe::fixDate()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 5
nc 2
nop 1
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Class Sepe
5
 */
6
class Sepe
7
{
8
    /**
9
     * @param crearCentroInput[] $crearCentroInput
10
     *
11
     * @return array
12
     */
13
    public function crearCentro($crearCentroInput)
14
    {
15
        /* Tracking log */
16
        $tableLog = Database::get_main_table('plugin_sepe_log');
17
        $paramsLog = array(
18
            'ip' => $_SERVER['REMOTE_ADDR'],
19
            'action' => "crearCentro",
20
            'fecha' => date("Y-m-d H:i:s")
21
        );
22
        Database::insert($tableLog, $paramsLog);
23
        /* End tracking log */
24
25
        // Code
26
        $crearCentroInput = $crearCentroInput->DATOS_IDENTIFICATIVOS;
27
        $centerOrigin = $crearCentroInput->ID_CENTRO->ORIGEN_CENTRO;
28
        $centerCode = $crearCentroInput->ID_CENTRO->CODIGO_CENTRO;
29
        $centerName = $crearCentroInput->NOMBRE_CENTRO;
30
        $urlPlatform = $crearCentroInput->URL_PLATAFORMA;
31
        $urlTracking = $crearCentroInput->URL_SEGUIMIENTO;
32
        $phone = $crearCentroInput->TELEFONO;
33
        $mail = $crearCentroInput->EMAIL;
34
35
        if (empty($centerOrigin) ||
36
            empty($centerCode) ||
37
            empty($centerName) ||
38
            empty($urlPlatform) ||
39
            empty($urlTracking) ||
40
            empty($phone) ||
41
            empty($mail)
42
        ) {
43
            error_log('no data');
44
            return array(
45
                "RESPUESTA_DATOS_CENTRO" => array(
46
                    "CODIGO_RETORNO" => "2",
47
                    "ETIQUETA_ERROR" => "Error en parametro",
48
                    "DATOS_IDENTIFICATIVOS" => $crearCentroInput
49
                )
50
            );
51
        }
52
53
        $table = Database::get_main_table('plugin_sepe_center');
54
55
        // Check if exists data in table
56
        if (Database::count_rows($table) > 0) {
0 ignored issues
show
Deprecated Code introduced by
The function Database::count_rows() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

56
        if (/** @scrutinizer ignore-deprecated */ Database::count_rows($table) > 0) {
Loading history...
57
            // Check if exists actions
58
            $table_actions = Database::get_main_table('plugin_sepe_actions');
59
            if (Database::count_rows($table_actions) > 0) {
0 ignored issues
show
Deprecated Code introduced by
The function Database::count_rows() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

59
            if (/** @scrutinizer ignore-deprecated */ Database::count_rows($table_actions) > 0) {
Loading history...
60
                return array(
61
                    "RESPUESTA_DATOS_CENTRO" => array(
62
                        "CODIGO_RETORNO" => "1",
63
                        "ETIQUETA_ERROR" => "Centro con acciones",
64
                        "DATOS_IDENTIFICATIVOS" => $crearCentroInput
65
                    )
66
                );
67
            } else {
68
                $sql = "DELETE FROM $table";
69
                Database::query($sql);
70
            }
71
        }
72
73
        $params = array(
74
            'center_origin' => $centerOrigin,
75
            'center_code' => $centerCode,
76
            'center_name' => $centerName,
77
            'url' => $urlPlatform,
78
            'tracking_url' => $urlTracking,
79
            'phone' => $phone,
80
            'mail' => $mail,
81
        );
82
83
        $id = Database::insert($table, $params);
84
85
        if (empty($id)) {
86
            return array(
87
                "RESPUESTA_DATOS_CENTRO" => array(
88
                    "CODIGO_RETORNO" => "-1",
89
                    "ETIQUETA_ERROR" => "Problema base de datos",
90
                    "DATOS_IDENTIFICATIVOS" => $crearCentroInput
91
                )
92
            );
93
        } else {
94
            return array(
95
                "RESPUESTA_DATOS_CENTRO" => array(
96
                    "CODIGO_RETORNO" => "0",
97
                    "ETIQUETA_ERROR" => "Correcto",
98
                    "DATOS_IDENTIFICATIVOS" => $crearCentroInput
99
                )
100
            );
101
        }
102
    }
103
104
    /**
105
     *
106
     * @return stdClass
107
     */
108
    public function obtenerDatosCentro()
109
    {
110
        /* Tracking Log */
111
        $tableLog = Database::get_main_table('plugin_sepe_log');
112
        $paramsLog = array(
113
            'ip' => $_SERVER['REMOTE_ADDR'],
114
            'action' => "obtenerDatosCentro",
115
            'fecha' => date("Y-m-d H:i:s")
116
        );
117
        Database::insert($tableLog, $paramsLog);
118
        /* End tracking log */
119
120
        // Code
121
        $table = Database::get_main_table('plugin_sepe_center');
122
123
        // Comprobamos si existen datos almacenados previamente
124
        if (Database::count_rows($table) > 0) {
0 ignored issues
show
Deprecated Code introduced by
The function Database::count_rows() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

124
        if (/** @scrutinizer ignore-deprecated */ Database::count_rows($table) > 0) {
Loading history...
125
            //Hay datos en la tabla;
126
            $sql = "SELECT * FROM $table;";
127
            $rs = Database::query($sql);
128
            if (!$rs) {
129
                return array(
0 ignored issues
show
Bug Best Practice introduced by
The expression return array('CODIGO_RET...IDENTIFICATIVOS' => '') returns the type array<string,string> which is incompatible with the documented return type stdClass.
Loading history...
130
                    "CODIGO_RETORNO" => "-1",
131
                    "ETIQUETA_ERROR" => "Problema acceso base de datos",
132
                    "DATOS_IDENTIFICATIVOS" => ''
133
                );
134
            } else {
135
                $row = Database::fetch_assoc($rs);
136
                $centerOrigin = $row['center_origin'];
137
                $centerCode = $row['center_code'];
138
                $centerName = $row['center_name'];
139
                $urlPlatform = $row['url'];
140
                $urlTracking = $row['tracking_url'];
141
                $phone = $row['phone'];
142
                $mail = $row['mail'];
143
144
                $data = new stdClass();
145
                $data->ID_CENTRO = new stdClass();
146
                $data->ID_CENTRO->ORIGEN_CENTRO = $centerOrigin;
147
                $data->ID_CENTRO->CODIGO_CENTRO = $centerCode;
148
                $data->NOMBRE_CENTRO = $centerName;
149
                $data->URL_PLATAFORMA = $urlPlatform;
150
                $data->URL_SEGUIMIENTO = $urlTracking;
151
                $data->TELEFONO = $phone;
152
                $data->EMAIL = $mail;
153
154
                $obj = new stdClass();
155
                $obj->CODIGO_RETORNO = 0;
156
                $obj->ETIQUETA_ERROR = 'Correcto';
157
                $obj->DATOS_IDENTIFICATIVOS = new SoapVar($data, SOAP_ENC_OBJECT);
158
159
                $result = new stdClass();
160
                $result->RESPUESTA_DATOS_CENTRO = new SoapVar($obj, SOAP_ENC_OBJECT);
161
162
                return $result;
163
            }
164
        } else {
165
            $data = new stdClass();
166
            $data->ID_CENTRO = new stdClass();
167
            $data->ID_CENTRO->ORIGEN_CENTRO = '';
168
            $data->ID_CENTRO->CODIGO_CENTRO = '';
169
            $data->NOMBRE_CENTRO = '';
170
            $data->URL_PLATAFORMA = '';
171
            $data->URL_SEGUIMIENTO = '';
172
            $data->TELEFONO = '';
173
            $data->EMAIL = '';
174
175
            $obj = new stdClass();
176
            $obj->CODIGO_RETORNO = 0;
177
            $obj->ETIQUETA_ERROR = 'Correcto';
178
            $obj->DATOS_IDENTIFICATIVOS = new SoapVar($data, SOAP_ENC_OBJECT);
179
180
            $result = new stdClass();
181
            $result->RESPUESTA_DATOS_CENTRO = new SoapVar($obj, SOAP_ENC_OBJECT);
182
            //error_log('Sin datos en la BD');
183
            /*
184
            $data = new stdClass();
185
            $obj = new stdClass();
186
            $obj->CODIGO_RETORNO = '-1';
187
            $obj->ETIQUETA_ERROR = 'Sin datos';
188
            $obj->DATOS_IDENTIFICATIVOS = new SoapVar($data, SOAP_ENC_OBJECT);
189
190
            $result = new stdClass();
191
            $result->RESPUESTA_DATOS_CENTRO = new SoapVar($obj, SOAP_ENC_OBJECT);
192
            */
193
            return $result;
194
        }
195
    }
196
197
    /**
198
     * @param $crearAccionInput
199
     * @return array
200
     */
201
    public function crearAccion($crearAccionInput)
202
    {
203
        /* Tracking Log */
204
        $tableLog = Database::get_main_table('plugin_sepe_log');
205
        $paramsLog = array(
206
            'ip' => $_SERVER['REMOTE_ADDR'],
207
            'action' => "crearAccion",
208
            'fecha' => date("Y-m-d H:i:s")
209
        );
210
        Database::insert($tableLog, $paramsLog);
211
        /* End tracking log */
212
213
        $array = json_decode(json_encode($crearAccionInput), true);
214
        $crearAccionInputArray = (array) $array;
215
        // Code
216
        $actionOrigin = $crearAccionInput->ACCION_FORMATIVA->ID_ACCION->ORIGEN_ACCION;
217
        $actionCode = $crearAccionInput->ACCION_FORMATIVA->ID_ACCION->CODIGO_ACCION;
218
        $situation = $crearAccionInput->ACCION_FORMATIVA->SITUACION;
219
        $specialtyOrigin = $crearAccionInput->ACCION_FORMATIVA->ID_ESPECIALIDAD_PRINCIPAL->ORIGEN_ESPECIALIDAD;
220
        $professionalArea = $crearAccionInput->ACCION_FORMATIVA->ID_ESPECIALIDAD_PRINCIPAL->AREA_PROFESIONAL;
221
        $specialtyCode = $crearAccionInput->ACCION_FORMATIVA->ID_ESPECIALIDAD_PRINCIPAL->CODIGO_ESPECIALIDAD;
222
        $duration = $crearAccionInput->ACCION_FORMATIVA->DURACION;
223
        $startDate = $crearAccionInput->ACCION_FORMATIVA->FECHA_INICIO;
224
        $endDate = $crearAccionInput->ACCION_FORMATIVA->FECHA_FIN;
225
        $fullItineraryIndicator = $crearAccionInput->ACCION_FORMATIVA->IND_ITINERARIO_COMPLETO;
226
        $financingType = $crearAccionInput->ACCION_FORMATIVA->TIPO_FINANCIACION;
227
        $attendeesCount = $crearAccionInput->ACCION_FORMATIVA->NUMERO_ASISTENTES;
228
        $actionName = $crearAccionInput->ACCION_FORMATIVA->DESCRIPCION_ACCION->DENOMINACION_ACCION;
229
        $globalInfo = $crearAccionInput->ACCION_FORMATIVA->DESCRIPCION_ACCION->INFORMACION_GENERAL;
230
        $schedule = $crearAccionInput->ACCION_FORMATIVA->DESCRIPCION_ACCION->HORARIOS;
231
        $requerements = $crearAccionInput->ACCION_FORMATIVA->DESCRIPCION_ACCION->REQUISITOS;
232
        $contactAction = $crearAccionInput->ACCION_FORMATIVA->DESCRIPCION_ACCION->CONTACTO_ACCION;
233
234
235
        if (empty($actionOrigin) || empty($actionCode)) {
236
            error_log('2 - error en parametros - l244');
237
            return array(
238
                "RESPUESTA_OBT_ACCION" => array(
239
                    "CODIGO_RETORNO"=>"2",
240
                    "ETIQUETA_ERROR"=>"Error en parametro",
241
                    "ACCION_FORMATIVA"=> $crearAccionInputArray['ACCION_FORMATIVA']
242
                )
243
            );
244
        }
245
246
        // Comprobamos si existen datos almacenados previamente
247
        $table = Database::get_main_table('plugin_sepe_actions');
248
        $sql = "SELECT action_origin FROM $table
249
                WHERE action_origin='".$actionOrigin."' AND action_code='".$actionCode."';";
250
        $rs = Database::query($sql);
251
252
        if (Database::num_rows($rs) > 0) {
253
            return array(
254
                "RESPUESTA_OBT_ACCION" => array(
255
                    "CODIGO_RETORNO"=>"1",
256
                    "ETIQUETA_ERROR"=>"Acción existente",
257
                    "ACCION_FORMATIVA"=>$crearAccionInputArray['ACCION_FORMATIVA']
258
                )
259
            );
260
        }
261
262
        $startDate = self::fixDate($startDate);
263
        $endDate = self::fixDate($endDate);
264
265
        $sql = "INSERT INTO $table (action_origin, action_code, situation, specialty_origin, professional_area, specialty_code, duration, start_date, end_date, full_itinerary_indicator, financing_type, attendees_count, action_name, global_info, schedule, requirements, contact_action)
266
                VALUES ('".$actionOrigin."','".$actionCode."','".$situation."','".$specialtyOrigin."','".$professionalArea."','".$specialtyCode."','".$duration."','".$startDate."','".$endDate."','".$fullItineraryIndicator."','".$financingType."','".$attendeesCount."','".$actionName."','".$globalInfo."','".$schedule."','".$requerements."','".$contactAction."')";
267
268
        $rs = Database::query($sql);
269
        if (!$rs) {
270
            return array(
271
                "RESPUESTA_OBT_ACCION" => array(
272
                    "CODIGO_RETORNO"=>"-1",
273
                    "ETIQUETA_ERROR"=>"Problema base de datos - insertando acciones formativas",
274
                    "ACCION_FORMATIVA"=>$crearAccionInputArray['ACCION_FORMATIVA']
275
                )
276
            );
277
        }
278
        $actionId = Database::insert_id();
279
280
        // DATOS ESPECIALIDADES DE LA ACCION
281
        $table = Database::get_main_table('plugin_sepe_specialty');
282
283
        $specialties = $crearAccionInput->ACCION_FORMATIVA->ESPECIALIDADES_ACCION;
284
        foreach ($specialties as $specialtyList) {
285
            if (!is_array($specialtyList)) {
286
                $auxList = array();
287
                $auxList[] = $specialtyList;
288
                $specialtyList = $auxList;
289
            }
290
            foreach ($specialtyList as $specialty) {
291
                $specialtyOrigin = $specialty->ID_ESPECIALIDAD->ORIGEN_ESPECIALIDAD;
292
                $professionalArea = $specialty->ID_ESPECIALIDAD->AREA_PROFESIONAL;
293
                $specialtyCode = $specialty->ID_ESPECIALIDAD->CODIGO_ESPECIALIDAD;
294
                $centerOrigin = $specialty->CENTRO_IMPARTICION->ORIGEN_CENTRO;
295
                $centerCode = $specialty->CENTRO_IMPARTICION->CODIGO_CENTRO;
296
                $startDate = $specialty->FECHA_INICIO;
297
                $endDate = $specialty->FECHA_FIN;
298
299
                $modalityImpartition = $specialty->MODALIDAD_IMPARTICION;
300
                $classroomHours = $specialty->DATOS_DURACION->HORAS_PRESENCIAL;
301
                $distanceHours = $specialty->DATOS_DURACION->HORAS_TELEFORMACION;
302
303
                $morningParticipansNumber = null;
304
                $morningAccessNumber = null;
305
                $morningTotalDuration = null;
306
307
                if (isset($specialty->USO->HORARIO_MANANA)) {
308
                    $morningParticipansNumber = $specialty->USO->HORARIO_MANANA->NUM_PARTICIPANTES;
309
                    $morningAccessNumber = $specialty->USO->HORARIO_MANANA->NUMERO_ACCESOS;
310
                    $morningTotalDuration = $specialty->USO->HORARIO_MANANA->DURACION_TOTAL;
311
                }
312
313
                $afternoonParticipantNumber = null;
314
                $afternoonAccessNumber = null;
315
                $afternoonTotalDuration = null;
316
317
                if (isset($specialty->USO->HORARIO_TARDE)) {
318
                    $afternoonParticipantNumber = $specialty->USO->HORARIO_TARDE->NUM_PARTICIPANTES;
319
                    $afternoonAccessNumber = $specialty->USO->HORARIO_TARDE->NUMERO_ACCESOS;
320
                    $afternoonTotalDuration = $specialty->USO->HORARIO_TARDE->DURACION_TOTAL;
321
                }
322
323
                $nightParticipantsNumber = null;
324
                $nightAccessNumber = null;
325
                $nightTotalDuration = null;
326
327
                if (isset($specialty->USO->HORARIO_NOCHE)) {
328
                    $nightParticipantsNumber = $specialty->USO->HORARIO_NOCHE->NUM_PARTICIPANTES;
329
                    $nightAccessNumber = $specialty->USO->HORARIO_NOCHE->NUMERO_ACCESOS;
330
                    $nightTotalDuration = $specialty->USO->HORARIO_NOCHE->DURACION_TOTAL;
331
                }
332
333
                $attendeesCount = null;
334
                $learningActivityCount = null;
335
                $attemptCount = null;
336
                $evaluationActivityCount = null;
337
338
                if (isset($specialty->USO->SEGUIMIENTO_EVALUACION)) {
339
                    $attendeesCount = $specialty->USO->SEGUIMIENTO_EVALUACION->NUM_PARTICIPANTES;
340
                    $learningActivityCount = $specialty->USO->SEGUIMIENTO_EVALUACION->NUMERO_ACTIVIDADES_APRENDIZAJE;
341
                    $attemptCount = $specialty->USO->SEGUIMIENTO_EVALUACION->NUMERO_INTENTOS;
342
                    $evaluationActivityCount = $specialty->USO->SEGUIMIENTO_EVALUACION->NUMERO_ACTIVIDADES_EVALUACION;
343
                }
344
345
                $startDate = self::fixDate($startDate);
346
                $endDate = self::fixDate($endDate);
347
348
                $params = array(
349
                    'action_id' => $actionId,
350
                    'specialty_origin' => $specialtyOrigin,
351
                    'professional_area' => $professionalArea,
352
                    'specialty_code' =>$specialtyCode,
353
                    'center_origin' => $centerOrigin,
354
                    'center_code' => $centerCode,
355
                    'start_date' => $startDate,
356
                    'end_date' => $endDate,
357
                    'modality_impartition' => $modalityImpartition,
358
                    'classroom_hours' => $classroomHours,
359
                    'distance_hours' => $distanceHours,
360
                    'mornings_participants_number' => $morningParticipansNumber,
361
                    'mornings_access_number' => $morningAccessNumber,
362
                    'morning_total_duration' => $morningTotalDuration,
363
                    'afternoon_participants_number' => $afternoonParticipantNumber,
364
                    'afternoon_access_number' => $afternoonAccessNumber,
365
                    'afternoon_total_duration' => $afternoonTotalDuration,
366
                    'night_participants_number' => $nightParticipantsNumber,
367
                    'night_access_number' => $nightAccessNumber,
368
                    'night_total_duration' => $nightTotalDuration,
369
                    'attendees_count' => $attendeesCount,
370
                    'learning_activity_count' => $learningActivityCount,
371
                    'attempt_count' => $attemptCount,
372
                    'evaluation_activity_count' => $evaluationActivityCount
373
                );
374
375
                $specialtyId = Database::insert($table, $params);
376
377
                if (empty($specialtyId)) {
378
                    return array(
379
                        "RESPUESTA_OBT_ACCION" => array(
380
                            "CODIGO_RETORNO" => "-1",
381
                            "ETIQUETA_ERROR" => "Problema base de datos - insertando datos de especialidad de la accion",
382
                            "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
383
                        )
384
                    );
385
                }
386
387
388
                if ($specialtyId) {
389
                    $tableSpecialtyClassroom = Database::get_main_table('plugin_sepe_specialty_classroom');
390
                    $tableCenters = Database::get_main_table('plugin_sepe_centers');
391
                    foreach ($specialty->CENTROS_SESIONES_PRESENCIALES->CENTRO_PRESENCIAL as $centroList) {
392
                        if (!is_array($centroList)) {
393
                            $auxList = array();
394
                            $auxList[] = $centroList;
395
                            $centroList = $auxList;
396
                        }
397
                        foreach ($centroList as $centro) {
398
                            $centerOrigin = $centro->ORIGEN_CENTRO;
399
                            $centerCode = $centro->CODIGO_CENTRO;
400
                            $sql = "SELECT id FROM $tableCenters 
401
                                    WHERE center_origin='".$centerOrigin."' AND center_code='".$centerCode."';";
402
                            $res = Database::query($sql);
403
                            if (Database::num_rows($res) > 0) {
404
                                $aux_row = Database::fetch_assoc($res);
405
                                $centerId = $aux_row['id'];
406
                            } else {
407
                                $sql = "INSERT INTO $tableCenters (center_origin, center_code)
408
                                        VALUES ('".$centerOrigin."','".$centerCode."');";
409
                                Database::query($sql);
410
                                $centerId = Database::insert_id();
411
                            }
412
                            $sql = "INSERT INTO $tableSpecialtyClassroom (specialty_id, center_id)
413
                                    VALUES ('".$specialtyId."','".$centerId."')";
414
                            Database::query($sql);
415
                            $id = Database::insert_id();
416
417
                            if (empty($id)) {
418
                                return array(
419
                                    "RESPUESTA_OBT_ACCION" => array(
420
                                        "CODIGO_RETORNO" => "-1",
421
                                        "ETIQUETA_ERROR" => "Problema base de datos - insertando centro presenciales",
422
                                        "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
423
                                    )
424
                                );
425
                            }
426
                        }
427
                    }
428
429
                    $tableTutors = Database::get_main_table('plugin_sepe_tutors');
430
                    $tableSpecialityTutors = Database::get_main_table('plugin_sepe_specialty_tutors');
431
432
                    if (!empty($specialty->TUTORES_FORMADORES)) {
433
                        foreach ($specialty->TUTORES_FORMADORES as $tutorList) {
434
                            if (!is_array($tutorList)) {
435
                                $auxList = array();
436
                                $auxList[] = $tutorList;
437
                                $tutorList = $auxList;
438
                            }
439
                            foreach ($tutorList as $tutor) {
440
                                $documentType = $tutor->ID_TUTOR->TIPO_DOCUMENTO;
441
                                $documentNumber = $tutor->ID_TUTOR->NUM_DOCUMENTO;
442
                                $documentLetter = $tutor->ID_TUTOR->LETRA_NIF;
443
                                $tutorAccreditation = $tutor->ACREDITACION_TUTOR;
444
                                $professionalExperience = $tutor->EXPERIENCIA_PROFESIONAL;
445
                                $teachingCompetence = $tutor->COMPETENCIA_DOCENTE;
446
                                $experienceTeleforming = $tutor->EXPERIENCIA_MODALIDAD_TELEFORMACION;
447
                                $trainingTeleforming = $tutor->FORMACION_MODALIDAD_TELEFORMACION;
448
449
                                /* check tutor not exists */
450
                                $sql = "SELECT id FROM $tableTutors WHERE 
451
                                          document_type='".$documentType."' AND 
452
                                          document_number='".$documentNumber."' AND 
453
                                          document_letter='".$documentLetter."';";
454
                                $res = Database::query($sql);
455
                                if (Database::num_rows($res) > 0) {
456
                                    $aux_row = Database::fetch_assoc($res);
457
                                    $tutorId = $aux_row['id'];
458
                                } else {
459
                                    $sql = "INSERT INTO $tableTutors (document_type, document_number, document_letter)
460
                                        VALUES ('".$documentType."','".$documentNumber."','".$documentLetter."');";
461
                                    Database::query($sql);
462
                                    $tutorId = Database::insert_id();
463
                                }
464
                                if (empty($tutorId)) {
465
                                    return array(
466
                                        "RESPUESTA_OBT_ACCION" => array(
467
                                            "CODIGO_RETORNO" => "-1",
468
                                            "ETIQUETA_ERROR" => "Problema base de datos - insertando tutores",
469
                                            "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
470
                                        )
471
                                    );
472
                                }
473
                                $sql = "INSERT INTO $tableSpecialityTutors (specialty_id, tutor_id, tutor_accreditation, professional_experience, teaching_competence, experience_teleforming, training_teleforming)
474
                                        VALUES ('".$specialtyId."','".$tutorId."','".$tutorAccreditation."','".$professionalExperience."','".$teachingCompetence."','".$experienceTeleforming."','".$trainingTeleforming."');";
475
                                Database::query($sql);
476
                            }
477
                        }
478
                    }
479
                }
480
            }
481
        }
482
        // DATOS PARTICIPANTES
483
        $tableParticipants = Database::get_main_table('plugin_sepe_participants');
484
        $tableTutorsCompany = Database::get_main_table('plugin_sepe_tutors_company');
485
        $participants = $crearAccionInput->ACCION_FORMATIVA->PARTICIPANTES;
486
        foreach ($participants as $participantList) {
487
            if (!is_array($participantList)) {
488
                $auxList = array();
489
                $auxList[] = $participantList;
490
                $participantList = $auxList;
491
            }
492
            foreach ($participantList as $participant) {
493
                $documentType = $participant->ID_PARTICIPANTE->TIPO_DOCUMENTO;
494
                $documentNumber = $participant->ID_PARTICIPANTE->NUM_DOCUMENTO;
495
                $documentLetter = $participant->ID_PARTICIPANTE->LETRA_NIF;
496
                $keyCompetence = $participant->INDICADOR_COMPETENCIAS_CLAVE;
497
                $contractId = null;
498
                $companyFiscalNumber = null;
499
                $documentTypeCompany = null;
500
                $documentNumberCompany = null;
501
                $documentLetterCompany = null;
502
                $documentTypeTraining = null;
503
                $documentNumberTraining = null;
504
                $documentLetterTraining = null;
505
                $tutorIdCompany = null;
506
                $tutorIdTraining = null;
507
508
                if (isset($participant->CONTRATO_FORMACION)) {
509
                    $contractId = isset($participant->CONTRATO_FORMACION->ID_CONTRATO_CFA) ? $participant->CONTRATO_FORMACION->ID_CONTRATO_CFA : null;
510
                    $companyFiscalNumber = isset($participant->CONTRATO_FORMACION->CIF_EMPRESA) ? $participant->CONTRATO_FORMACION->CIF_EMPRESA : null;
511
                    $documentTypeCompany = isset($participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->TIPO_DOCUMENTO) ? $participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->TIPO_DOCUMENTO : null;
512
                    $documentNumberCompany = isset($participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->NUM_DOCUMENTO) ? $participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->NUM_DOCUMENTO : null;
513
                    $documentLetterCompany = isset($participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->LETRA_NIF) ? $participant->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->LETRA_NIF : null;
514
                    if (!empty($documentTypeCompany) || !empty($documentNumberCompany) || !empty($documentLetterCompany)) {
515
                        $tmp_e = Database::query('SELECT id FROM '.$tableTutorsCompany.' WHERE document_type="'.$documentTypeCompany.'" AND document_number="'.$documentNumberCompany.'" AND document_letter="'.$documentLetterCompany.'";');
516
                        if (Database::num_rows($tmp_e) > 0) {
517
                            $row_tmp = Database::fetch_assoc($tmp_e);
518
                            $tutorIdCompany = $row_tmp['id'];
519
                            Database::query("UPDATE $tableTutorsCompany SET company='1' WHERE id='".$tutorIdCompany."'");
520
                        } else {
521
                            $params_tmp = array(
522
                                'document_type' => $documentTypeCompany,
523
                                'document_number' => $documentNumberCompany,
524
                                'document_letter' => $documentLetterCompany,
525
                                'company' => '1'
526
                            );
527
                            $tutorIdCompany = Database::insert($tableTutorsCompany, $params_tmp);
528
                        }
529
                    }
530
531
                    $documentTypeTraining = isset($participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->TIPO_DOCUMENTO) ? $participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->TIPO_DOCUMENTO : null;
532
                    $documentNumberTraining = isset($participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->NUM_DOCUMENTO) ? $participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->NUM_DOCUMENTO : null;
533
                    $documentLetterTraining = isset($participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->LETRA_NIF) ? $participant->CONTRATO_FORMACION->ID_TUTOR_FORMACION->LETRA_NIF : null;
534
                    if (!empty($documentTypeTraining) || !empty($documentNumberTraining) || !empty($documentLetterTraining)) {
535
                        $tmp_f = Database::query('
536
                            SELECT id FROM '.$tableTutorsCompany.' 
537
                            WHERE
538
                                document_type="'.$documentTypeTraining.'" AND 
539
                                document_number="'.$documentNumberTraining.'" AND 
540
                                document_letter="'.$documentLetterTraining.'";'
541
                        );
542
                        if (Database::num_rows($tmp_f) > 0) {
543
                            $row_tmp = Database::fetch_assoc($tmp_f);
544
                            $tutorIdTraining = $row_tmp['id'];
545
                            Database::query("UPDATE $tableTutorsCompany SET training='1' WHERE id='".$tutorIdTraining."'");
546
                        } else {
547
                            $params_tmp = array(
548
                                'document_type' => $documentTypeTraining,
549
                                'document_number' => $documentNumberTraining,
550
                                'document_letter' => $documentLetterTraining,
551
                                'training' => '1'
552
                            );
553
                            $tutorIdTraining = Database::insert($tableTutorsCompany, $params_tmp);
554
                        }
555
                    }
556
                }
557
558
                $params = array(
559
                    'action_id' => $actionId,
560
                    'document_type' => $documentType,
561
                    'document_number' => $documentNumber,
562
                    'document_letter' => $documentLetter,
563
                    'key_competence' => $keyCompetence,
564
                    'contract_id' => $contractId,
565
                    'company_fiscal_number' => $companyFiscalNumber,
566
                    'company_tutor_id' => $tutorIdCompany,
567
                    'training_tutor_id' => $tutorIdTraining
568
                );
569
                $participantId = Database::insert($tableParticipants, $params);
570
                if (empty($participantId)) {
571
                    return array(
572
                        "RESPUESTA_OBT_ACCION" => array(
573
                            "CODIGO_RETORNO" => "-1",
574
                            "ETIQUETA_ERROR" => "Problema base de datos - insertando participantes",
575
                            "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
576
                        )
577
                    );
578
                }
579
580
                $participantId = Database::insert_id();
581
582
                foreach ($participant->ESPECIALIDADES_PARTICIPANTE as $valueList) {
583
                    if (!is_array($participantList)) {
584
                        $auxList = array();
585
                        $auxList[] = $valueList;
586
                        $valueList = $auxList;
587
                    }
588
                    foreach ($valueList as $value) {
589
                        $specialtyOrigin = null;
590
                        $professionalArea = null;
591
                        $specialtyCode = null;
592
593
                        if (isset($value->ID_ESPECIALIDAD)) {
594
                            $specialtyOrigin = $value->ID_ESPECIALIDAD->ORIGEN_ESPECIALIDAD;
595
                            $professionalArea = $value->ID_ESPECIALIDAD->AREA_PROFESIONAL;
596
                            $specialtyCode = $value->ID_ESPECIALIDAD->CODIGO_ESPECIALIDAD;
597
                        }
598
599
                        $registrationDate = $value->FECHA_ALTA;
600
                        $leavingDate = $value->FECHA_BAJA;
601
602
                        $centerOrigin = null;
603
                        $centerCode = null;
604
                        $startDate = null;
605
                        $endDate = null;
606
607
                        if (!empty($value->EVALUACION_FINAL)) {
608
                            $startDate = isset($value->EVALUACION_FINAL->FECHA_INICIO) ? $value->EVALUACION_FINAL->FECHA_INICIO : null;
609
                            $endDate = isset($value->EVALUACION_FINAL->FECHA_FIN) ? $value->EVALUACION_FINAL->FECHA_FIN : null;
610
                            if (!empty($value->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION)) {
611
                                $centerOrigin = $value->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION->ORIGEN_CENTRO;
612
                                $centerCode = $value->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION->CODIGO_CENTRO;
613
                            }
614
                        }
615
616
                        $finalResult = null;
617
                        $finalQualification = null;
618
                        $finalScore = null;
619
620
                        if (isset($value->RESULTADOS)) {
621
                            $finalResult = isset($value->RESULTADOS->RESULTADO_FINAL) ? $value->RESULTADOS->RESULTADO_FINAL : null;
622
                            $finalQualification = isset($value->RESULTADOS->CALIFICACION_FINAL) ? $value->RESULTADOS->CALIFICACION_FINAL : null;
623
                            $finalScore = isset($value->RESULTADOS->PUNTUACION_FINAL) ? $value->RESULTADOS->PUNTUACION_FINAL : null;
624
                        }
625
626
                        $registrationDate = self::fixDate($registrationDate);
627
                        $leavingDate = self::fixDate($leavingDate);
628
629
                        $startDate = self::fixDate($startDate);
630
                        $endDate = self::fixDate($endDate);
631
632
                        $table_aux = Database::get_main_table('plugin_sepe_participants_specialty');
633
                        $sql = "INSERT INTO $table_aux (participant_id,specialty_origin,professional_area,specialty_code,registration_date,leaving_date,center_origin,center_code,start_date,end_date,final_result,final_qualification,final_score)
634
                                VALUES ('".$participantId."','".$specialtyOrigin."','".$professionalArea."','".$specialtyCode."','".$registrationDate."','".$leavingDate."','".$centerOrigin."','".$centerCode."','".$startDate."','".$endDate."','".$finalResult."','".$finalQualification."','".$finalScore."');";
635
                        Database::query($sql);
636
                        $participantSpecialtyId = Database::insert_id();
637
                        if (empty($participantSpecialtyId)) {
638
                            return array(
639
                                "RESPUESTA_OBT_ACCION" => array(
640
                                    "CODIGO_RETORNO" => "-1",
641
                                    "ETIQUETA_ERROR" => "Problema base de datos - insertando especialidad participante",
642
                                    "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
643
                                )
644
                            );
645
                        }
646
647
                        foreach ($value->TUTORIAS_PRESENCIALES as $tutorialList) {
648
                            if (!is_array($tutorialList)) {
649
                                $auxList = array();
650
                                $auxList[] = $tutorialList;
651
                                $tutorialList = $auxList;
652
                            }
653
                            foreach ($tutorialList as $tutorial) {
654
                                $centerOrigin = $tutorial->CENTRO_PRESENCIAL_TUTORIA->ORIGEN_CENTRO;
655
                                $centerCode = $tutorial->CENTRO_PRESENCIAL_TUTORIA->CODIGO_CENTRO;
656
                                $startDate = $tutorial->FECHA_INICIO;
657
                                $endDate = $tutorial->FECHA_FIN;
658
659
                                $startDate = self::fixDate($startDate);
660
                                $endDate = self::fixDate($endDate);
661
662
                                $table_aux2 = Database::get_main_table('plugin_sepe_participants_specialty_tutorials');
663
                                $sql = "INSERT INTO $table_aux2 (participant_specialty_id,center_origin,center_code,start_date,end_date)
664
                                        VALUES ('".$participantSpecialtyId."','".$centerOrigin."','".$centerCode."','".$startDate."','".$endDate."');";
665
                                $rs = Database::query($sql);
666
                                if (!$rs) {
667
                                    return array(
668
                                        "RESPUESTA_OBT_ACCION" => array(
669
                                            "CODIGO_RETORNO" => "-1",
670
                                            "ETIQUETA_ERROR" => "Problema base de datos - insertando tutorias presenciales participante",
671
                                            "ACCION_FORMATIVA" => $crearAccionInputArray['ACCION_FORMATIVA']
672
                                        )
673
                                    );
674
                                }
675
                            }
676
                        }
677
                    }
678
                }
679
            }
680
        }
681
682
        $obtenerAccionInput = new stdClass();
683
        $obtenerAccionInput->ID_ACCION = new stdClass();
684
        $obtenerAccionInput->ID_ACCION->ORIGEN_ACCION = $actionOrigin;
685
        $obtenerAccionInput->ID_ACCION->CODIGO_ACCION = $actionCode;
686
687
        $result = self::obtenerAccion($obtenerAccionInput);
688
        return $result;
689
    }
690
691
    public function obtenerAccion($obtenerAccionInput)
692
    {
693
        /* Tracking Log */
694
        $tableLog = Database::get_main_table('plugin_sepe_log');
695
        $paramsLog = array(
696
            'ip' => $_SERVER['REMOTE_ADDR'],
697
            'action' => "obtenerAccion",
698
            'fecha' => date("Y-m-d H:i:s")
699
        );
700
        Database::insert($tableLog, $paramsLog);
701
702
        /* End tracking log */
703
704
        $actionOrigin = $obtenerAccionInput->ID_ACCION->ORIGEN_ACCION;
705
        $actionCode = $obtenerAccionInput->ID_ACCION->CODIGO_ACCION;
706
707
        if (empty($actionOrigin) || empty($actionCode)) {
708
            return array(
709
                "RESPUESTA_OBT_ACCION" => array(
710
                    "CODIGO_RETORNO" => "2",
711
                    "ETIQUETA_ERROR" => "Error en parametro",
712
                    "ACCION_FORMATIVA" => ""
713
                )
714
            );
715
        }
716
717
        $table = Database::get_main_table('plugin_sepe_actions');
718
        $tableCenters = Database::get_main_table('plugin_sepe_centers');
719
        $classRoomTable = Database::get_main_table('plugin_sepe_specialty_classroom');
720
        $tutorTable = Database::get_main_table('plugin_sepe_tutors');
721
        $specialityTutorTable = Database::get_main_table('plugin_sepe_specialty_tutors');
722
        $participantsSpecialityTable = Database::get_main_table('plugin_sepe_participants_specialty');
723
        $participantsSpecialityTutorialsTable = Database::get_main_table('plugin_sepe_participants_specialty_tutorials');
724
        $tableTutorsCompany = Database::get_main_table('plugin_sepe_tutors_company');
725
726
        // Comprobamos si existen datos almacenados previamente
727
        $sql = "SELECT *
728
                FROM $table
729
                WHERE
730
                    action_origin='".$actionOrigin."' AND
731
                    action_code='".$actionCode."';";
732
        $rs = Database::query($sql);
733
        if (Database::num_rows($rs) > 0) {
734
            $row = Database::fetch_assoc($rs);
735
            $mainSpecialty = array(
736
                'ORIGEN_ESPECIALIDAD' => $row['specialty_origin'],
737
                'AREA_PROFESIONAL' => $row['professional_area'],
738
                'CODIGO_ESPECIALIDAD' => $row['specialty_code']
739
            );
740
            $actionDescription = array(
741
                'DENOMINACION_ACCION' => $row['action_name'],
742
                'INFORMACION_GENERAL' => $row['global_info'],
743
                'HORARIOS' => $row['schedule'],
744
                'REQUISITOS' => $row['requirements'],
745
                'CONTACTO_ACCION' => $row['contact_action']
746
            );
747
748
            $tableSpeciality = Database::get_main_table('plugin_sepe_specialty');
749
            $tableParticipants = Database::get_main_table('plugin_sepe_participants');
750
            $sql = "SELECT * FROM $tableSpeciality
751
                    WHERE action_id ='".$row['id']."'";
752
            $rs = Database::query($sql);
753
            $specialty = array();
754
            if (Database::num_rows($rs) > 0) {
755
                while ($aux = Database::fetch_assoc($rs)) {
756
                    $specialtyId = $aux['id'];
757
                    $sql = "SELECT * FROM $classRoomTable
758
                            WHERE specialty_id='".$specialtyId."'";
759
                    $resultClassroom = Database::query($sql);
760
                    if (Database::num_rows($resultClassroom) === 0) {
761
                        return array(
762
                            "RESPUESTA_OBT_ACCION" => array(
763
                                "CODIGO_RETORNO" => "-1",
764
                                "ETIQUETA_ERROR" => "Problema base de datos - consulta de centros presenciales",
765
                                "ACCION_FORMATIVA" => ''
766
                            )
767
                        );
768
                    }
769
770
                    $classroomCenterList = new ArrayObject();
771
                    while ($tmp = Database::fetch_assoc($resultClassroom)) {
772
                        $sql = "SELECT * FROM $tableCenters WHERE id='".$tmp['center_id']."';";
773
                        $resultCenter = Database::query($sql);
774
                        $auxCenter = Database::fetch_assoc($resultCenter);
775
776
                        $classroomCenter = new stdClass();
777
                        $classroomCenter->ORIGEN_CENTRO = $auxCenter['center_origin'];
778
                        $classroomCenter->CODIGO_CENTRO = $auxCenter['center_code'];
779
                        $classroomCenter = new SoapVar(
780
                            $classroomCenter,
781
                            SOAP_ENC_OBJECT,
782
                            null,
783
                            null,
784
                            'CENTRO_PRESENCIAL'
785
                        );
786
                        $classroomCenterList->append($classroomCenter);
787
                    }
788
                    $sql = "SELECT * FROM $specialityTutorTable
789
                            WHERE specialty_id='".$specialtyId."'";
790
                    $resultSpecialtyTutor = Database::query($sql);
791
792
                    $trainingTutors = new ArrayObject();
793
                    if (Database::num_rows($resultSpecialtyTutor)) {
794
                        while ($tmp_aux = Database::fetch_assoc($resultSpecialtyTutor)) {
795
                            $sql = "SELECT * FROM $tutorTable
796
                                    WHERE id='".$tmp_aux['tutor_id']."'
797
                                    LIMIT 1";
798
                              $rs_tutor = Database::query($sql);
799
                            if (Database::num_rows($rs_tutor)) {
800
                                $tmp = Database::fetch_assoc($rs_tutor);
801
802
                                $obj = new stdClass();
803
                                $obj->ID_TUTOR = new stdClass();
804
                                $obj->ID_TUTOR->TIPO_DOCUMENTO = $tmp['document_type'];
805
                                $obj->ID_TUTOR->NUM_DOCUMENTO = $tmp['document_number'];
806
                                $obj->ID_TUTOR->LETRA_NIF = $tmp['document_letter'];
807
808
                                $obj->ACREDITACION_TUTOR = $tmp_aux['tutor_accreditation'];
809
                                $obj->EXPERIENCIA_PROFESIONAL = $tmp_aux['professional_experience'];
810
                                $obj->COMPETENCIA_DOCENTE = $tmp_aux['teaching_competence'];
811
                                $obj->EXPERIENCIA_MODALIDAD_TELEFORMACION = $tmp_aux['experience_teleforming'];
812
                                $obj->FORMACION_MODALIDAD_TELEFORMACION = $tmp_aux['training_teleforming'];
813
814
                                $obj = new SoapVar($obj, SOAP_ENC_OBJECT, null, null, 'TUTOR_FORMADOR');
815
                                $trainingTutors->append($obj);
816
                            }
817
                        }
818
                    }
819
820
                    $params = new ArrayObject();
821
                    $idEspecialidad = new stdClass();
822
                    $idEspecialidad->ORIGEN_ESPECIALIDAD = $aux['specialty_origin'];
823
                    $idEspecialidad->AREA_PROFESIONAL = $aux['professional_area'];
824
                    $idEspecialidad->CODIGO_ESPECIALIDAD = $aux['specialty_code'];
825
826
                    $params[0] = new SoapVar(
827
                        $idEspecialidad,
828
                        SOAP_ENC_OBJECT,
829
                        null,
830
                        null,
831
                        'ID_ESPECIALIDAD',
832
                        null
833
                    );
834
835
                    $centroImparticion = new stdClass();
836
                    $centroImparticion->ORIGEN_CENTRO = $aux['center_origin'];
837
                    $centroImparticion->CODIGO_CENTRO = $aux['center_code'];
838
839
                    $params[1] = new SoapVar(
840
                        $centroImparticion,
841
                        SOAP_ENC_OBJECT,
842
                        null,
843
                        null,
844
                        'CENTRO_IMPARTICION',
845
                        null
846
                    );
847
                    $params[2] = new SoapVar(
848
                        self::undoFixDate($aux['start_date']),
849
                        XSD_STRING,
850
                        null,
851
                        null,
852
                        'FECHA_INICIO',
853
                        null
854
                    );
855
                    $params[3] = new SoapVar(
856
                        self::undoFixDate($aux['end_date']),
857
                        XSD_STRING,
858
                        null,
859
                        null,
860
                        'FECHA_FIN',
861
                        null
862
                    );
863
                    $params[4] = new SoapVar(
864
                        $aux['modality_impartition'],
865
                        XSD_STRING,
866
                        null,
867
                        null,
868
                        'MODALIDAD_IMPARTICION',
869
                        null
870
                    );
871
872
                    $obj = new stdClass();
873
                    $obj->HORAS_PRESENCIAL = $aux['classroom_hours'];
874
                    $obj->HORAS_TELEFORMACION = $aux['distance_hours'];
875
876
                    $params[5] = new SoapVar(
877
                        $obj,
878
                        SOAP_ENC_OBJECT,
879
                        null,
880
                        null,
881
                        'DATOS_DURACION',
882
                        null
883
                    );
884
                    $params[6] = new SoapVar(
885
                        $classroomCenterList,
886
                        SOAP_ENC_OBJECT,
887
                        null,
888
                        null,
889
                        'CENTROS_SESIONES_PRESENCIALES',
890
                        null
891
                    );
892
                    $params[7] = new SoapVar(
893
                        $trainingTutors,
894
                        SOAP_ENC_OBJECT,
895
                        null,
896
                        null,
897
                        'TUTORES_FORMADORES',
898
                        null
899
                    );
900
901
                    $obj = new stdClass();
902
903
                    if (!empty($aux['mornings_participants_number']) ||
904
                        !empty($aux['mornings_access_number']) ||
905
                        !empty($aux['morning_total_duration'])
906
                    ) {
907
                        $obj->HORARIO_MANANA = new stdClass();
908
                        $obj->HORARIO_MANANA->NUM_PARTICIPANTES = $aux['mornings_participants_number'];
909
                        $obj->HORARIO_MANANA->NUMERO_ACCESOS = $aux['mornings_access_number'];
910
                        $obj->HORARIO_MANANA->DURACION_TOTAL = $aux['morning_total_duration'];
911
                    }
912
913
                    if (!empty($aux['afternoon_participants_number']) ||
914
                        !empty($aux['afternoon_access_number']) ||
915
                        !empty($aux['afternoon_total_duration'])
916
                    ) {
917
                        $obj->HORARIO_TARDE = new stdClass();
918
                        $obj->HORARIO_TARDE->NUM_PARTICIPANTES = $aux['afternoon_participants_number'];
919
                        $obj->HORARIO_TARDE->NUMERO_ACCESOS = $aux['afternoon_access_number'];
920
                        $obj->HORARIO_TARDE->DURACION_TOTAL = $aux['afternoon_total_duration'];
921
                    }
922
923
                    if (!empty($aux['night_participants_number']) ||
924
                        !empty($aux['night_access_number']) ||
925
                        !empty($aux['night_total_duration'])
926
                    ) {
927
                        $obj->HORARIO_NOCHE = new stdClass();
928
                        $obj->HORARIO_NOCHE->NUM_PARTICIPANTES = $aux['night_participants_number'];
929
                        $obj->HORARIO_NOCHE->NUMERO_ACCESOS = $aux['night_access_number'];
930
                        $obj->HORARIO_NOCHE->DURACION_TOTAL = $aux['night_total_duration'];
931
                    }
932
933
                    if (!empty($aux['attendees_count']) ||
934
                        !empty($aux['learning_activity_count']) ||
935
                        !empty($aux['attempt_count']) ||
936
                        !empty($aux['evaluation_activity_count'])
937
                    ) {
938
                        $obj->SEGUIMIENTO_EVALUACION = new stdClass();
939
                        $obj->SEGUIMIENTO_EVALUACION->NUM_PARTICIPANTES = $aux['attendees_count'];
940
                        $obj->SEGUIMIENTO_EVALUACION->NUMERO_ACTIVIDADES_APRENDIZAJE = $aux['learning_activity_count'];
941
                        $obj->SEGUIMIENTO_EVALUACION->NUMERO_INTENTOS = $aux['attempt_count'];
942
                        $obj->SEGUIMIENTO_EVALUACION->NUMERO_ACTIVIDADES_EVALUACION = $aux['evaluation_activity_count'];
943
                    }
944
945
                    $params[8] = new SoapVar(
946
                        $obj,
947
                        SOAP_ENC_OBJECT,
948
                        null,
949
                        null,
950
                        'USO',
951
                        null
952
                    );
953
                    $specialty[] = new SoapVar(
954
                        $params,
955
                        SOAP_ENC_OBJECT,
956
                        null,
957
                        null,
958
                        'ESPECIALIDAD'
959
                    );
960
                }
961
            } else {
962
                return array(
963
                    "RESPUESTA_OBT_ACCION" => array(
964
                        "CODIGO_RETORNO"=>"-1",
965
                        "ETIQUETA_ERROR"=>"Problema base de datos - consulta especialidad de accion",
966
                        "ACCION_FORMATIVA"=>''
967
                    )
968
                );
969
            }
970
971
            $sql = "SELECT * FROM $tableParticipants
972
                    WHERE action_id ='".$row['id']."'";
973
            $resultParticipants = Database::query($sql);
974
            $specialtyMainParticipant = array();
975
            if (Database::num_rows($resultParticipants)) {
976
                while ($aux = Database::fetch_assoc($resultParticipants)) {
977
                    $participantId = $aux['id'];
978
979
                    $sql = "SELECT * FROM $participantsSpecialityTable
980
                            WHERE participant_id='".$participantId."'";
981
                    $resultParticipantSpecialty = Database::query($sql);
982
983
                    $namespace = null;
984
                    $specialtyParticipant = array();
985
                    while ($tmp = Database::fetch_assoc($resultParticipantSpecialty)) {
986
                        $participantSpecialtyId = $tmp['id'];
987
                        $sql = "SELECT * FROM $participantsSpecialityTutorialsTable
988
                                WHERE participant_specialty_id='".$participantSpecialtyId."'";
989
                        $resultTutorials = Database::query($sql);
990
                        $classroomTutorials = new ArrayObject();
991
992
                        while ($tmp2 = Database::fetch_assoc($resultTutorials)) {
993
                            $obj = new stdClass();
994
                            $obj->CENTRO_PRESENCIAL_TUTORIA = new stdClass();
995
                            $obj->CENTRO_PRESENCIAL_TUTORIA->ORIGEN_CENTRO = $tmp2['center_origin'];
996
                            $obj->CENTRO_PRESENCIAL_TUTORIA->CODIGO_CENTRO = $tmp2['center_code'];
997
                            $startDate = self::undoFixDate($tmp2['start_date']);
998
                            if (!empty($startDate)) {
999
                                $obj->FECHA_INICIO = $startDate;
1000
                            }
1001
                            $endDate = self::undoFixDate($tmp2['end_date']);
1002
                            if (!empty($endDate)) {
1003
                                $obj->FECHA_FIN = $endDate;
1004
                            }
1005
1006
                            $obj = new SoapVar(
1007
                                $obj,
1008
                                SOAP_ENC_OBJECT,
1009
                                null,
1010
                                null,
1011
                                'TUTORIA_PRESENCIAL'
1012
                            );
1013
                            $classroomTutorials->append($obj);
1014
                        }
1015
1016
                        $obj = new stdClass();
1017
                        $obj->ID_ESPECIALIDAD = new stdClass();
1018
                        $obj->ID_ESPECIALIDAD->ORIGEN_ESPECIALIDAD = $tmp['specialty_origin'];
1019
                        $obj->ID_ESPECIALIDAD->AREA_PROFESIONAL = $tmp['professional_area'];
1020
                        $obj->ID_ESPECIALIDAD->CODIGO_ESPECIALIDAD = $tmp['specialty_code'];
1021
1022
                        $registrationDate = self::undoFixDate($tmp['registration_date']);
1023
1024
                        // @todo check which is correct send 0000/00/00 or empty
1025
                        if (!empty($registrationDate)) {
1026
                            $obj->FECHA_ALTA = $registrationDate;
1027
                        }
1028
1029
                        $leavingDate = self::undoFixDate($tmp['leaving_date']);
1030
                        if (!empty($leavingDate)) {
1031
                            $obj->FECHA_BAJA = $leavingDate;
1032
                        }
1033
1034
                        $obj->TUTORIAS_PRESENCIALES = new SoapVar(
1035
                            $classroomTutorials,
1036
                            SOAP_ENC_OBJECT,
1037
                            null,
1038
                            null,
1039
                            'TUTORIAS_PRESENCIALES',
1040
                            null
1041
                        );
1042
                        $obj->EVALUACION_FINAL = new stdClass();
1043
1044
                        if (!empty($tmp['center_origin']) && !empty($tmp['center_code'])) {
1045
                            $obj->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION = new stdClass();
1046
                            $obj->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION->ORIGEN_CENTRO = $tmp['center_origin'];
1047
                            $obj->EVALUACION_FINAL->CENTRO_PRESENCIAL_EVALUACION->CODIGO_CENTRO = $tmp['center_code'];
1048
                        }
1049
1050
                        $startDate = self::undoFixDate($tmp['start_date']);
1051
                        if (!empty($startDate)) {
1052
                            $obj->EVALUACION_FINAL->FECHA_INICIO = $startDate;
1053
                        }
1054
1055
                        $endDate = self::undoFixDate($tmp['end_date']);
1056
1057
                        if (!empty($endDate)) {
1058
                            $obj->EVALUACION_FINAL->FECHA_FIN = $endDate;
1059
                        }
1060
1061
                        $obj->RESULTADOS = new stdClass();
1062
1063
                        if (isset($tmp['final_result']) && $tmp['final_result'] != '') {
1064
                            $obj->RESULTADOS->RESULTADO_FINAL = $tmp['final_result'];
1065
                        }
1066
                        if (isset($tmp['final_qualification']) && $tmp['final_qualification'] != '') {
1067
                            $obj->RESULTADOS->CALIFICACION_FINAL = $tmp['final_qualification'];
1068
                        }
1069
1070
                        if (isset($tmp['final_score']) && $tmp['final_score'] != '') {
1071
                            $obj->RESULTADOS->PUNTUACION_FINAL = $tmp['final_score'];
1072
                        }
1073
                        $specialtyParticipant[] = new SoapVar(
1074
                            $obj,
1075
                            SOAP_ENC_OBJECT,
1076
                            null,
1077
                            null,
1078
                            'ESPECIALIDAD'
1079
                        );
1080
                    }
1081
1082
                    $params = new stdClass();
1083
                    $params->ID_PARTICIPANTE = new stdClass();
1084
                    $params->ID_PARTICIPANTE->TIPO_DOCUMENTO = $aux['document_type'];
1085
                    $params->ID_PARTICIPANTE->NUM_DOCUMENTO = $aux['document_number'];
1086
                    $params->ID_PARTICIPANTE->LETRA_NIF = $aux['document_letter'];
1087
                    $params->INDICADOR_COMPETENCIAS_CLAVE = $aux['key_competence'];
1088
1089
                    $params->CONTRATO_FORMACION = new stdClass();
1090
1091
                    if (!empty($aux['contract_id'])) {
1092
                        $params->CONTRATO_FORMACION->ID_CONTRATO_CFA = $aux['contract_id'];
1093
                    }
1094
1095
                    if (!empty($aux['company_fiscal_number'])) {
1096
                        $params->CONTRATO_FORMACION->CIF_EMPRESA = $aux['company_fiscal_number'];
1097
                    }
1098
1099
                    if (!empty($aux['company_tutor_id'])) {
1100
                        $resultCompany = Database::query("SELECT * FROM $tableTutorsCompany WHERE id='".$aux['company_tutor_id']."';");
1101
                        $auxCompany = Database::fetch_assoc($resultCompany);
1102
                        if (!empty($auxCompany['document_type']) ||
1103
                         !empty($auxCompany['document_number']) ||
1104
                         !empty($auxCompany['document_letter'])
1105
                            ) {
1106
                            $params->CONTRATO_FORMACION->ID_TUTOR_EMPRESA = new stdClass();
1107
                            $params->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->TIPO_DOCUMENTO = $auxCompany['document_type'];
1108
                            $params->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->NUM_DOCUMENTO = $auxCompany['document_number'];
1109
                            $params->CONTRATO_FORMACION->ID_TUTOR_EMPRESA->LETRA_NIF = $auxCompany['document_letter'];
1110
                        }
1111
                    }
1112
                    if (!empty($aux['training_tutor_id'])) {
1113
                        $resultTraining = Database::query("SELECT * FROM $tableTutorsCompany WHERE id='".$aux['training_tutor_id']."';");
1114
                        $auxTraining = Database::fetch_assoc($resultTraining);
1115
                        if (!empty($auxTraining['document_type']) ||
1116
                            !empty($auxTraining['document_number']) ||
1117
                            !empty($auxTraining['document_letter'])
1118
                        ) {
1119
                            $params->CONTRATO_FORMACION->ID_TUTOR_FORMACION = new stdClass();
1120
                            $params->CONTRATO_FORMACION->ID_TUTOR_FORMACION->TIPO_DOCUMENTO = $auxTraining['document_type'];
1121
                            $params->CONTRATO_FORMACION->ID_TUTOR_FORMACION->NUM_DOCUMENTO = $auxTraining['document_number'];
1122
                            $params->CONTRATO_FORMACION->ID_TUTOR_FORMACION->LETRA_NIF = $auxTraining['document_letter'];
1123
                        }
1124
                    }
1125
1126
1127
                    $params->ESPECIALIDADES_PARTICIPANTE = new SoapVar(
1128
                        $specialtyParticipant,
1129
                        SOAP_ENC_OBJECT,
1130
                        null,
1131
                        null,
1132
                        'ESPECIALIDADES_PARTICIPANTE'
1133
                    );
1134
                    $specialtyMainParticipant[] = new SoapVar(
1135
                        $params,
1136
                        SOAP_ENC_OBJECT,
1137
                        null,
1138
                        null,
1139
                        'PARTICIPANTE'
1140
                    );
1141
                }
1142
            }
1143
1144
            $result = new stdClass();
1145
1146
            $result->RESPUESTA_OBT_ACCION = new stdClass();
1147
            $result->RESPUESTA_OBT_ACCION->CODIGO_RETORNO = 0;
1148
            $result->RESPUESTA_OBT_ACCION->ETIQUETA_ERROR = 'Correcto';
1149
1150
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA = new stdClass();
1151
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->ID_ACCION = new stdClass();
1152
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->ID_ACCION->ORIGEN_ACCION = $actionOrigin;
1153
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->ID_ACCION->CODIGO_ACCION = $actionCode;
1154
1155
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->SITUACION = $row['situation'];
1156
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->ID_ESPECIALIDAD_PRINCIPAL = $mainSpecialty;
1157
1158
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->DURACION = $row['duration'];
1159
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->FECHA_INICIO = self::undoFixDate($row['start_date']);
1160
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->FECHA_FIN = self::undoFixDate($row['end_date']);
1161
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->IND_ITINERARIO_COMPLETO = $row['full_itinerary_indicator'];
1162
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->TIPO_FINANCIACION = $row['financing_type'];
1163
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->NUMERO_ASISTENTES = $row['attendees_count'];
1164
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->DESCRIPCION_ACCION = $actionDescription;
1165
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->ESPECIALIDADES_ACCION = $specialty;
1166
            $result->RESPUESTA_OBT_ACCION->ACCION_FORMATIVA->PARTICIPANTES = $specialtyMainParticipant;
1167
1168
            return $result;
1169
        } else {
1170
            // Existe la accion
1171
            return array(
1172
                "RESPUESTA_OBT_ACCION" => array(
1173
                    "CODIGO_RETORNO" => "1",
1174
                    "ETIQUETA_ERROR" => "Acción inexistente",
1175
                    "ACCION_FORMATIVA" => ""
1176
                )
1177
            );
1178
        }
1179
    }
1180
1181
    public function obtenerListaAcciones()
1182
    {
1183
        /* Tracking Log */
1184
        $tableLog = Database::get_main_table('plugin_sepe_log');
1185
        $paramsLog = array(
1186
            'ip' => $_SERVER['REMOTE_ADDR'],
1187
            'action' => "obtenerListaAcciones",
1188
            'fecha' => date("Y-m-d H:i:s")
1189
        );
1190
        Database::insert($tableLog, $paramsLog);
1191
        /* End tracking log */
1192
1193
        $table = Database::get_main_table('plugin_sepe_actions');
1194
1195
        $sql = "SELECT action_origin, action_code FROM $table";
1196
        $rs = Database::query($sql);
1197
1198
        if (!$rs) {
1199
            error_log('Problema base de datos ');
1200
            return array(
1201
                "RESPUESTA_OBT_LISTA_ACCIONES" => array(
1202
                    "CODIGO_RETORNO" => "-1",
1203
                    "ETIQUETA_ERROR" => "Problema base de datos - consulta acciones disponible",
1204
                    "LISTA_ACCIONES" => ''
1205
                )
1206
            );
1207
        }
1208
1209
        $list = array();
1210
        if (Database::num_rows($rs)) {
1211
            while ($row = Database::fetch_assoc($rs)) {
1212
                $params = new stdClass();
1213
                $params->ORIGEN_ACCION = $row['action_origin'];
1214
                $params->CODIGO_ACCION = $row['action_code'];
1215
1216
                $list[] = new SoapVar($params, SOAP_ENC_OBJECT);
1217
            }
1218
        }
1219
1220
        $result = new stdClass();
1221
        $result->RESPUESTA_OBT_LISTA_ACCIONES = new stdClass();
1222
        $result->RESPUESTA_OBT_LISTA_ACCIONES->CODIGO_RETORNO = 0;
1223
        $result->RESPUESTA_OBT_LISTA_ACCIONES->ETIQUETA_ERROR = 'Correcto';
1224
1225
        if (!empty($list)) {
1226
            $result->RESPUESTA_OBT_LISTA_ACCIONES->ID_ACCION = $list;
1227
        }
1228
1229
        return $result;
1230
    }
1231
1232
    public function eliminarAccion($eliminarAccionInput)
1233
    {
1234
        /* Tracking Log */
1235
        $tableLog = Database::get_main_table('plugin_sepe_log');
1236
        $paramsLog = array(
1237
            'ip' => $_SERVER['REMOTE_ADDR'],
1238
            'action' => "eliminarAccion",
1239
            'fecha' => date("Y-m-d H:i:s")
1240
        );
1241
        Database::insert($tableLog, $paramsLog);
1242
        /* End tracking log */
1243
1244
        $actionOrigin = $eliminarAccionInput->ID_ACCION->ORIGEN_ACCION;
1245
        $actionCode = $eliminarAccionInput->ID_ACCION->CODIGO_ACCION;
1246
1247
        if (empty($actionOrigin) || empty($actionCode)) {
1248
            return array(
1249
                "RESPUESTA_ELIMINAR_ACCION" => array(
1250
                    "CODIGO_RETORNO" => "2",
1251
                    "ETIQUETA_ERROR" => "Error en parametro"
1252
                )
1253
            );
1254
        }
1255
1256
        $table = Database::get_main_table('plugin_sepe_actions');
1257
        $sql = "DELETE FROM $table
1258
                WHERE action_origin='".$actionOrigin."' AND action_code='".$actionCode."';";
1259
1260
        $rs = Database::query($sql);
1261
        if (!$rs) {
1262
            return array(
1263
                "RESPUESTA_ELIMINAR_ACCION" => array(
1264
                    "CODIGO_RETORNO" => "-1",
1265
                    "ETIQUETA_ERROR" => "Problema base de datos - consulta acciones disponible"
1266
                )
1267
            );
1268
        }
1269
1270
        return array(
1271
            "RESPUESTA_ELIMINAR_ACCION" => array(
1272
                "CODIGO_RETORNO" => "0",
1273
                "ETIQUETA_ERROR" => "Correcto"
1274
            )
1275
        );
1276
    }
1277
1278
    // yyyy-mm-dd to dd/mm/yyyy
1279
    public static function undoFixDate($date)
1280
    {
1281
        if ($date == '0000-00-00' || empty($date)) {
1282
            return null;
1283
        }
1284
1285
        $date = explode('-', $date);
1286
        //
1287
        $date = $date[2].'/'.$date[1].'/'.$date[0];
1288
        return $date;
1289
    }
1290
1291
    // dd/mm/yyyy to yyyy-mm-dd
1292
    public static function fixDate($date)
1293
    {
1294
        if ($date == '00/00/0000' || empty($date)) {
1295
            return null;
1296
        }
1297
1298
        $date = explode('/', $date);
1299
        // Year-month-day
1300
        $date = $date[2].'-'.$date[1].'-'.$date[0];
1301
        return $date;
1302
    }
1303
1304
    protected function checkAuth()
1305
    {
1306
        if (!$this->authenticated) {
0 ignored issues
show
Bug Best Practice introduced by
The property authenticated does not exist on Sepe. Did you maybe forget to declare it?
Loading history...
1307
            error_log('403');
1308
        }
1309
    }
1310
}
1311