Skip to content

Commit

Permalink
Admin Dashboard (#23)
Browse files Browse the repository at this point in the history
* [task-72] Init admin overview

* [task-72] Progress

* [task-72] Translations & tests

---------

Co-authored-by: Konrad Sroga <konradsroga@gmail.com>
  • Loading branch information
pteroca-com and ksroga authored Nov 19, 2024
1 parent 4f8d4f3 commit 3bfa2c9
Show file tree
Hide file tree
Showing 20 changed files with 637 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Core/Controller/Panel/DashboardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public function configureMenuItems(): iterable

if ($this->isGranted(UserRoleEnum::ROLE_ADMIN->name)) {
yield MenuItem::section($this->translator->trans('pteroca.crud.menu.administration'));
yield MenuItem::linkToRoute($this->translator->trans('pteroca.crud.menu.overview'), 'fa fa-gauge', 'admin_overview');
yield MenuItem::linkToCrud($this->translator->trans('pteroca.crud.menu.categories'), 'fa fa-list', Category::class);
yield MenuItem::linkToCrud($this->translator->trans('pteroca.crud.menu.products'), 'fa fa-sliders-h', Product::class);
yield MenuItem::linkToCrud($this->translator->trans('pteroca.crud.menu.payments'), 'fa fa-money', Payment::class);
Expand Down
27 changes: 27 additions & 0 deletions src/Core/Controller/Panel/OverviewController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace App\Core\Controller\Panel;

use App\Core\Controller\AbstractController;
use App\Core\Enum\UserRoleEnum;
use App\Core\Service\Statistics\AdminStatisticsService;
use App\Core\Service\System\SystemInformationService;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class OverviewController extends AbstractController
{
#[Route('/admin/overview', name: 'admin_overview')]
public function index(
SystemInformationService $systemInformationService,
AdminStatisticsService $adminStatisticsService,
): Response
{
$this->checkPermission(UserRoleEnum::ROLE_ADMIN->name);

return $this->render('panel/admin/overview.html.twig', [
'systemInformation' => $systemInformationService->getSystemInformation(),
'statistics' => $adminStatisticsService->getAdminStatistics(),
]);
}
}
19 changes: 19 additions & 0 deletions src/Core/Repository/PaymentRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,23 @@ public function save(Payment $payment): void
$this->getEntityManager()->persist($payment);
$this->getEntityManager()->flush();
}

public function getPaymentsCreatedAfterCount(\DateTime $date): int
{
return $this->createQueryBuilder('p')
->select('COUNT(p.id)')
->where('p.createdAt > :date')
->setParameter('date', $date)
->getQuery()
->getSingleScalarResult();
}

public function getLastPayments(int $limit): array
{
return $this->createQueryBuilder('p')
->orderBy('p.createdAt', 'DESC')
->setMaxResults($limit)
->getQuery()
->getResult();
}
}
9 changes: 9 additions & 0 deletions src/Core/Repository/ServerRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,13 @@ public function getServersExpiredBefore(\DateTime $expiresBefore): array
->getQuery()
->getResult();
}

public function getActiveServersCount(): int
{
return $this->createQueryBuilder('s')
->select('COUNT(s.id)')
->where('s.isSuspended = false')
->getQuery()
->getSingleScalarResult();
}
}
19 changes: 19 additions & 0 deletions src/Core/Repository/UserRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,23 @@ public function save(User $user): void
$this->getEntityManager()->persist($user);
$this->getEntityManager()->flush();
}

public function getUsersRegisteredAfterCount(\DateTime $date): int
{
return $this->createQueryBuilder('u')
->select('COUNT(u.id)')
->where('u.createdAt > :date')
->setParameter('date', $date)
->getQuery()
->getSingleScalarResult();
}

public function getLastRegisteredUsers(int $limit): array
{
return $this->createQueryBuilder('u')
->orderBy('u.createdAt', 'DESC')
->setMaxResults($limit)
->getQuery()
->getResult();
}
}
4 changes: 4 additions & 0 deletions src/Core/Resources/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@ services:

