'free'], [ 'name' => 'Free', 'price_monthly' => 0, 'currency' => 'MDL', 'features' => ['core'], 'limits' => ['max_users' => 2, 'max_vehicles' => 50], ]); Plan::firstOrCreate(['slug' => 'basic'], [ 'name' => 'Basic', 'price_monthly' => 299, 'currency' => 'MDL', 'features' => ['core', 'workorders', 'kanban'], 'limits' => ['max_users' => 5, 'max_vehicles' => 500], ]); Plan::firstOrCreate(['slug' => 'pro'], [ 'name' => 'Pro', 'price_monthly' => 599, 'currency' => 'MDL', 'features' => ['core', 'workorders', 'kanban', 'reports', 'ai', 'api'], 'limits' => ['max_users' => -1, 'max_vehicles' => -1], ]); // ─── Super-admin (operator platformă) ───────────────────── SuperAdmin::firstOrCreate(['email' => 'vasyka.moraru@gmail.com'], [ 'name' => 'Vasyka', 'password' => Hash::make('admin123'), 'is_active' => true, ]); // ─── PSauto demo company ────────────────────────────────── $psauto = Company::firstOrCreate(['slug' => 'psauto'], [ 'name' => 'PSauto SRL', 'display_name' => 'PSauto', 'city' => 'Chișinău', 'phone' => '+373 22 123 456', 'email' => 'contact@psauto.md', 'contact_name' => 'Manager PSauto', 'status' => 'active', 'plan_id' => $free->id, 'active_until' => now()->addYear(), 'settings' => [ 'currency' => 'MDL', 'language' => 'ro', 'theme_color' => '#3B82F6', 'labor_rate' => 400, 'posts' => ['Post 1', 'Post 2', 'Post 3'], ], ]); // Activate tenant context for the seeded data so global scopes auto-fill company_id. app(TenantManager::class)->setCurrent($psauto); app(PermissionRegistrar::class)->setPermissionsTeamId($psauto->id); // ─── Roles default per tenant ───────────────────────────── $roleNames = ['admin', 'manager', 'receptionist', 'mechanic', 'parts_manager', 'accountant', 'marketer']; foreach ($roleNames as $name) { Role::findOrCreate($name, 'web'); } // ─── Admin user pentru PSauto ───────────────────────────── $admin = User::firstOrCreate( ['company_id' => $psauto->id, 'email' => 'admin@psauto.md'], [ 'name' => 'Administrator PSauto', 'password' => Hash::make('admin123'), 'role' => 'admin', 'status' => 'active', 'phone' => '+373 22 123 456', 'locale' => 'ro', 'email_verified_at' => now(), ] ); $admin->syncRoles(['admin']); // ─── Clienți demo (din AutoCRM.html) ────────────────────── $c1 = Client::firstOrCreate( ['company_id' => $psauto->id, 'phone' => '+373 69 100001'], [ 'type' => 'individual', 'name' => 'Ion Popescu', 'email' => 'ion@mail.com', 'status' => 'vip', 'source' => 'recommend', ] ); $c2 = Client::firstOrCreate( ['company_id' => $psauto->id, 'phone' => '+373 79 200002'], [ 'type' => 'individual', 'name' => 'Maria Dumitru', 'status' => 'active', 'discount_pct' => 5, 'source' => 'site', ] ); $c3 = Client::firstOrCreate( ['company_id' => $psauto->id, 'phone' => '+373 60 300003'], [ 'type' => 'individual', 'name' => 'Andrei Lupu', 'status' => 'active', 'discount_pct' => 10, 'notes' => 'Doar piese originale', 'source' => 'instagram', ] ); // ─── Mașini demo ────────────────────────────────────────── $v1 = Vehicle::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c1->id, 'make' => 'BMW', 'model' => 'X5'], ['year' => 2020, 'plate' => 'CIU 001', 'engine' => '3.0i', 'gearbox' => 'Automat 8AT', 'fuel' => 'Benzină', 'mileage' => 85000, 'color' => 'Alb'] ); $v2 = Vehicle::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c2->id, 'make' => 'Audi', 'model' => 'A4'], ['year' => 2019, 'plate' => 'CIU 002', 'engine' => '2.0 TDI', 'gearbox' => 'DSG7', 'fuel' => 'Diesel', 'mileage' => 45000, 'color' => 'Negru'] ); $v3 = Vehicle::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c3->id, 'make' => 'Porsche', 'model' => 'Cayenne'], ['year' => 2021, 'plate' => 'CIU 003', 'engine' => '3.0 TDI', 'gearbox' => 'Tiptronic', 'fuel' => 'Diesel', 'mileage' => 22000, 'color' => 'Gri'] ); // ─── Posturi (boxe) ─────────────────────────────────────── foreach ([['Pod 1', '#3B82F6'], ['Pod 2', '#E24B4A'], ['Pod 3', '#10B981']] as $i => [$name, $color]) { Post::firstOrCreate( ['company_id' => $psauto->id, 'name' => $name], ['color' => $color, 'is_active' => true, 'sort_order' => $i + 1] ); } // ─── Lead-uri demo ──────────────────────────────────────── Lead::firstOrCreate( ['company_id' => $psauto->id, 'phone' => '+373 79 512 345'], [ 'name' => 'Alexandru Grosu', 'car' => 'BMW', 'model' => 'X5', 'message' => 'Trebuie schimb lichid frână, roți față scrâșnesc', 'source' => 'telegram', 'status' => 'new', ] ); Lead::firstOrCreate( ['company_id' => $psauto->id, 'phone' => '+373 69 234 567'], [ 'name' => 'Irina Cojocaru', 'email' => 'irina@mail.md', 'car' => 'Audi', 'model' => 'A4', 'message' => 'Diagnosticare motor, lampa motor aprinsă', 'source' => 'whatsapp', 'status' => 'contacted', 'budget' => 800, ] ); // ─── Deal-uri demo ──────────────────────────────────────── Deal::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c1->id, 'name' => 'BMW X5 — Diagnostic'], [ 'vehicle_id' => $v1->id, 'price' => 800, 'stage' => 'done', 'source' => 'call', 'note' => 'Diagnostică ISTA', 'won_at' => now()->subDays(15), ] ); Deal::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c2->id, 'name' => 'Audi A4 — Schimb ulei'], [ 'vehicle_id' => $v2->id, 'price' => 500, 'stage' => 'in_work', 'source' => 'site', 'note' => 'Shell 5W-40', ] ); Deal::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c3->id, 'name' => 'Porsche — Frâne Brembo'], [ 'vehicle_id' => $v3->id, 'price' => 2200, 'stage' => 'agree', 'source' => 'instagram', 'note' => 'Așteaptă confirmare comanda Brembo', ] ); // ─── Programări demo (azi + 2 zile) ─────────────────────── $post1 = Post::where('company_id', $psauto->id)->where('name', 'Pod 1')->first(); $post2 = Post::where('company_id', $psauto->id)->where('name', 'Pod 2')->first(); Appointment::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c1->id, 'date' => today()->toDateString(), 'time_start' => '09:00:00'], [ 'post_id' => $post1?->id, 'vehicle_id' => $v1->id, 'master_id' => $admin->id, 'time_end' => '11:00:00', 'title' => 'BMW X5 — Diagnostic', 'color' => '#3B82F6', 'status' => 'scheduled', ] ); Appointment::firstOrCreate( ['company_id' => $psauto->id, 'client_id' => $c2->id, 'date' => today()->addDay()->toDateString(), 'time_start' => '10:00:00'], [ 'post_id' => $post2?->id, 'vehicle_id' => $v2->id, 'master_id' => $admin->id, 'time_end' => '12:00:00', 'title' => 'Audi A4 — Schimb ulei', 'color' => '#E24B4A', 'status' => 'scheduled', ] ); app(TenantManager::class)->clear(); } }