Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d2cf9c6f0
|
||
|
|
ca069d0795
|
||
|
|
17d9437a50
|
||
|
|
aed4548c7b
|
||
|
|
0d6d152b82
|
||
|
|
7beec510a1
|
||
|
|
22b849a1c8
|
||
|
|
492aa9fcef
|
No files matched your search
@@ -0,0 +1,70 @@
|
|||||||
|
<?php namespace RVR\Controller;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
use Container;
|
||||||
|
use RVR\PersistentData\Model\Event;
|
||||||
|
use RVR\PersistentData\Model\User;
|
||||||
|
use RVR\Repository\EventRepository;
|
||||||
|
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
|
||||||
|
use SokoWeb\Interfaces\Response\IRedirect;
|
||||||
|
use SokoWeb\Response\HtmlContent;
|
||||||
|
use SokoWeb\Response\Redirect;
|
||||||
|
|
||||||
|
class EventRedirectController implements IAuthenticationRequired
|
||||||
|
{
|
||||||
|
private EventRepository $eventRepository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->eventRepository = new EventRepository();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isAuthenticationRequired(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEvent()
|
||||||
|
{
|
||||||
|
$currentEvent = $this->getCurrentEvent();
|
||||||
|
if ($currentEvent === null) {
|
||||||
|
return new HtmlContent('event_redirect/no_event');
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Redirect(
|
||||||
|
\Container::$routeCollection->getRoute('community.event')
|
||||||
|
->generateLink([
|
||||||
|
'communitySlug' => $currentEvent->getCommunity()->getSlug(),
|
||||||
|
'eventSlug' => $currentEvent->getSlug()
|
||||||
|
]),
|
||||||
|
IRedirect::TEMPORARY
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEventNewTransaction()
|
||||||
|
{
|
||||||
|
$currentEvent = $this->getCurrentEvent();
|
||||||
|
if ($currentEvent === null) {
|
||||||
|
return new HtmlContent('event_redirect/no_event');
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Redirect(
|
||||||
|
\Container::$routeCollection->getRoute('community.transactions.new')
|
||||||
|
->generateLink([
|
||||||
|
'communitySlug' => $currentEvent->getCommunity()->getSlug(),
|
||||||
|
'event' => $currentEvent->getSlug()
|
||||||
|
]),
|
||||||
|
IRedirect::TEMPORARY
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getCurrentEvent(): ?Event
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var User $user
|
||||||
|
*/
|
||||||
|
$user = Container::$request->user();
|
||||||
|
|
||||||
|
return $this->eventRepository->getCurrentByUser($user, new DateTime(), 30, true, ['community']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -53,6 +53,16 @@ class EventRepository
|
|||||||
yield from Container::$persistentDataManager->selectMultipleFromDb($select, Event::class, $useRelations, $withRelations);
|
yield from Container::$persistentDataManager->selectMultipleFromDb($select, Event::class, $useRelations, $withRelations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCurrentByUser(User $user, DateTime $from, int $days, bool $useRelations = false, array $withRelations = []): ?Event
|
||||||
|
{
|
||||||
|
$select = $this->selectAllByUser($user);
|
||||||
|
$this->selectUpcomingAndRecent($select, $from, $days);
|
||||||
|
$select->orderBy('start', 'DESC');
|
||||||
|
$select->limit(1, 0);
|
||||||
|
|
||||||
|
return Container::$persistentDataManager->selectFromDb($select, Event::class, $useRelations, $withRelations);
|
||||||
|
}
|
||||||
|
|
||||||
public function getPagedByCommunity(Community $community, int $page, int $itemsPerPage, bool $useRelations = false, array $withRelations = []): Generator
|
public function getPagedByCommunity(Community $community, int $page, int $itemsPerPage, bool $useRelations = false, array $withRelations = []): Generator
|
||||||
{
|
{
|
||||||
$select = $this->selectAllByCommunity($community);
|
$select = $this->selectAllByCommunity($community);
|
||||||
@@ -92,7 +102,11 @@ class EventRepository
|
|||||||
{
|
{
|
||||||
$select->where(function (Select $select) use ($from, $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->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'));
|
$select->where('end', '>', $from->format('Y-m-d H:i:s'));
|
||||||
|
});
|
||||||
|
$select->orWhere(function (Select $select) use ($from, $days) {
|
||||||
|
$select->where('end', '>', (clone $from)->sub(DateInterval::createFromDateString("$days days"))->format('Y-m-d H:i:s'));
|
||||||
|
$select->where('start', '<', $from->format('Y-m-d H:i:s'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,7 +36,12 @@
|
|||||||
<select class="big fullWidth" name="payer_user_id" required>
|
<select class="big fullWidth" name="payer_user_id" required>
|
||||||
<option value="" hidden></option>
|
<option value="" hidden></option>
|
||||||
<?php foreach ($members as $member): ?>
|
<?php foreach ($members as $member): ?>
|
||||||
<option value="<?= $member->getUser()->getId() ?>" <?= isset($transaction) && $transaction->getPayerUserId() === $member->getUser()->getId() ? 'selected' : '' ?>><?= $member->getUser()->getDisplayName() ?></option>
|
<option value="<?= $member->getUser()->getId() ?>"
|
||||||
|
<?= isset($transaction) ?
|
||||||
|
($transaction->getPayerUserId() === $member->getUser()->getId() ? 'selected' : '') :
|
||||||
|
(Container::$request->user()->getUniqueId() == $member->getUser()->getId() ? 'selected' : '') ?>>
|
||||||
|
<?= $member->getUser()->getDisplayName() ?>
|
||||||
|
</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<p class="formLabel marginTop">Payee(s)</p>
|
<p class="formLabel marginTop">Payee(s)</p>
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
@extends(templates/layout_normal)
|
||||||
|
|
||||||
|
@section(main)
|
||||||
|
<h2>No event found</h2>
|
||||||
|
<div class="box compactBox">
|
||||||
|
<p class="error justify">No upcoming or recent event was found. <a href="<?= Container::$routeCollection->getRoute('home')->generateLink() ?>" title="<?= $_ENV['APP_NAME'] ?>">Back to start.</a></p>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
@@ -13,6 +13,7 @@ use RVR\Controller\UserController;
|
|||||||
use RVR\Controller\UserSearchController;
|
use RVR\Controller\UserSearchController;
|
||||||
use RVR\Controller\CommunityController;
|
use RVR\Controller\CommunityController;
|
||||||
use RVR\Controller\TransactionController;
|
use RVR\Controller\TransactionController;
|
||||||
|
use RVR\Controller\EventRedirectController;
|
||||||
use RVR\Controller\EventController;
|
use RVR\Controller\EventController;
|
||||||
use RVR\Repository\UserRepository;
|
use RVR\Repository\UserRepository;
|
||||||
|
|
||||||
@@ -62,6 +63,10 @@ Container::$routeCollection->group('account', function (RouteCollection $routeCo
|
|||||||
$routeCollection->get('account.googleAuthenticate-action', 'googleAuthenticate/code', [UserController::class, 'authenticateWithGoogle']);
|
$routeCollection->get('account.googleAuthenticate-action', 'googleAuthenticate/code', [UserController::class, 'authenticateWithGoogle']);
|
||||||
});
|
});
|
||||||
Container::$routeCollection->get('searchUser', 'searchUser', [UserSearchController::class, 'searchUser']);
|
Container::$routeCollection->get('searchUser', 'searchUser', [UserSearchController::class, 'searchUser']);
|
||||||
|
Container::$routeCollection->group('now', function (RouteCollection $routeCollection) {
|
||||||
|
$routeCollection->get('now.event', '', [EventRedirectController::class, 'getEvent']);
|
||||||
|
$routeCollection->get('now.transactions.new', 'transaction', [EventRedirectController::class, 'getEventNewTransaction']);
|
||||||
|
});
|
||||||
Container::$routeCollection->group('communities', function (RouteCollection $routeCollection) {
|
Container::$routeCollection->group('communities', function (RouteCollection $routeCollection) {
|
||||||
$routeCollection->get('community.new', 'new', [CommunityController::class, 'getCommunityNew']);
|
$routeCollection->get('community.new', 'new', [CommunityController::class, 'getCommunityNew']);
|
||||||
$routeCollection->post('community.new-action', 'new', [CommunityController::class, 'saveCommunity']);
|
$routeCollection->post('community.new-action', 'new', [CommunityController::class, 'saveCommunity']);
|
||||||
|
|||||||
Reference in new issue
Block a user