App\Core\Twig\AppExtension:
tags: [ 'twig.extension' ]

App\Core\Service\System\SystemInformationService:
arguments:
$entityManager: '@doctrine.orm.entity_manager'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.cn.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: '支付'
logs: '日志'
overview: '概览'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: '服务器暂停'
server_suspended: '我们通知您,您的一个服务器已被暂停,因为它未续订。'
extend_server: '要恢复服务器,请在客户面板中续订它。'

admin:
overview:
title: '管理员概览'
servers: '活跃服务器'
users: '注册用户'
payments: '支付'
last_30_days: '过去30天'
now: '现在'
links: '重要链接'
system: '系统信息'
payment_overview: '支付概览'
view_all: '查看全部'
last_registered_users: '最新注册用户'
user: '用户'
amount: '金额'
currency: '货币'
status: '状态'
date: '日期'
no_payments: '您的系统尚未收到任何支付。'
balance: '余额'
verified: '已验证'
unverified: '未验证'
project_site: '项目网站'
documentation: '文档'
support: '支持'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Zahlungen'
logs: 'Logs'
overview: 'Übersicht'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Serversperrung'
server_suspended: 'Wir informieren Sie, dass einer Ihrer Server gesperrt wurde, da er nicht verlängert wurde.'
extend_server: 'Um den Server wiederherzustellen, verlängern Sie ihn im Kundenbereich.'

admin:
overview:
title: 'Admin Übersicht'
servers: 'Aktive Server'
users: 'Registrierte Benutzer'
payments: 'Zahlungen'
last_30_days: 'Letzte 30 Tage'
now: 'Jetzt'
links: 'Wichtige Links'
system: 'Systeminformationen'
payment_overview: 'Zahlungsübersicht'
view_all: 'Alle anzeigen'
last_registered_users: 'Zuletzt registrierte Benutzer'
user: 'Benutzer'
amount: 'Betrag'
currency: 'Währung'
status: 'Status'
date: 'Datum'
no_payments: 'Ihr System hat bisher keine Zahlungen erhalten.'
balance: 'Kontostand'
verified: 'Verifiziert'
unverified: 'Nicht verifiziert'
project_site: 'Projektseite'
documentation: 'Dokumentation'
support: 'Support'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Payments'
logs: 'Logs'
overview: 'Overview'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Server Suspension'
server_suspended: 'We inform you that one of your servers has been suspended because it has not been renewed.'
extend_server: 'To restore the server, renew it in the client panel.'

admin:
overview:
title: 'Admin Overview'
servers: 'Active Servers'
users: 'Registered Users'
payments: 'Payments'
last_30_days: 'Last 30 days'
now: 'Now'
links: 'Important links'
system: 'System Information'
payment_overview: 'Payment Overview'
view_all: 'View all'
last_registered_users: 'Last registered users'
user: 'User'
amount: 'Amount'
currency: 'Currency'
status: 'Status'
date: 'Date'
no_payments: 'Your system has not received any payments yet.'
balance: 'Balance'
verified: 'Verified'
unverified: 'Unverified'
project_site: 'Project site'
documentation: 'Documentation'
support: 'Support'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.es.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Pagos'
logs: 'Registros'
overview: 'Resumen'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Suspensión del servidor'
server_suspended: 'Te informamos que uno de tus servidores ha sido suspendido porque no fue renovado.'
extend_server: 'Para restaurar el servidor, renueva tu suscripción en el panel de cliente.'

admin:
overview:
title: 'Resumen de Administración'
servers: 'Servidores Activos'
users: 'Usuarios Registrados'
payments: 'Pagos'
last_30_days: 'Últimos 30 días'
now: 'Ahora'
links: 'Enlaces Importantes'
system: 'Información del Sistema'
payment_overview: 'Resumen de Pagos'
view_all: 'Ver todo'
last_registered_users: 'Últimos usuarios registrados'
user: 'Usuario'
amount: 'Cantidad'
currency: 'Moneda'
status: 'Estado'
date: 'Fecha'
no_payments: 'Tu sistema no ha recibido ningún pago aún.'
balance: 'Saldo'
verified: 'Verificado'
unverified: 'No Verificado'
project_site: 'Sitio del proyecto'
documentation: 'Documentación'
support: 'Soporte'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Paiements'
logs: 'Journaux'
overview: 'Vue d’ensemble'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Suspension de serveur'
server_suspended: 'Nous vous informons qu’un de vos serveurs a été suspendu, car il n’a pas été renouvelé.'
extend_server: 'Pour restaurer le serveur, prolongez-le depuis le panneau client.'

