Browse Source

Iniciar Log. Corregir nombre columnas bbdd. Nombre archivos con filename original

Nermosis 3 years ago
parent
commit
f633813033
2 changed files with 88 additions and 74 deletions
  1. 1 1
      application/config/autoload.php
  2. 87 73
      application/controllers/ParserFile.php

+ 1 - 1
application/config/autoload.php View File

58
 |
58
 |
59
 |    $autoload['libraries'] = array('user_agent' => 'ua');
59
 |    $autoload['libraries'] = array('user_agent' => 'ua');
60
  */
60
  */
61
-$autoload['libraries'] = array();
61
+$autoload['libraries'] = array("database");
62
 
62
 
63
 /*
63
 /*
64
 | -------------------------------------------------------------------
64
 | -------------------------------------------------------------------

+ 87 - 73
application/controllers/ParserFile.php View File

8
     protected $esquema = array('cbc-place-ext', 'cac-place-ext', 'cbc', 'cac', 'ns1');
8
     protected $esquema = array('cbc-place-ext', 'cac-place-ext', 'cbc', 'cac', 'ns1');
9
 
9
 
10
     //TODO: Añadir los nodos que falten mirando la libreria de java
10
     //TODO: Añadir los nodos que falten mirando la libreria de java
11
-    //TODO: Crear las tablas segun el nodo
12
-    //TODO: Insertar los datos que si existen en el insert_batch.
11
+    //TODO: Crear log por dia y hora
12
+    //TODO: Log de la carpeta seleccionada
13
     public function __construct()
13
     public function __construct()
14
     {
14
     {
15
         parent::__construct();
15
         parent::__construct();
16
         $this->load->helper('file');
16
         $this->load->helper('file');
17
-        $this->load->library('parserDatabase');
17
+        $this->load->library('parserdatabase');
18
     }
18
     }
19
 
19
 
20
     public function index()
20
     public function index()
21
     {
21
     {
22
         $files = get_filenames($this->rutaDiaria, true);
22
         $files = get_filenames($this->rutaDiaria, true);
23
 
23
 
24
-        $contadorArchivos = 0;
24
+        guardar_log("setLicitacion", "----------------------------------", false);
25
+        guardar_log("setLicitacion", "Licitaciones de fecha " . date("Y-m-d H:i:s"), false);
26
+
27
+        $resultEntries = array();
25
         foreach ($files as $file) {
28
         foreach ($files as $file) {
26
 
29
 
27
             $entrada = file_get_contents($file);
30
             $entrada = file_get_contents($file);
28
             $xml = simplexml_load_string($entrada);
31
             $xml = simplexml_load_string($entrada);
29
-
32
+            $filename = basename($file);
30
             $aux = 0;
33
             $aux = 0;
31
-            $resultEntries = array();
32
             foreach ($xml->entry as $clave => $row) {
34
             foreach ($xml->entry as $clave => $row) {
33
                 $arrayDeletedEntries = $xml->children('at', true);
35
                 $arrayDeletedEntries = $xml->children('at', true);
34
 
36
 
35
-                $resultEntries[$aux]['general'] = $this->nodoEntry($row);
37
+                $resultEntries[$filename][$aux]['general'] = $this->nodoEntry($row);
36
 
38
 
37
-                $resultEntries[$aux]['contractInfo'] = $this->nodoContractFolderStatus($row);
39
+                $resultEntries[$filename][$aux]['contractInfo'] = $this->nodoContractFolderStatus($row);
38
 
40
 
39
-                $resultEntries[$aux]['locatedContractingParty'] = $this->nodoLocatedContractingParty($row);
41
+                $resultEntries[$filename][$aux]['locatedContractingParty'] = $this->nodoLocatedContractingParty($row);
40
 
42
 
41
-                $resultEntries[$aux]['party'] = $this->nodoParty($row);
43
+                $resultEntries[$filename][$aux]['party'] = $this->nodoParty($row);
42
 
44
 
43
-                $resultEntries[$aux]['procurementProject'] = $this->nodoPresupuesto($row);
45
+                $resultEntries[$filename][$aux]['procurementProject'] = $this->nodoPresupuesto($row);
44
 
46
 
45
-                $resultEntries[$aux]['procurementProjectLot'] = $this->nodoProcurementProjectLot($row);
47
+                $resultEntries[$filename][$aux]['procurementProjectLot'] = $this->nodoProcurementProjectLot($row);
46
 
48
 
47
-                $resultEntries[$aux]['tenderingTerms'] = $this->nodoTenderingTerms($row);
49
+                $resultEntries[$filename][$aux]['tenderingTerms'] = $this->nodoTenderingTerms($row);
48
 
50
 
49
-                $resultEntries[$aux]['tenderingProcess'] = $this->nodoTenderingProcess($row);
51
+                $resultEntries[$filename][$aux]['tenderingProcess'] = $this->nodoTenderingProcess($row);
50
 
52
 
51
-                $resultEntries[$aux]['tenderingResult'] = $this->nodoTenderResult($row);
53
+                $resultEntries[$filename][$aux]['tenderingResult'] = $this->nodoTenderResult($row);
52
 
54
 
53
-                $resultEntries[$aux]['legalDocs'] = $this->nodoLegalDoc($row);
55
+                $resultEntries[$filename][$aux]['validNoticeInfo'] = $this->nodoValidNoticeInfo($row);
54
 
56
 
55
-                $resultEntries[$aux]['techicalDocs'] = $this->nodoTechnicalDocumentReference($row);
57
+                $resultEntries[$filename][$aux]['legalDocs'] = $this->nodoLegalDoc($row);
56
 
58
 
57
-                $resultEntries[$aux]['validNoticeInfo'] = $this->nodoValidNoticeInfo($row);
59
+                $resultEntries[$filename][$aux]['technicalDocs'] = $this->nodoTechnicalDocumentReference($row);
58
 
60
 
59
-                $resultEntries[$aux]['generalDocs'] = $this->nodoGeneralDocuments($row);
61
+                $resultEntries[$filename][$aux]['generalDocs'] = $this->nodoGeneralDocuments($row);
60
 
62
 
61
-                $resultEntries[$aux]['additionalDocs'] = $this->nodoAdditionalDocumentReference($row);
63
+                $resultEntries[$filename][$aux]['additionalDocs'] = $this->nodoAdditionalDocumentReference($row);
62
 
64
 
63
                 $aux++;
65
                 $aux++;
64
             }
66
             }
65
 
67
 
66
             $str = print_r($resultEntries, true);
68
             $str = print_r($resultEntries, true);
67
 
69
 
68
-            file_put_contents($this->rutaDiaria . "/text" . $contadorArchivos . ".txt", $str);
69
-
70
-            $contadorArchivos++;
71
-
70
+            file_put_contents($this->rutaDiaria . "/text_" . $filename . ".txt", $str);
72
         }
71
         }
72
+
73
+        $this->parserdatabase->setDatosParser($resultEntries);
73
     }
74
     }
74
 
75
 
75
     private function nodoEntry($xml)
76
     private function nodoEntry($xml)
76
     {
77
     {
77
         $resultEntries = array();
78
         $resultEntries = array();
78
 
79
 
79
-        $resultEntries['id_url'] = (string) $xml->id;
80
+        $resultEntries['url_id_licitacion'] = (string) $xml->id;
80
         $resultEntries['id_licitacion'] = (string) substr($xml->id, strrpos($xml->id, '/') + 1);
81
         $resultEntries['id_licitacion'] = (string) substr($xml->id, strrpos($xml->id, '/') + 1);
81
-        $resultEntries['link'] = (string) $xml->link;
82
-        $resultEntries['link_uri'] = (string) $xml->link->attributes()['href'];
82
+        $resultEntries['link_licitacion'] = (string) $xml->link;
83
+        $resultEntries['link_uri'] = (string) $this->existAttribute($xml, "link", "string", 'href');
83
         $resultEntries['summary'] = (string) $xml->summary;
84
         $resultEntries['summary'] = (string) $xml->summary;
84
         $resultEntries['title'] = (string) $xml->title;
85
         $resultEntries['title'] = (string) $xml->title;
85
         $resultEntries['updated'] = (string) $xml->updated;
86
         $resultEntries['updated'] = (string) $xml->updated;
93
         if (isset($xml->ContractFolderStatus)) {
94
         if (isset($xml->ContractFolderStatus)) {
94
             $resultEntries['ContractFolderID'] = (string) $xml->ContractFolderStatus->ContractFolderID;
95
             $resultEntries['ContractFolderID'] = (string) $xml->ContractFolderStatus->ContractFolderID;
95
             $resultEntries['ContractFolderStatusCode'] = (string) $xml->ContractFolderStatus->ContractFolderStatusCode;
96
             $resultEntries['ContractFolderStatusCode'] = (string) $xml->ContractFolderStatus->ContractFolderStatusCode;
96
-            $resultEntries['ContractFolderStatusCodeAttr'] = (string) $xml->ContractFolderStatus->ContractFolderStatusCode->attributes()['listURI'];
97
+            $resultEntries['ContractFolderStatusCodeAttr'] = $this->existAttribute($xml->ContractFolderStatus, "ContractFolderStatusCode", "string", 'listURI');
97
         }
98
         }
98
         $resultFinal = $this->array_remove_empty($resultEntries);
99
         $resultFinal = $this->array_remove_empty($resultEntries);
99
         return $resultFinal;
100
         return $resultFinal;
106
             $LocatedContractingParty = $xml->ContractFolderStatus->LocatedContractingParty;
107
             $LocatedContractingParty = $xml->ContractFolderStatus->LocatedContractingParty;
107
 
108
 
108
             $resultEntries['contractingPartyTypeCode'] = $this->existNodo($LocatedContractingParty, "ContractingPartyTypeCode", 'string');
109
             $resultEntries['contractingPartyTypeCode'] = $this->existNodo($LocatedContractingParty, "ContractingPartyTypeCode", 'string');
109
-            $resultEntries['contractingPartyTypeCodeUri'] = (string) $LocatedContractingParty->ContractingPartyTypeCode->attributes()['listURI'];
110
+            $resultEntries['contractingPartyTypeCodeUri'] = $this->existAttribute($LocatedContractingParty, "ContractingPartyTypeCode", 'string', 'listURI');
110
 
111
 
111
             if (isset($LocatedContractingParty->ActivityCode)) {
112
             if (isset($LocatedContractingParty->ActivityCode)) {
112
                 if (count($LocatedContractingParty->ActivityCode) > 1) {
113
                 if (count($LocatedContractingParty->ActivityCode) > 1) {
113
                     for ($i = 0; $i < count($LocatedContractingParty->ActivityCode); $i++) {
114
                     for ($i = 0; $i < count($LocatedContractingParty->ActivityCode); $i++) {
114
                         $resultEntries['activityCode'][$i] = (string) $LocatedContractingParty->ActivityCode[$i];
115
                         $resultEntries['activityCode'][$i] = (string) $LocatedContractingParty->ActivityCode[$i];
115
-                        //$resultEntries['activityCodeUri'][$i] = $LocatedContractingParty->ActivityCode[$i]->attributes()['listURI'];
116
                     }
116
                     }
117
                 } else {
117
                 } else {
118
                     $resultEntries['activityCode'][0] = $this->existNodo($LocatedContractingParty, "ActivityCode", 'string');
118
                     $resultEntries['activityCode'][0] = $this->existNodo($LocatedContractingParty, "ActivityCode", 'string');
119
-                    $resultEntries['activityCodeUri'][0] = (string) $LocatedContractingParty->ActivityCode->attributes()['listURI'];
119
+                    $resultEntries['activityCodeUri'][0] = $this->existAttribute($LocatedContractingParty, "ActivityCode", 'string', 'listURI');
120
+
120
                 }
121
                 }
121
 
122
 
122
             }
123
             }
145
             if (isset($party->PartyIdentification)) {
146
             if (isset($party->PartyIdentification)) {
146
                 for ($i = 0; $i < $party->PartyIdentification; $i++) {
147
                 for ($i = 0; $i < $party->PartyIdentification; $i++) {
147
                     $resultEntries['partyIdentification'][$i]['id'] = $this->existNodo($party->PartyIdentification, "ID", 'string');
148
                     $resultEntries['partyIdentification'][$i]['id'] = $this->existNodo($party->PartyIdentification, "ID", 'string');
148
-                    $resultEntries['partyIdentification'][$i]['attr'] = $party->PartyIdentification->attributes()['schemeName'];
149
+                    $resultEntries['partyIdentification'][$i]['attr'] = $this->existAttribute($party, "PartyIdentification", "string", 'schemeName');
149
                 }
150
                 }
150
             }
151
             }
151
 
152
 
191
                 $resultEntries['countrySubentity'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentity', 'string');
192
                 $resultEntries['countrySubentity'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentity', 'string');
192
                 if (isset($procurementProject->RealizedLocation->CountrySubentityCode)) {
193
                 if (isset($procurementProject->RealizedLocation->CountrySubentityCode)) {
193
                     $resultEntries['countrySubentityCode'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
194
                     $resultEntries['countrySubentityCode'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
194
-                    $resultEntries['countrySubentityCode'] = $procurementProject->RealizedLocation->CountrySubentityCode->attributes()['listURI'];
195
+                    $resultEntries['countrySubentityCode'] = $this->existAttribute($procurementProject->RealizedLocation, "CountrySubentityCode", "string", 'listURI');
195
                 }
196
                 }
196
 
197
 
197
                 if (isset($procurementProject->RealizedLocation->Address)) {
198
                 if (isset($procurementProject->RealizedLocation->Address)) {
204
             $resultEntries['durationMesure'] = $this->existNodo($procurementProject->PlannedPeriod, 'DurationMeasure', 'string');
205
             $resultEntries['durationMesure'] = $this->existNodo($procurementProject->PlannedPeriod, 'DurationMeasure', 'string');
205
             $resultEntries['duracion_inicio'] = $this->existNodo($procurementProject->PlannedPeriod, 'StartDate', 'string');
206
             $resultEntries['duracion_inicio'] = $this->existNodo($procurementProject->PlannedPeriod, 'StartDate', 'string');
206
             $resultEntries['duracion_fin'] = $this->existNodo($procurementProject->PlannedPeriod, 'EndDate', 'string');
207
             $resultEntries['duracion_fin'] = $this->existNodo($procurementProject->PlannedPeriod, 'EndDate', 'string');
207
-            if (isset($procurementProject->PlannedPeriod->DurationMeasure)) {
208
-                $resultEntries['medida'] = (string) $procurementProject->PlannedPeriod->DurationMeasure->attributes()['unitCode'];
209
-            }
208
+            $resultEntries['medida'] = $this->existAttribute($procurementProject->PlannedPeriod, "DurationMeasure", "string", 'unitCode');
210
 
209
 
211
             $resultEntries['contractExtension'] = $this->existNodo($procurementProject->ContractExtension, 'OptionsDescription', 'string');
210
             $resultEntries['contractExtension'] = $this->existNodo($procurementProject->ContractExtension, 'OptionsDescription', 'string');
212
         }
211
         }
231
                 if (isset($clasificacionItems)) {
230
                 if (isset($clasificacionItems)) {
232
                     for ($j = 0; $j < count($clasificacionItems); $j++) {
231
                     for ($j = 0; $j < count($clasificacionItems); $j++) {
233
                         $resultEntries[$i]['itemClassification']['id'][$j] = $clasificacionItems[$j]->ItemClassificationCode;
232
                         $resultEntries[$i]['itemClassification']['id'][$j] = $clasificacionItems[$j]->ItemClassificationCode;
234
-                        $resultEntries[$i]['itemClassification']['id_attr'][$j] = (string) $clasificacionItems[$j]->ItemClassificationCode->attributes()['listURI'];
233
+                        $resultEntries[$i]['itemClassification']['id_attr'][$j] = $this->existAttribute($clasificacionItems[$j], "ItemClassificationCode", "string", 'listURI');
235
                     }
234
                     }
236
                 }
235
                 }
237
 
236
 
292
             $resultEntries['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
291
             $resultEntries['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
293
             if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) {
292
             if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) {
294
                 $resultEntries['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
293
                 $resultEntries['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
295
-                $resultEntries['guaranteeTypeCode_attr'] = $TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode->attributes()['listURI'];
294
+                $resultEntries['guaranteeTypeCode_attr'] = $this->existAttribute($TenderingTerms->RequiredFinancialGuarantee, "GuaranteeTypeCode", "string", 'listURI');
296
                 $resultEntries['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
295
                 $resultEntries['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
297
             }
296
             }
298
 
297
 
300
             $resultEntries['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
299
             $resultEntries['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
301
 
300
 
302
             $tendererAwardingTerms = $TenderingTerms->AwardingTerms;
301
             $tendererAwardingTerms = $TenderingTerms->AwardingTerms;
303
-            if (count($tendererAwardingTerms)) {
302
+            if (isset($tendererAwardingTerms) && !empty($tendererAwardingTerms)) {
304
                 for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) {
303
                 for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) {
305
                     $resultEntries['awardingTerms'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
304
                     $resultEntries['awardingTerms'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
306
                     $resultEntries['awardingTerms'][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
305
                     $resultEntries['awardingTerms'][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
308
             }
307
             }
309
 
308
 
310
             $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest;
309
             $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest;
311
-            if (isset($tendererQualificationRequest)) {
310
+            if (isset($tendererQualificationRequest) && !empty($tendererQualificationRequest)) {
312
                 $resultEntries['tendererQualificationRequest']['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
311
                 $resultEntries['tendererQualificationRequest']['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
313
                 for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
312
                 for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
314
-                    $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string');
315
-                    $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode_attr'] = $tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode->attributes()['listURI'];
313
+                    if (isset($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode)) {
314
+                        $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string');
315
+                        $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, "EvaluationCriteriaTypeCode", "sting", 'listURI');
316
+                    }
317
+
316
                     $resultEntries['tendererQualificationRequest'][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string');
318
                     $resultEntries['tendererQualificationRequest'][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string');
317
                 }
319
                 }
318
             }
320
             }
319
 
321
 
320
             $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria;
322
             $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria;
321
-            if (count($financialEvaluationCriteria)) {
323
+            if (isset($financialEvaluationCriteria) && !empty($financialEvaluationCriteria)) {
322
                 for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
324
                 for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
323
-                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode, 'EvaluationCriteriaTypeCode', 'string');
324
-                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode->EvaluationCriteriaTypeCode->attributes()['listURI'];
325
-                    $resultEntries['financialEvaluationCriteria'][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode, 'Description', 'string');
325
+                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i], 'EvaluationCriteriaTypeCode', 'string');
326
+                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($financialEvaluationCriteria[$i], "EvaluationCriteriaTypeCode", "string", 'listURI');
327
+                    $resultEntries['financialEvaluationCriteria'][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i], 'Description', 'string');
326
                 }
328
                 }
327
             }
329
             }
328
 
330
 
329
             $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
331
             $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
330
-            if (count($specificTendererRequirement)) {
332
+            if (isset($specificTendererRequirement) && !empty($specificTendererRequirement)) {
331
                 for ($i = 0; $i < count($specificTendererRequirement); $i++) {
333
                 for ($i = 0; $i < count($specificTendererRequirement); $i++) {
334
+
332
                     $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string');
335
                     $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string');
333
-                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $specificTendererRequirement[$i]->SpecificTendererRequirement->RequirementTypeCode->attributes()['listURI'];
336
+                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($specificTendererRequirement[$i]->SpecificTendererRequirement, "RequirementTypeCode", "string", 'listURI');
334
                 }
337
                 }
335
             }
338
             }
336
 
339
 
347
 
350
 
348
         if (isset($tenderingProcess)) {
351
         if (isset($tenderingProcess)) {
349
             //TenderingProcess
352
             //TenderingProcess
350
-            if (isset($tenderingProcess->ProcedureCode)) {
351
-                $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
352
-                $resultEntries['procedureCode_attr'] = $tenderingProcess->ProcedureCode->attributes()['listURI'];
353
-            }
353
+            $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
354
+            $resultEntries['procedureCode_attr'] = $this->existAttribute($tenderingProcess, "ProcedureCode", "string", 'listURI');
354
 
355
 
355
-            if (isset($tenderingProcess->UrgencyCode)) {
356
-                $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
357
-                $resultEntries['urgencyCode_attr'] = $tenderingProcess->UrgencyCode->attributes()['listURI'];
358
-            }
356
+            $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
357
+            $resultEntries['urgencyCode_attr'] = $this->existAttribute($tenderingProcess, "UrgencyCode", "string", 'listURI');
359
 
358
 
360
-            if (isset($tenderingProcess->ContractingSystemCode)) {
361
-                $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
362
-                $resultEntries['contractingSystemCode_attr'] = $tenderingProcess->ContractingSystemCode->attributes()['listURI'];
363
-            }
359
+            $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
360
+            $resultEntries['contractingSystemCode_attr'] = $this->existAttribute($tenderingProcess, "ContractingSystemCode", "string", 'listURI');
364
 
361
 
365
-            if (isset($tenderingProcess->partPresentationCode)) {
366
-                $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'partPresentationCode', 'string');
367
-                $resultEntries['partPresentationCode_attr'] = $tenderingProcess->partPresentationCode->attributes()['listURI'];
368
-            }
362
+            $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string');
363
+            $resultEntries['partPresentationCode_attr'] = $this->existAttribute($tenderingProcess, "PartPresentationCode", "string", 'listURI');
369
 
364
 
370
-            if (isset($tenderingProcess->submissionMethodCode)) {
371
-                $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'submissionMethodCode', 'string');
372
-                $resultEntries['submissionMethodCode_attr'] = $tenderingProcess->submissionMethodCode->attributes()['listURI'];
373
-            }
365
+            $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string');
366
+            $resultEntries['submissionMethodCode_attr'] = $this->existAttribute($tenderingProcess, "SubmissionMethodCode", "string", 'listURI');
374
 
367
 
375
             $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
368
             $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
376
             $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
369
             $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
394
         if (isset($legalDocumentReference)) {
387
         if (isset($legalDocumentReference)) {
395
 
388
 
396
             for ($i = 0; $i < count($legalDocumentReference); $i++) {
389
             for ($i = 0; $i < count($legalDocumentReference); $i++) {
397
-                $resultEntries[$i]['id'] = $this->existNodo($legalDocumentReference[$i], 'ID', 'string');
390
+                $resultEntries[$i]['idDoc'] = $this->existNodo($legalDocumentReference[$i], 'ID', 'string');
398
                 $resultEntries[$i]['attachment'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
391
                 $resultEntries[$i]['attachment'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
399
                 $resultEntries[$i]['documentHash'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
392
                 $resultEntries[$i]['documentHash'] = $this->existNodo($legalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
400
             }
393
             }
412
         if (isset($technicalDocumentReference)) {
405
         if (isset($technicalDocumentReference)) {
413
 
406
 
414
             for ($i = 0; $i < count($technicalDocumentReference); $i++) {
407
             for ($i = 0; $i < count($technicalDocumentReference); $i++) {
415
-                $resultEntries[$i]['id'] = $this->existNodo($technicalDocumentReference[$i], 'ID', 'string');
408
+                $resultEntries[$i]['idDoc'] = $this->existNodo($technicalDocumentReference[$i], 'ID', 'string');
416
                 $resultEntries[$i]['attachment'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
409
                 $resultEntries[$i]['attachment'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
417
                 $resultEntries[$i]['documentHash'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
410
                 $resultEntries[$i]['documentHash'] = $this->existNodo($technicalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
418
             }
411
             }
430
         if (isset($additionalDocumentReference)) {
423
         if (isset($additionalDocumentReference)) {
431
 
424
 
432
             for ($i = 0; $i < count($additionalDocumentReference); $i++) {
425
             for ($i = 0; $i < count($additionalDocumentReference); $i++) {
433
-                $resultEntries[$i]['id'] = $this->existNodo($additionalDocumentReference[$i], 'ID', 'string');
426
+                $resultEntries[$i]['idDoc'] = $this->existNodo($additionalDocumentReference[$i], 'ID', 'string');
434
                 $resultEntries[$i]['attachment'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
427
                 $resultEntries[$i]['attachment'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'URI', 'string');
435
                 $resultEntries[$i]['documentHash'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
428
                 $resultEntries[$i]['documentHash'] = $this->existNodo($additionalDocumentReference[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
436
             }
429
             }
453
                 if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) {
446
                 if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) {
454
                     for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) {
447
                     for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) {
455
 
448
 
456
-                        $resultEntries[$i]['fechas'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j], 'IssueDate', 'string');
449
+                        $resultEntries[$i]['fechas'][] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j], 'IssueDate', 'string');
457
                         if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) {
450
                         if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) {
458
                             $resultEntries[$i]['documento']['documento'][] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'URI', 'string');
451
                             $resultEntries[$i]['documento']['documento'][] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'URI', 'string');
459
                             $resultEntries[$i]['documento']['filename'][] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'FileName', 'string');
452
                             $resultEntries[$i]['documento']['filename'][] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'FileName', 'string');
476
         if (isset($generalDocument)) {
469
         if (isset($generalDocument)) {
477
 
470
 
478
             for ($i = 0; $i < count($generalDocument); $i++) {
471
             for ($i = 0; $i < count($generalDocument); $i++) {
479
-                $resultEntries[$i]['id'] = $this->existNodo($generalDocument[$i], 'ID', 'string');
472
+                $resultEntries[$i]['idDoc'] = $this->existNodo($generalDocument[$i], 'ID', 'string');
480
                 $resultEntries[$i]['attachment'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'URI', 'string');
473
                 $resultEntries[$i]['attachment'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'URI', 'string');
481
                 $resultEntries[$i]['documentHash'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
474
                 $resultEntries[$i]['documentHash'] = $this->existNodo($generalDocument[$i]->Attachment->ExternalReference, 'DocumentHash', 'string');
482
             }
475
             }
496
         }
489
         }
497
     }
490
     }
498
 
491
 
492
+    private function existAttribute($nodo, $nodoHijo, $tipo, $nombreAttributo)
493
+    {
494
+        $nodoFinal = $nodo->{$nodoHijo};
495
+        if (isset($nodoFinal) && !empty($nodoFinal)) {
496
+            //if (@count($nodo->{$nodoHijo}) > 0) {
497
+            return $this->switchTipoAttribute($tipo, $nodo->{$nodoHijo}, $nombreAttributo);
498
+            //}
499
+        } else {
500
+            return "";
501
+        }
502
+    }
503
+
499
     private function switchTipo($tipo, $nodo)
504
     private function switchTipo($tipo, $nodo)
500
     {
505
     {
501
         switch ($tipo) {
506
         switch ($tipo) {
511
         }
516
         }
512
     }
517
     }
513
 
518
 
519
+    private function switchTipoAttribute($tipo, $nodo, $attributo)
520
+    {
521
+        switch ($tipo) {
522
+            case 'string':
523
+                return (string) $nodo->attributes()[$attributo];
524
+                break;
525
+        }
526
+    }
527
+
514
     private function recurseXML($xml, $parent = "")
528
     private function recurseXML($xml, $parent = "")
515
     {
529
     {
516
         $child_count = 0;
530
         $child_count = 0;