54 lines
2.3 KiB
PHP
54 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// CustomerSeeder — Genera clienti di esempio per lo sviluppo
|
|
//
|
|
// Usa Faker (libreria inclusa in Laravel) per generare dati realistici
|
|
// in italiano. Questi dati servono per testare l'interfaccia.
|
|
//
|
|
// ⚠️ Non eseguire in produzione! Solo per sviluppo e staging.
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
use App\Models\Customer;
|
|
use Faker\Factory as Faker;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class CustomerSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// Faker con locale italiano: nomi, città, ecc. italiani
|
|
$faker = Faker::create('it_IT');
|
|
|
|
$types = ['privato', 'azienda'];
|
|
$statuses = ['attivo', 'inattivo', 'prospect'];
|
|
$cities = ['Roma', 'Milano', 'Napoli', 'Torino', 'Bologna', 'Firenze', 'Venezia', 'Genova', 'Palermo', 'Bari'];
|
|
|
|
// Crea 30 clienti di esempio
|
|
for ($i = 0; $i < 30; $i++) {
|
|
$type = $faker->randomElement($types);
|
|
$name = $type === 'azienda'
|
|
? $faker->company()
|
|
: $faker->name();
|
|
|
|
Customer::create([
|
|
'name' => $name,
|
|
'email' => $faker->unique()->safeEmail(),
|
|
'phone' => $faker->phoneNumber(),
|
|
'city' => $faker->randomElement($cities),
|
|
'address' => $faker->streetAddress(),
|
|
'vat_number' => $type === 'azienda' ? 'IT' . $faker->numerify('###########') : null,
|
|
'fiscal_code' => $faker->numerify('??????????##??##??###?'),
|
|
'type' => $type,
|
|
'status' => $faker->randomElement($statuses),
|
|
'contract_value' => $faker->randomFloat(2, 500, 50000),
|
|
'notes' => $faker->optional(0.4)->paragraph(),
|
|
]);
|
|
}
|
|
|
|
$this->command->info('✓ 30 clienti di esempio inseriti.');
|
|
}
|
|
}
|