public function testDateAdded()
 {
     $clearingDec = $this->clearingDecisionBuilder->setTimeStamp($this->timeStamp)->build();
     assertThat($clearingDec->getTimeStamp(), is($this->timeStamp));
 }
Exemple #2
0
 /**
  * @param string $decisionsCte
  * @param string $statementName
  * @param array $params
  * @return ClearingDecision[]
  */
 private function getDecisionsFromCte($decisionsCte, $statementName, $params)
 {
     $sql = "{$decisionsCte}\n            SELECT\n              decision.*,\n              users.user_name AS user_name,\n              ce.clearing_event_pk as event_id,\n              ce.user_fk as event_user_id,\n              ce.group_fk as event_group_id,\n              lr.rf_pk AS license_id,\n              lr.rf_shortname AS shortname,\n              lr.rf_fullname AS fullname,\n              ce.removed AS removed,\n              ce.type_fk AS event_type_id,\n              ce.reportinfo AS reportinfo,\n              ce.comment AS comment\n            FROM decision\n              LEFT JOIN users ON decision.user_id = users.user_pk\n            LEFT JOIN clearing_decision_event cde ON cde.clearing_decision_fk = decision.id\n            LEFT JOIN clearing_event ce ON ce.clearing_event_pk = cde.clearing_event_fk\n            LEFT JOIN license_ref lr ON lr.rf_pk = ce.rf_fk\n            ORDER BY decision.id DESC, event_id ASC";
     $this->dbManager->prepare($statementName, $sql);
     $result = $this->dbManager->execute($statementName, $params);
     $clearingsWithLicensesArray = array();
     $previousClearingId = -1;
     $previousItemId = -1;
     $clearingEvents = array();
     $clearingEventCache = array();
     $clearingDecisionBuilder = ClearingDecisionBuilder::create();
     $firstMatch = true;
     while ($row = $this->dbManager->fetchArray($result)) {
         $clearingId = $row['id'];
         $itemId = $row['itemid'];
         $licenseId = $row['license_id'];
         $eventId = $row['event_id'];
         $licenseShortName = $row['shortname'];
         $licenseName = $row['fullname'];
         $licenseIsRemoved = $row['removed'];
         $eventType = $row['event_type_id'];
         $eventUserId = $row['event_user_id'];
         $eventGroupId = $row['event_group_id'];
         $comment = $row['comment'];
         $reportInfo = $row['reportinfo'];
         if ($clearingId !== $previousClearingId && $itemId !== $previousItemId) {
             //store the old one
             if (!$firstMatch) {
                 $clearingsWithLicensesArray[] = $clearingDecisionBuilder->setClearingEvents($clearingEvents)->build();
             }
             $firstMatch = false;
             //prepare the new one
             $previousClearingId = $clearingId;
             $previousItemId = $itemId;
             $clearingEvents = array();
             $clearingDecisionBuilder = ClearingDecisionBuilder::create()->setClearingId($row['id'])->setUploadTreeId($itemId)->setPfileId($row['pfile_id'])->setUserName($row['user_name'])->setUserId($row['user_id'])->setType(intval($row['type_id']))->setScope(intval($row['scope']))->setTimeStamp($row['ts_added']);
         }
         if ($licenseId !== null) {
             if (!array_key_exists($eventId, $clearingEventCache)) {
                 if (!array_key_exists($licenseId, $this->licenseRefCache)) {
                     $this->licenseRefCache[$licenseId] = new LicenseRef($licenseId, $licenseShortName, $licenseName);
                 }
                 $licenseRef = $this->licenseRefCache[$licenseId];
                 $clearingEventCache[$eventId] = $this->buildClearingEvent($eventId, $eventUserId, $eventGroupId, $licenseRef, $licenseIsRemoved, $eventType, $reportInfo, $comment);
             }
             $clearingEvents[] = $clearingEventCache[$eventId];
         }
     }
     //! Add the last match
     if (!$firstMatch) {
         $clearingsWithLicensesArray[] = $clearingDecisionBuilder->setClearingEvents($clearingEvents)->build();
     }
     $this->dbManager->freeResult($result);
     return $clearingsWithLicensesArray;
 }