Für die Synchronisation unserer Kostenträger, auf die wir in der App die Stunden buchen, müssen die aktuellen Kostenträger aus PDS in unsere App Datenbank synchronisiert werden.
Hierfür wird eine Funktion „ConnectDb“ geschrieben, welche auf die PDS Postgres Datenbank zugriff gewährt
Public Function ConnectDb()
{
try {
// DB Connection
$dbuser = 'pdserpbi';
$dbpass = '*******';
$host = '192.168.*.*';
$dbname = 'pdserp';
$dbh = new \PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
return $dbh;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
Mithilfe dieser Funktion werden dann die Daten aus der PDS Datenbank ausgelesen
Public Function CreateOrUpdateProject()
{
$dbh = $this->ConnectDb();
// Isert or Update department
foreach ($dbh->query('SELECT * from finkp_kstktr') as $row) {
$projectRecord = $this->projectRepository->findOneByProjectId($row['nummer']);
if(is_null($projectRecord)){
/** @var \WM\PdsConnect\Domain\Model\Project $projectRecord*/
$projectRecord= $this->objectManager->get('WM\\PdsConnect\\Domain\\Model\\Project');
$projectRecord->setProjectId($row['nummer']);
$projectRecord->setProjectName($row['name']);
$projectRecord->setClientId($row['partition_id']);
$this->projectRepository->add($projectRecord);
$this->persistenceManager->persistAll();
}
else {
if($row['isgeloescht'] == 'true'){
$this->projectRepository->remove($projectRecord);
$this->persistenceManager->persistAll();
}
else{
$projectRecord->setProjectId($row['nummer']);
$projectRecord->setProjectName($row['name']);
$projectRecord->setClientId($row['partition_id']);
$this->projectRepository->update($projectRecord);
$this->persistenceManager->persistAll();
}
}
}
$dbh = null;
}
Somit sind alle Kostenträger in der App verfügbar und können genutzt werden.