feat(LRL App): init V0

This commit is contained in:
2025-10-22 17:09:48 +02:00
parent d3303fee95
commit 0924da3cda
475 changed files with 44862 additions and 7 deletions

View File

@@ -0,0 +1,168 @@
<?php
namespace Database\Seeders;
use App\Models\MemberGroup;
use App\Models\Service;
use App\Models\User;
use App\Models\Package;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// Admin account
User::updateOrCreate([
'name' => 'SuperAdmin',
],
[
'email' => 'contact@nebulae-design.com',
'email_verified_at' => now(),
'password' => bcrypt('password'),
]);
// Member groups
$adminGroup = MemberGroup::updateOrCreate([
'name' => 'Admin Interface',
], [
'identifier' => 'admin-interface',
'description' => 'Groupe d\'utilisateurs créés par les administrateurs du site.',
]);
$websiteGroup = MemberGroup::updateOrCreate([
'name' => 'Site Web'
],
[
'identifier' => 'website',
'description' => 'Groupe d\'utilisateurs provenant du site web.'
]);
// Subscription packages
$packages = [
[
'identifier' => 'custom',
'name' => 'Sur-mesure',
'description' => 'Calcul du nombre de mois restant dans l\'année',
],
[
'identifier' => 'one-year',
'name' => 'Un an',
'description' => '12 mois à compter de la date de validation de l\'adhésion du membre',
],
[
'identifier' => 'two-years',
'name' => 'Deux ans',
'description' => '24 mois à compter de la date de validation de l\'adhésion du membre',
]
];
foreach ($packages as $package) {
Package::updateOrCreate([
'identifier' => $package['identifier'],
], [
'name' => $package['name'],
'description' => $package['description'],
'is_active' => true,
]);
}
// Services
$services = [
[
'identifier' => 'mail',
'name' => 'Mail RoundCube',
'description' => 'Service de messagerie',
'url' => '#',
'icon' => 'fa-solid fa-envelope',
],
[
'identifier' => 'file2link',
'name' => 'File2Link',
'description' => 'Service de partage de fichiers',
'url' => '#',
'icon' => 'fa-solid fa-file-arrow-up',
],
[
'identifier' => 'nextcloud',
'name' => 'Nextcloud',
'description' => 'Service de stockage de fichiers',
'url' => '#',
'icon' => 'fa-solid fa-cloud',
],
[
'identifier' => 'sympa',
'name' => 'Sympa',
'description' => 'Service de gestion de listes de diffusion',
'url' => '#',
'icon' => 'fa-solid fa-envelope-open-text',
],
[
'identifier' => 'webhosting',
'name' => 'Hébergement web',
'description' => 'Service d\'hébergement web',
'url' => '#',
'icon' => 'fa-solid fa-server',
]
];
foreach ($services as $service) {
Service::updateOrCreate([
'identifier' => $service['identifier'],
], [
'name' => $service['name'],
'description' => $service['description'],
'url' => $service['url'],
'icon' => $service['icon'],
]);
}
// JaneDoe
$userTest = User::updateOrCreate([
'name' => 'JaneDoe',
],
[
'email' => 'jane@doe.com',
'email_verified_at' => null,
'password' => bcrypt('password'),
]);
$memberTest = $userTest->members()->updateOrCreate([
'user_id' => $userTest->id,
], [
'status' => 'valid',
'nature' => 'physical',
'group_id' => $websiteGroup->id,
'lastname' => 'Doe',
'firstname' => 'Jane',
'email' => 'jane@doe.com',
'company' => 'Nebulae Design',
'date_of_birth' => '1990-01-06',
'address' => '123 Rue du Test',
'zipcode' => '49000',
'city' => 'Saumur',
'country' => 'FR',
'phone1' => '0123456789',
'phone2' => '0123456789',
'public_membership' => false,
]);
$membershipTest = $memberTest->memberships()->updateOrCreate([
'member_id' => $memberTest->id,
], [
'admin_id' => '1',
'package_id' => Package::where('identifier', 'one-year')->first()->id,
'start_date' => '2025-01-01',
'end_date' => '2025-12-31',
'status' => 'active',
'amount' => 12.00,
'payment_status' => 'paid',
]);
}
}