Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Xentral\Modules\GoogleCalendar\Service;
|
||||
|
||||
use Xentral\Components\Database\Database;
|
||||
use Xentral\Modules\GoogleCalendar\Data\GoogleCalenderSyncValue;
|
||||
|
||||
final class GoogleSyncGateway
|
||||
{
|
||||
/** @var Database $db */
|
||||
private $db;
|
||||
|
||||
/**
|
||||
* @param Database $database
|
||||
*/
|
||||
public function __construct(Database $database)
|
||||
{
|
||||
$this->db = $database;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all sync entries as key-value list.
|
||||
*
|
||||
* @return array key-value pairs ['GoogleEventId' => 'EventId']
|
||||
*/
|
||||
public function getAllSyncEntries(): array
|
||||
{
|
||||
$sql = 'SELECT s.foreign_id, s.event_id
|
||||
FROM `googleapi_calendar_sync` AS `s`
|
||||
ORDER BY s.id DESC
|
||||
LIMIT 30';
|
||||
|
||||
return $this->db->fetchPairs($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $entryId
|
||||
*
|
||||
* @return bool true = entry exists
|
||||
*/
|
||||
public function existsSyncEntry(int $entryId): bool
|
||||
{
|
||||
$sql = 'SELECT `id` FROM `googleapi_calendar_sync` WHERE `id` = :id';
|
||||
|
||||
return $entryId === $this->db->fetchValue($sql, ['id' => $entryId]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $eventId
|
||||
*
|
||||
* @return GoogleCalenderSyncValue|null
|
||||
*/
|
||||
public function tryGetSyncEntryByEvent(int $eventId): ?GoogleCalenderSyncValue
|
||||
{
|
||||
if ($eventId < 1) {
|
||||
return null;
|
||||
}
|
||||
$sql = 'SELECT s.id, s.event_id, s.foreign_id, s.owner, s.from_google, s.event_date, s.html_link
|
||||
FROM `googleapi_calendar_sync` AS `s`
|
||||
WHERE s.event_id = :event_id LIMIT 1';
|
||||
$row = $this->db->fetchRow($sql, ['event_id' => $eventId]);
|
||||
if (empty($row)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return GoogleCalenderSyncValue::fromDbState($row);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $googleId
|
||||
*
|
||||
* @return GoogleCalenderSyncValue|null
|
||||
*/
|
||||
public function tryGetSyncEntryByGoogleEvent(string $googleId): ?GoogleCalenderSyncValue
|
||||
{
|
||||
if ($googleId === '') {
|
||||
return null;
|
||||
}
|
||||
$sql = 'SELECT s.id, s.event_id, s.foreign_id,s.owner, s.from_google, s.event_date, s.html_link
|
||||
FROM `googleapi_calendar_sync` AS `s`
|
||||
WHERE s.foreign_id = :google_id LIMIT 1';
|
||||
$row = $this->db->fetchRow($sql, ['google_id' => $googleId]);
|
||||
if (empty($row)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return GoogleCalenderSyncValue::fromDbState($row);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user