소스 검색

modificar estructura de nodos

Nermosis 3 년 전
부모
커밋
4c6637b953
1개의 변경된 파일102개의 추가작업 그리고 22개의 파일을 삭제
  1. 102 22
      application/controllers/ParserFile.php

+ 102 - 22
application/controllers/ParserFile.php 파일 보기

@@ -14,6 +14,7 @@ class ParserFile extends CI_Controller
14 14
     {
15 15
         parent::__construct();
16 16
         $this->load->helper('file');
17
+        $this->load->library('parserDatabase');
17 18
     }
18 19
 
19 20
     public function index()
@@ -31,14 +32,14 @@ class ParserFile extends CI_Controller
31 32
             foreach ($xml->entry as $clave => $row) {
32 33
                 $arrayDeletedEntries = $xml->children('at', true);
33 34
 
35
+                $resultEntries[$aux]['general'] = $this->nodoEntry($row);
36
+
34 37
                 $resultEntries[$aux]['contractInfo'] = $this->nodoContractFolderStatus($row);
35 38
 
36 39
                 $resultEntries[$aux]['locatedContractingParty'] = $this->nodoLocatedContractingParty($row);
37 40
 
38 41
                 $resultEntries[$aux]['party'] = $this->nodoParty($row);
39 42
 
40
-                //$resultEntries[] = $this->nodoParentLocatedParty($row);
41
-
42 43
                 $resultEntries[$aux]['procurementProject'] = $this->nodoPresupuesto($row);
43 44
 
44 45
                 $resultEntries[$aux]['procurementProjectLot'] = $this->nodoProcurementProjectLot($row);
@@ -71,6 +72,21 @@ class ParserFile extends CI_Controller
71 72
         }
72 73
     }
73 74
 
75
+    private function nodoEntry($xml)
76
+    {
77
+        $resultEntries = array();
78
+
79
+        $resultEntries['id_url'] = (string) $xml->id;
80
+        $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'];
83
+        $resultEntries['summary'] = (string) $xml->summary;
84
+        $resultEntries['title'] = (string) $xml->title;
85
+        $resultEntries['updated'] = (string) $xml->updated;
86
+
87
+        return $resultEntries;
88
+    }
89
+
74 90
     private function nodoContractFolderStatus($xml)
