Download the PHP package andydefer/laravel-reports without Composer
On this page you can find all versions of the php package andydefer/laravel-reports. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andydefer/laravel-reports
More information about andydefer/laravel-reports
Files in andydefer/laravel-reports
Package laravel-reports
Short Description Package Laravel de signalement polymorphique avec pattern Repository, DTOs, Enums et Value Objects.
License MIT
Informations about the package laravel-reports
Laravel Reports
Système de signalement polymorphique pour applications Laravel avec pattern Repository, DTOs, Enums et Value Objects
📋 Table des matières
- Fonctionnalités
- Prérequis
- Installation
- Configuration
- Utilisation
- Créer vos énumérations
- Configurer les enum casts
- Créer un signalement
- Vérifier un signalement
- Récupérer les signalements
- Mettre à jour un signalement
- Compter les signalements
- Filtrer par date
- Référence de l'API
- Value Objects
- Structure de la base de données
- Tests
- Contribuer
- Licence
✨ Fonctionnalités
- ✅ Double polymorphisme - Signalez n'importe quel contenu avec n'importe quel utilisateur
- ✅ Énumérations personnalisables - Types et statuts de signalement entièrement configurables
- ✅ Pattern Repository - Séparation propre de la logique d'accès aux données
- ✅ Support des DTOs - Objets de transfert de données typés
- ✅ Value Objects - DateTime, Métadonnées
- ✅ Support des métadonnées - Stockez des données supplémentaires au format JSON
- ✅ Enum Casts - Conversion automatique entre base de données et énumérations PHP
- ✅ Suppression douce - Suppression sécurisée avec possibilité de restauration
- ✅ Filtrage avancé - Filtrez par type, statut, auteur, objet signalé
- ✅ Tests complets - Couverture complète des tests d'intégration
🚀 Prérequis
- PHP 8.2 ou supérieur
- Laravel 12.0, 13.0, 14.0 ou 15.0
📦 Installation
Installez le package via Composer :
Publier les migrations
Exécuter les migrations
⚙️ Configuration
Service Provider
Le package est automatiquement découvert par Laravel. Aucune configuration supplémentaire n'est requise.
Si vous devez personnaliser le Service Provider, ajoutez-le manuellement dans config/app.php :
Configuration des Enum Casts
Le package utilise le système d'EnumCast du package andydefer/laravel-repository pour convertir automatiquement les valeurs en énumérations PHP.
Créez ou modifiez le fichier config/repository.php :
⚠️ Important :
- Sans cette configuration, les énumérations ne seront pas automatiquement converties
- L'énumération DOIT implémenter l'interface
AndyDefer\Repository\Contracts\EnumerableInterface- La méthode
getValue()est obligatoire pour l'interface
📖 Utilisation
Créer vos énumérations
⚠️ OBLIGATOIRE : Vos énumérations DOIVENT implémenter l'interface
EnumerableInterface
Configurer les enum casts
Créer un signalement
Vérifier un signalement
Récupérer les signalements
Mettre à jour un signalement
Compter les signalements
Filtrer par date
📚 Référence de l'API
ReportService
| Méthode | Description | Retourne |
|---|---|---|
report(Model $reporter, Model $reportable, EnumerableInterface $type, EnumerableInterface $status, string $reason, ?StrictDataObject $metadata = null) |
Crée un signalement | Model |
hasReported(Model $reporter, Model $reportable) |
Vérifie si l'utilisateur a déjà signalé | bool |
getReportsFor(Model $reportable, bool $onlyPending = false) |
Récupère les signalements d'un objet | Collection |
getReportsBy(Model $reporter) |
Récupère les signalements d'un utilisateur | Collection |
getPendingReports() |
Récupère tous les signalements en attente | Collection |
getReportsByStatus(EnumerableInterface $status) |
Récupère les signalements par statut | Collection |
getReportsByType(EnumerableInterface $type) |
Récupère les signalements par type | Collection |
getReportsUpdatedAfter(DateTimeVO $date) |
Récupère les signalements après une date | Collection |
find(int $id) |
Trouve un signalement par ID | ?Model |
updateStatus(int $id, EnumerableInterface $status) |
Met à jour le statut | Model |
updateType(int $id, EnumerableInterface $type) |
Met à jour le type | Model |
countReports(Model $reportable, bool $onlyPending = false) |
Compte les signalements d'un objet | int |
countByStatus(EnumerableInterface $status) |
Compte par statut | int |
countByType(EnumerableInterface $type) |
Compte par type | int |
delete(int $id) |
Supprime un signalement | void |
🎯 Value Objects
Le package supporte les Value Objects suivants :
| Value Object | Description | Exemple |
|---|---|---|
DateTimeVO |
Date/heure | DateTimeVO::from('2024-01-01 12:00:00') |
StrictDataObject |
Métadonnées typées | StrictDataObject::from(['key' => 'value']) |
Accesseurs dans le modèle Report
📝 Structure de la base de données
🔍 Exemple complet
🧪 Tests
Exécuter les tests
Exécuter uniquement les tests unitaires
Exécuter uniquement les tests d'intégration
Configuration des tests
Le package utilise orchestra/testbench pour les tests d'intégration avec une base de données SQLite en mémoire.
🔧 Développement
Style de code
Analyse statique
🤝 Contribuer
- Fork le repository
- Créer une branche (
git checkout -b feature/amazing-feature) - Commiter les changements (
git commit -m 'feat: add amazing feature') - Pusher (
git push origin feature/amazing-feature) - Ouvrir une Pull Request
📦 Dépendances
andydefer/laravel-repository- Implémentation du pattern Repository avec Enum Castsandydefer/php-vo- Value Objectsandydefer/domain-structures- Structures de domaine (StrictDataObject)
👨💻 Auteur
Andy Kani
- GitHub: @andydefer
- Email: [email protected]
📄 Licence
MIT © Andy Defer
Construit avec ❤️ pour la communauté Laravel
All versions of laravel-reports with dependencies
laravel/framework Version ^12.0|^13.0|^14.0|^15.0
andydefer/laravel-rattachments Version ^0.12.24