option('people'); for ($i = 0; $i < $people; $i++) { $this->main(); } } private function main() { if ($this->argument('email')) { if ($this->option('only-email')) { $this->next_patient = User::whereEmail($this->argument('email'))->first(); $this->password = Str::password(); $this->next_patient->update([ 'password' => Hash::make($this->password), 'force_password_reset' => true, ]); } else { $this->next_patient = Waitlist::where('email', $this->argument('email'))->first(); } if (! $this->next_patient) { $this->error("{$this->argument('email')} not found in the waitlist."); return; } } else { $this->next_patient = Waitlist::orderBy('created_at', 'asc')->where('verified', true)->first(); } if ($this->next_patient) { if ($this->option('only-email')) { $this->send_email(); return; } $this->register_user(); $this->remove_from_waitlist(); $this->send_email(); } else { $this->info('No verified user found in the waitlist. 👀'); } } private function register_user() { $already_registered = User::whereEmail($this->next_patient->email)->first(); if (! $already_registered) { $this->password = Str::password(); User::create([ 'name' => Str::of($this->next_patient->email)->before('@'), 'email' => $this->next_patient->email, 'password' => Hash::make($this->password), 'force_password_reset' => true, ]); $this->info("User registered ({$this->next_patient->email}) successfully. 🎉"); } else { throw new \Exception('User already registered'); } } private function remove_from_waitlist() { $this->next_patient->delete(); $this->info('User removed from waitlist successfully.'); } private function send_email() { $token = Crypt::encryptString("{$this->next_patient->email}@@@$this->password"); $loginLink = route('auth.link', ['token' => $token]); $mail = new MailMessage(); $mail->view('emails.waitlist-invitation', [ 'loginLink' => $loginLink, ]); $mail->subject('Congratulations! You are invited to join Coolify Cloud.'); send_user_an_email($mail, $this->next_patient->email); $this->info('Email sent successfully. 📧'); } }