string('id')->primary(); $table->string('name'); $table->decimal('price', 8, 2); $table->string('duration'); $table->json('features'); $table->string('status')->default('Active'); $table->integer('max_contact_people')->nullable(); $table->boolean('unlimited_contacts')->default(false); $table->boolean('enable_job_apply')->default(false); $table->timestamps(); }); // Seed default plans DB::table('plans')->insert([ [ 'id' => 'basic', 'name' => 'Basic Search', 'price' => 99.00, 'duration' => 'Monthly', 'features' => json_encode(['Browse 500+ workers', '10 Shortlists']), 'status' => 'Active', 'max_contact_people' => 10, 'unlimited_contacts' => false, 'enable_job_apply' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'id' => 'premium', 'name' => 'Premium Pass', 'price' => 199.00, 'duration' => 'Monthly', 'features' => json_encode(['Unlimited shortlisting', 'Direct messaging']), 'status' => 'Active', 'max_contact_people' => 50, 'unlimited_contacts' => false, 'enable_job_apply' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'id' => 'vip', 'name' => 'VIP Concierge', 'price' => 499.00, 'duration' => 'Monthly', 'features' => json_encode(['Dedicated Manager', '30-day replacement']), 'status' => 'Active', 'max_contact_people' => null, 'unlimited_contacts' => true, 'enable_job_apply' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('plans'); } };