admin:
overview:
title: 'Vue d’ensemble Admin'
servers: 'Serveurs Actifs'
users: 'Utilisateurs Enregistrés'
payments: 'Paiements'
last_30_days: '30 derniers jours'
now: 'Maintenant'
links: 'Liens Importants'
system: 'Informations Système'
payment_overview: 'Vue d’ensemble des Paiements'
view_all: 'Voir tout'
last_registered_users: 'Derniers utilisateurs enregistrés'
user: 'Utilisateur'
amount: 'Montant'
currency: 'Devise'
status: 'Statut'
date: 'Date'
no_payments: 'Votre système n’a encore reçu aucun paiement.'
balance: 'Solde'
verified: 'Vérifié'
unverified: 'Non Vérifié'
project_site: 'Site du projet'
documentation: 'Documentation'
support: 'Support'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.it.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Pagamenti'
logs: 'Registri'
overview: 'Panoramica'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Sospensione server'
server_suspended: 'Ti informiamo che uno dei tuoi server è stato sospeso perché non è stato rinnovato.'
extend_server: 'Per ripristinare il server, rinnova nel pannello clienti.'

admin:
overview:
title: 'Panoramica Amministratore'
servers: 'Server Attivi'
users: 'Utenti Registrati'
payments: 'Pagamenti'
last_30_days: 'Ultimi 30 giorni'
now: 'Adesso'
links: 'Link Importanti'
system: 'Informazioni di Sistema'
payment_overview: 'Panoramica dei Pagamenti'
view_all: 'Vedi tutto'
last_registered_users: 'Ultimi utenti registrati'
user: 'Utente'
amount: 'Importo'
currency: 'Valuta'
status: 'Stato'
date: 'Data'
no_payments: 'Il tuo sistema non ha ancora ricevuto alcun pagamento.'
balance: 'Saldo'
verified: 'Verificato'
unverified: 'Non verificato'
project_site: 'Sito del progetto'
documentation: 'Documentazione'
support: 'Supporto'
27 changes: 27 additions & 0 deletions src/Core/Resources/translations/messages.pl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ pteroca:
phpmyadmin: 'PHPMyAdmin'
payments: 'Płatności'
logs: 'Logi'
overview: 'Przegląd'

api:
servers:
Expand Down Expand Up @@ -347,3 +348,29 @@ pteroca:
subject: 'Zawieszenie serwera'
server_suspended: 'Informujemy, że jeden z Twoich serwer został zawieszony, ponieważ nie został przedłużony.'
extend_server: 'Aby przywrócić serwer, przedłuż go w panelu klienta.'

admin:
overview:
title: 'Przegląd Administracyjny'
servers: 'Aktywne Serwery'
users: 'Zarejestrowani Użytkownicy'
payments: 'Płatności'
last_30_days: 'Ostatnie 30 dni'
now: 'Teraz'
links: 'Ważne Linki'
system: 'Informacje o Systemie'
payment_overview: 'Przegląd Płatności'
view_all: 'Zobacz wszystko'
last_registered_users: 'Ostatnio zarejestrowani użytkownicy'
user: 'Użytkownik'
amount: 'Kwota'
currency: 'Waluta'
status: 'Status'
date: 'Data'
no_payments: 'Twój system nie otrzymał jeszcze żadnych płatności.'
balance: 'Saldo'
verified: 'Zweryfikowany'
unverified: 'Niezweryfikowany'
project_site: 'Strona projektu'
documentation: 'Dokumentacja'
support: 'Wsparcie'
Loading

0 comments on commit 3bfa2c9

Please sign in to comment.