RVRNEXT-45 show recent events as well with upcoming events

This commit is contained in:
bence committed 2023-07-08 13:52:24 +02:00
1 parent 61eb2404a2
commit 5ebce653dc
5 files changed
+25 -16

No files matched your search

+1 -1
View File
@@ -79,7 +79,7 @@ class CommunityController implements IAuthenticationRequired
return new HtmlContent('communities/community', [
'community' => $community,
'upcomingEvents' => iterator_to_array($this->eventRepository->getUpcomingByCommunity($community, new DateTime(), 3)),
'upcomingAndRecentEvents' => iterator_to_array($this->eventRepository->getUpcomingAndRecentByCommunity($community, new DateTime(), 30, 3)),
'debtItems' => $debtItems,
'debtBalance' => $debtBalance,
'outstandingItems' => $outstandingItems,
+1 -1
View File
@@ -44,7 +44,7 @@ class HomeController implements IAuthenticationRequired
return new HtmlContent('home', [
'communities' => $communities,
'upcomingEvents' => iterator_to_array($this->eventRepository->getUpcomingByUser($user, new DateTime(), 3, true, ['community']))
'upcomingAndRecentEvents' => iterator_to_array($this->eventRepository->getUpcomingAndRecentByUser($user, new DateTime(), 30, 3, true, ['community']))
]);
}
}
+15 -6
View File
@@ -2,6 +2,7 @@
use Container;
use DateTime;
use DateInterval;
use Generator;
use RVR\PersistentData\Model\Community;
use RVR\PersistentData\Model\Event;
@@ -32,21 +33,21 @@ class EventRepository
return $this->selectAllByCommunity($community)->count();
}
public function getUpcomingByCommunity(Community $community, DateTime $from, int $limit, bool $useRelations = false, array $withRelations = []): Generator
public function getUpcomingAndRecentByCommunity(Community $community, DateTime $from, int $days, int $limit, bool $useRelations = false, array $withRelations = []): Generator
{
$select = $this->selectAllByCommunity($community);
$select->where('end', '>', $from->format('Y-m-d H:i:s'));
$select->orderBy('start', 'ASC');
$this->selectUpcomingAndRecent($select, $from, $days);
$select->orderBy('start', 'DESC');
$select->limit($limit, 0);
yield from Container::$persistentDataManager->selectMultipleFromDb($select, Event::class, $useRelations, $withRelations);
}
public function getUpcomingByUser(User $user, DateTime $from, int $limit, bool $useRelations = false, array $withRelations = []): Generator
public function getUpcomingAndRecentByUser(User $user, DateTime $from, int $days, int $limit, bool $useRelations = false, array $withRelations = []): Generator
{
$select = $this->selectAllByUser($user);
$select->where('end', '>', $from->format('Y-m-d H:i:s'));
$select->orderBy('start', 'ASC');
$this->selectUpcomingAndRecent($select, $from, $days);
$select->orderBy('start', 'DESC');
$select->limit($limit, 0);
yield from Container::$persistentDataManager->selectMultipleFromDb($select, Event::class, $useRelations, $withRelations);
@@ -86,4 +87,12 @@ class EventRepository
$select->where(['community_members', 'user_id'], '=', $user->getId());
return $select;
}
private function selectUpcomingAndRecent(Select $select, DateTime $from, int $days)
{
$select->where(function (Select $select) use ($from, $days) {
$select->where('start', '<', (clone $from)->add(DateInterval::createFromDateString("$days days"))->format('Y-m-d H:i:s'));
$select->orWhere('end', '>', (clone $from)->sub(DateInterval::createFromDateString("$days days"))->format('Y-m-d H:i:s'));
});
}
}