diff --git a/app/Console/Commands/TestEmail.php b/app/Console/Commands/TestEmail.php index 435cd59b2..682848a05 100644 --- a/app/Console/Commands/TestEmail.php +++ b/app/Console/Commands/TestEmail.php @@ -2,12 +2,14 @@ namespace App\Console\Commands; +use App\Jobs\SendConfirmationForWaitlistJob; use App\Models\Application; use App\Models\ApplicationPreview; use App\Models\ScheduledDatabaseBackup; use App\Models\StandalonePostgresql; use App\Models\TeamInvitation; use App\Models\User; +use App\Models\Waitlist; use App\Notifications\Application\DeploymentFailed; use App\Notifications\Application\DeploymentSuccess; use App\Notifications\Application\StatusChanged; @@ -19,6 +21,7 @@ use Exception; use Illuminate\Console\Command; use Illuminate\Mail\Message; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Support\Facades\Process; use Mail; use Str; @@ -148,23 +151,20 @@ class TestEmail extends Command case 'waitlist-invitation-link': $this->mail = new MailMessage(); $this->mail->view('emails.waitlist-invitation', [ - 'email' => 'test2@example.com', - 'password' => "supersecretpassword", + 'loginLink' => 'https://coolify.io', ]); $this->mail->subject('Congratulations! You are invited to join Coolify Cloud.'); $this->sendEmail(); break; case 'waitlist-confirmation': - $this->mail = new MailMessage(); - $this->mail->view( - 'emails.waitlist-confirmation', - [ - 'confirmation_url' => 'http://example.com', - 'cancel_url' => 'http://example.com', - ] - ); - $this->mail->subject('You are on the waitlist!'); - $this->sendEmail(); + $found = Waitlist::where('email', $this->email)->first(); + if ($found) { + SendConfirmationForWaitlistJob::dispatch($this->email, $found->uuid); + + } else { + throw new Exception('Waitlist not found'); + } + break; } } diff --git a/app/Console/Commands/WaitlistInvite.php b/app/Console/Commands/WaitlistInvite.php index a3b47089a..61d0bac18 100644 --- a/app/Console/Commands/WaitlistInvite.php +++ b/app/Console/Commands/WaitlistInvite.php @@ -91,8 +91,6 @@ class WaitlistInvite extends Command $loginLink = route('auth.link', ['token' => $token]); $mail = new MailMessage(); $mail->view('emails.waitlist-invitation', [ - 'email' => $this->next_patient->email, - 'password' => $this->password, 'loginLink' => $loginLink, ]); $mail->subject('Congratulations! You are invited to join Coolify Cloud.'); diff --git a/app/Jobs/CleanupInstanceStuffsJob.php b/app/Jobs/CleanupInstanceStuffsJob.php index 1275839d9..96fd490ba 100644 --- a/app/Jobs/CleanupInstanceStuffsJob.php +++ b/app/Jobs/CleanupInstanceStuffsJob.php @@ -27,7 +27,7 @@ class CleanupInstanceStuffsJob implements ShouldQueue, ShouldBeUnique public function handle(): void { try { - $this->cleanup_waitlist(); + // $this->cleanup_waitlist(); } catch (\Exception $e) { send_internal_notification('CleanupInstanceStuffsJob failed with error: ' . $e->getMessage()); ray($e->getMessage()); diff --git a/routes/webhooks.php b/routes/webhooks.php index 51ab33166..9a5f72ce1 100644 --- a/routes/webhooks.php +++ b/routes/webhooks.php @@ -181,11 +181,17 @@ Route::get('/waitlist/confirm', function () { ray($email, $confirmation_code); try { $found = Waitlist::where('uuid', $confirmation_code)->where('email', $email)->first(); - if ($found && !$found->verified && $found->created_at > now()->subMinutes(config('constants.waitlist.expiration'))) { - $found->verified = true; - $found->save(); - send_internal_notification('Waitlist confirmed: ' . $email); - return 'Thank you for confirming your email address. We will notify you when you are next in line.'; + if ($found) { + if (!$found->verified) { + if ($found->created_at > now()->subMinutes(config('constants.waitlist.expiration'))) { + $found->verified = true; + $found->save(); + send_internal_notification('Waitlist confirmed: ' . $email); + return 'Thank you for confirming your email address. We will notify you when you are next in line.'; + } else { + return 'Your confirmation code has expired. Please sign up again.'; + } + } } return redirect()->route('dashboard'); } catch (error) { @@ -225,7 +231,7 @@ Route::post('/payments/stripe/events', function () { ]); $type = data_get($event, 'type'); $data = data_get($event, 'data.object'); - ray('Event: '. $type); + ray('Event: ' . $type); switch ($type) { case 'checkout.session.completed': $clientReferenceId = data_get($data, 'client_reference_id'); @@ -263,13 +269,13 @@ Route::post('/payments/stripe/events', function () { 'stripe_invoice_paid' => true, ]); break; - // case 'invoice.payment_failed': - // $customerId = data_get($data, 'customer'); - // $subscription = Subscription::where('stripe_customer_id', $customerId)->first(); - // if ($subscription) { - // SubscriptionInvoiceFailedJob::dispatch($subscription->team); - // } - // break; + // case 'invoice.payment_failed': + // $customerId = data_get($data, 'customer'); + // $subscription = Subscription::where('stripe_customer_id', $customerId)->first(); + // if ($subscription) { + // SubscriptionInvoiceFailedJob::dispatch($subscription->team); + // } + // break; case 'customer.subscription.updated': $customerId = data_get($data, 'customer'); $subscription = Subscription::where('stripe_customer_id', $customerId)->firstOrFail(); @@ -287,9 +293,9 @@ Route::post('/payments/stripe/events', function () { ]); ray($feedback, $comment, $alreadyCancelAtPeriodEnd, $cancelAtPeriodEnd); if ($feedback) { - $reason = "Cancellation feedback for {$subscription->team->id}: '" . $feedback ."'"; + $reason = "Cancellation feedback for {$subscription->team->id}: '" . $feedback . "'"; if ($comment) { - $reason .= ' with comment: \'' . $comment ."'"; + $reason .= ' with comment: \'' . $comment . "'"; } send_internal_notification($reason); } @@ -307,7 +313,7 @@ Route::post('/payments/stripe/events', function () { $subscription = Subscription::where('stripe_customer_id', $customerId)->firstOrFail(); $subscription->update([ 'stripe_subscription_id' => null, - 'stripe_plan_id'=> null, + 'stripe_plan_id' => null, 'stripe_cancel_at_period_end' => false, 'stripe_invoice_paid' => false, ]);