75 91
     {
76 92
         $resultEntries = array();
@@ -94,9 +110,9 @@ class ParserFile extends CI_Controller
94 110
 
95 111
             if (isset($LocatedContractingParty->ActivityCode)) {
96 112
                 if (count($LocatedContractingParty->ActivityCode) > 1) {
97
-                    for ($i = 0; $i < $LocatedContractingParty->ActivityCode; $i++) {
98
-                        $resultEntries['activityCode'][$i] = $this->existNodo($LocatedContractingParty, "ActivityCode", 'string');
99
-                        $resultEntries['activityCodeUri'][$i] = (string) $LocatedContractingParty->ActivityCode->attributes()['listURI'];
113
+                    for ($i = 0; $i < count($LocatedContractingParty->ActivityCode); $i++) {
114
+                        $resultEntries['activityCode'][$i] = (string) $LocatedContractingParty->ActivityCode[$i];
115
+                        //$resultEntries['activityCodeUri'][$i] = $LocatedContractingParty->ActivityCode[$i]->attributes()['listURI'];
100 116
                     }
101 117
                 } else {
102 118
                     $resultEntries['activityCode'][0] = $this->existNodo($LocatedContractingParty, "ActivityCode", 'string');
@@ -173,8 +189,11 @@ class ParserFile extends CI_Controller
173 189
 
174 190
             if (isset($procurementProject->RealizedLocation)) {
175 191
                 $resultEntries['countrySubentity'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentity', 'string');
176
-                $resultEntries['countrySubentityCode'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
177
-                $resultEntries['countrySubentityCode'] = $procurementProject->RealizedLocation->CountrySubentityCode->attributes()['listURI'];
192
+                if (isset($procurementProject->RealizedLocation->CountrySubentityCode)) {
193
+                    $resultEntries['countrySubentityCode'] = $this->existNodo($procurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
194
+                    $resultEntries['countrySubentityCode'] = $procurementProject->RealizedLocation->CountrySubentityCode->attributes()['listURI'];
195
+                }
196
+
178 197
                 if (isset($procurementProject->RealizedLocation->Address)) {
179 198
                     $resultEntries['cityName'] = $this->existNodo($procurementProject->RealizedLocation->Address->Country, 'CityName', 'string');
180 199
                     $resultEntries['IdentificationCode'] = $this->existNodo($procurementProject->RealizedLocation->Address->Country, 'IdentificationCode', 'string');
@@ -207,7 +226,15 @@ class ParserFile extends CI_Controller
207 226
                 $resultEntries[$i]['name'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject, 'Name', 'string');
208 227
                 $resultEntries[$i]['totalAmount'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->BudgetAmount, 'TotalAmount', 'string');
209 228
                 $resultEntries[$i]['taxExclusiveAmount'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->BudgetAmount, 'TaxExclusiveAmount', 'string');
210
-                $resultEntries[$i]['itemClassificationCode'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RequiredCommodityClassification, 'ItemClassificationCode', 'string');
229
+
230
+                $clasificacionItems = $procurementProjectLot[$i]->ProcurementProject->RequiredCommodityClassification;
231
+                if (isset($clasificacionItems)) {
232
+                    for ($j = 0; $j < count($clasificacionItems); $j++) {
233
+                        $resultEntries[$i]['itemClassification']['id'][$j] = $clasificacionItems[$j]->ItemClassificationCode;
234
+                        $resultEntries[$i]['itemClassification']['id_attr'][$j] = (string) $clasificacionItems[$j]->ItemClassificationCode->attributes()['listURI'];
235
+                    }
236
+                }
237
+
211 238
                 if (isset($procurementProjectLot[$i]->RealizedLocation)) {
212 239
                     $resultEntries[$i]['countrySubentity'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation, 'CountrySubentity', 'string');
213 240
                     $resultEntries[$i]['countrySubentityCode'] = $this->existNodo($procurementProjectLot[$i]->ProcurementProject->RealizedLocation, 'CountrySubentityCode', 'string');
@@ -263,35 +290,51 @@ class ParserFile extends CI_Controller
263 290
             $resultEntries['requiredCurriculaIndicator'] = $this->existNodo($TenderingTerms, 'RequiredCurriculaIndicator', 'string');
264 291
             $resultEntries['variantConstraintIndicator'] = $this->existNodo($TenderingTerms, 'VariantConstraintIndicator', 'string');
265 292
             $resultEntries['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string');
266
-            $resultEntries['requiredFinancialGuarantee']['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
267
-            $resultEntries['requiredFinancialGuarantee']['amountRate'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
293
+            if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) {
294
+                $resultEntries['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string');
295
+                $resultEntries['guaranteeTypeCode_attr'] = $TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode->attributes()['listURI'];
296
+                $resultEntries['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string');
297
+            }
298
+
268 299
             $resultEntries['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms->ProcurementLegislationDocumentReference, 'ID', 'string');
300
+            $resultEntries['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string');
301
+
302
+            $tendererAwardingTerms = $TenderingTerms->AwardingTerms;
303
+            if (count($tendererAwardingTerms)) {
304
+                for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) {
305
+                    $resultEntries['awardingTerms'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string');
306
+                    $resultEntries['awardingTerms'][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string');
307
+                }
308
+            }
269 309
 
270 310
             $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest;
271 311
             if (isset($tendererQualificationRequest)) {
272 312
                 $resultEntries['tendererQualificationRequest']['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string');
273 313
                 for ($i = 0; $i < count($tendererQualificationRequest); $i++) {
274 314
                     $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string');
315
+                    $resultEntries['tendererQualificationRequest'][$i]['evaluationCriteriaTypeCode_attr'] = $tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode->attributes()['listURI'];
275 316
                     $resultEntries['tendererQualificationRequest'][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string');
276 317
                 }
277 318
             }
278 319
 
279 320
             $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria;
280
-            if (isset($financialEvaluationCriteria)) {
321
+            if (count($financialEvaluationCriteria)) {
281 322
                 for ($i = 0; $i < count($financialEvaluationCriteria); $i++) {
282 323
                     $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode, 'EvaluationCriteriaTypeCode', 'string');
324
+                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode->EvaluationCriteriaTypeCode->attributes()['listURI'];
283 325
                     $resultEntries['financialEvaluationCriteria'][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i]->EvaluationCriteriaTypeCode, 'Description', 'string');
284 326
                 }
285 327
             }
286 328
 
287 329
             $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement;
288
-            if (isset($specificTendererRequirement)) {
330
+            if (count($specificTendererRequirement)) {
289 331
                 for ($i = 0; $i < count($specificTendererRequirement); $i++) {
290 332
                     $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string');
333
+                    $resultEntries['financialEvaluationCriteria'][$i]['evaluationCriteriaTypeCode_attr'] = $specificTendererRequirement[$i]->SpecificTendererRequirement->RequirementTypeCode->attributes()['listURI'];
291 334
                 }
292 335
             }
293 336
 
294
-            //$Language = $this->existNodo($contractFolderCac->TenderingTerms->children('cac', true)->Language, 'cbc', 'array');
337
+            $resultEntries['language'] = $this->existNodo($TenderingTerms->Language, 'ID', 'string');
295 338
         }
296 339
         $resultFinal = $this->array_remove_empty($resultEntries);
297 340
         return $resultFinal;
@@ -304,13 +347,38 @@ class ParserFile extends CI_Controller
304 347
 
305 348
         if (isset($tenderingProcess)) {
306 349
             //TenderingProcess
307
-            $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
308
-            $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
309
-            $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string');
310
-            $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
311
-            $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string');
350
+            if (isset($tenderingProcess->ProcedureCode)) {
351
+                $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string');
352
+                $resultEntries['procedureCode_attr'] = $tenderingProcess->ProcedureCode->attributes()['listURI'];
353
+            }
354
+
355
+            if (isset($tenderingProcess->UrgencyCode)) {
356
+                $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string');
357
+                $resultEntries['urgencyCode_attr'] = $tenderingProcess->UrgencyCode->attributes()['listURI'];
358
+            }
359
+
360
+            if (isset($tenderingProcess->ContractingSystemCode)) {
361
+                $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string');
362
+                $resultEntries['contractingSystemCode_attr'] = $tenderingProcess->ContractingSystemCode->attributes()['listURI'];
363
+            }
364
+
365
+            if (isset($tenderingProcess->partPresentationCode)) {
366
+                $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'partPresentationCode', 'string');
367
+                $resultEntries['partPresentationCode_attr'] = $tenderingProcess->partPresentationCode->attributes()['listURI'];
368
+            }
369
+
370
+            if (isset($tenderingProcess->submissionMethodCode)) {
371
+                $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'submissionMethodCode', 'string');
372
+                $resultEntries['submissionMethodCode_attr'] = $tenderingProcess->submissionMethodCode->attributes()['listURI'];
373
+            }
374
+
375
+            $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string');
376
+            $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string');
312 377
             $resultEntries['deadLineEndDate'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndDate', 'string');
313 378
             $resultEntries['deadLineEndTime'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndTime', 'string');
379
+            $resultEntries['deadLineDescription'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'Description', 'string');
380
+            $resultEntries['auctionTerms'] = $this->existNodo($tenderingProcess->AuctionTerms, 'AuctionConstraintIndicator', 'string');
381
+            $resultEntries['LotsCombinationContractingAuthorityRights'] = $this->existNodo($tenderingProcess, 'LotsCombinationContractingAuthorityRights', 'string');
314 382
             $resultEntries['documentAvailablePeriod_EndDate'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndDate', 'string');
315 383
             $resultEntries['documentAvailablePeriod_EndTime'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndTime', 'string');
316 384
         }
@@ -379,11 +447,23 @@ class ParserFile extends CI_Controller
379 447
 
380 448
         if (isset($validNoticeInfo)) {
381 449
             for ($i = 0; $i < count($validNoticeInfo); $i++) {
382
-                $resultEntries[$i]['NoticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string');
383
-                $resultEntries[$i]['PublicationMediaName'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus, 'PublicationMediaName', 'string');
384
-                $resultEntries[$i]['IssueDate'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference, 'IssueDate', 'string');
450
+                $resultEntries[$i]['noticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string');
451
+                $resultEntries[$i]['publicationMediaName'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus, 'PublicationMediaName', 'string');
452
+
453
+                if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) {
454
+                    for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) {
455
+
456
+                        $resultEntries[$i]['fechas'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j], 'IssueDate', 'string');
457
+                        if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) {
458
+                            $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');
460
+
461
+                        }
462
+                    }
463
+                }
385 464
             }
386 465
         }
466
+
387 467
         $resultFinal = $this->array_remove_empty($resultEntries);
388 468
         return $resultFinal;
389 469
     }
@@ -431,7 +511,7 @@ class ParserFile extends CI_Controller
431 511
         }
432 512
     }
433 513
 
434
-    public function RecurseXML($xml, $parent = "")
514
+    private function recurseXML($xml, $parent = "")
435 515
     {
436 516
         $child_count = 0;
437 517
         $result = array();