public function testDateAdded() { $clearingDec = $this->clearingDecisionBuilder->setTimeStamp($this->timeStamp)->build(); assertThat($clearingDec->getTimeStamp(), is($this->timeStamp)); }
/** * @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; }