Datensynchronisation; App trifft Warenwirtschaft

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.



Schreibe einen Kommentar