���Root Mod By V1rus_Alfa
User / IP
:
216.73.217.78
Host / Server
:
195.214.235.115 / npln.ir
System
:
Linux damavand.pws-dns.net 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Command
|
Upload
|
Mass Deface
|
Create
:
/
home2
/
cutunixc
/
repositories
/
portal-cutunix
/
database
/
seeders
/
Viewing: ChatSeeder.php
<?php namespace Database\Seeders; use Modules\Identity\Models\Admin; use App\Models\Conversation; use App\Models\Message; use App\Models\Participant; use Modules\Tenancy\Models\Tenant; use Modules\Identity\Models\User; use App\Services\ConversationService; use Illuminate\Database\Seeder; use Faker\Factory as Faker; class ChatSeeder extends Seeder { protected $conversationService; protected $faker; public function __construct(ConversationService $conversationService) { $this->conversationService = $conversationService; $this->faker = Faker::create(); } public function run(): void { // Get some users from each type $admins = Admin::take(3)->get(); $tenants = Tenant::take(5)->get(); $users = User::take(10)->get(); // Create Admin to Admin conversations foreach ($admins as $admin) { $otherAdmins = $admins->where('id', '!=', $admin->id)->values(); foreach ($otherAdmins as $otherAdmin) { $this->createConversationWithMessages($admin, [$otherAdmin], 'Admin Discussion'); } } // Create Admin to Tenant conversations foreach ($admins as $admin) { foreach ($tenants as $tenant) { $this->createConversationWithMessages($admin, [$tenant], 'Support Channel'); } } // Create Admin to User conversations foreach ($admins->take(2) as $admin) { foreach ($users->take(5) as $user) { $this->createConversationWithMessages($admin, [$user], 'User Support'); } } // Create Tenant to User conversations foreach ($tenants as $tenant) { $tenantUsers = $users->where('tenant_id', $tenant->id)->values(); foreach ($tenantUsers as $user) { $this->createConversationWithMessages($tenant, [$user], 'Tenant Support'); } } // Create Tenant to Tenant conversations foreach ($tenants as $tenant) { $otherTenants = $tenants->where('id', '!=', $tenant->id)->values(); foreach ($otherTenants as $otherTenant) { $this->createConversationWithMessages($tenant, [$otherTenant], 'Tenant Collaboration'); } } // Create User to User conversations (within same tenant) foreach ($tenants as $tenant) { $tenantUsers = $users->where('tenant_id', $tenant->id)->values(); foreach ($tenantUsers as $user) { $otherUsers = $tenantUsers->where('id', '!=', $user->id)->values(); foreach ($otherUsers->take(2) as $otherUser) { $this->createConversationWithMessages($user, [$otherUser], 'User Chat'); } } } // Create some group conversations // Admin group $this->createConversationWithMessages( $admins->first(), $admins->slice(1)->all(), 'Admin Team' ); // Tenant group per region/area $regions = ['North', 'South', 'East', 'West']; foreach ($regions as $region) { $this->createConversationWithMessages( $tenants->first(), $tenants->slice(1, 3)->all(), "Tenant $region Region" ); } // User groups per tenant foreach ($tenants as $tenant) { $tenantUsers = $users->where('tenant_id', $tenant->id)->values(); if ($tenantUsers->count() >= 3) { $this->createConversationWithMessages( $tenantUsers->first(), $tenantUsers->slice(1, 3)->all(), "Team {$tenant->name}" ); } } } protected function createConversationWithMessages($creator, array $participants, string $title): void { $conversation = $this->conversationService->createConversation($creator, $participants, $title); // Generate between 5 to 15 messages $messageCount = rand(5, 15); $allParticipants = collect([$creator])->concat($participants); for ($i = 0; $i < $messageCount; $i++) { $sender = $allParticipants->random(); $messageType = $this->faker->randomElement(['text', 'image', 'document', 'audio', 'video']); $messageData = [ 'conversation_id' => $conversation->id, 'sender_type' => get_class($sender), 'sender_id' => $sender->id, 'type' => $messageType, 'is_read' => $this->faker->boolean(70), 'created_at' => now()->subMinutes(rand(1, 10080)), // Up to 1 week ago ]; if ($messageType === 'text') { $messageData['content'] = $this->faker->realText(rand(20, 200)); } else { // Simulate file attachment $messageData['content'] = "Sample {$messageType} content"; // You might want to create actual files here if needed } if ($messageData['is_read']) { $messageData['read_at'] = now()->subMinutes(rand(1, 60)); } Message::create($messageData); } // Update last seen for some participants foreach ($allParticipants as $participant) { if ($this->faker->boolean(80)) { Participant::where('conversation_id', $conversation->id) ->where('participant_type', get_class($participant)) ->where('participant_id', $participant->id) ->update(['last_seen_at' => now()->subMinutes(rand(1, 120))]); } } } }
Coded With 💗 by
0x6ick Mod By V1rus_Alfa