67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers\Webhook;
 | 
						|
 | 
						|
use App\Http\Controllers\Controller;
 | 
						|
use App\Models\Waitlist as ModelsWaitlist;
 | 
						|
use Exception;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
 | 
						|
class Waitlist extends Controller
 | 
						|
{
 | 
						|
    public function confirm(Request $request)
 | 
						|
    {
 | 
						|
        $email = request()->get('email');
 | 
						|
        $confirmation_code = request()->get('confirmation_code');
 | 
						|
        ray($email, $confirmation_code);
 | 
						|
        try {
 | 
						|
            $found = ModelsWaitlist::where('uuid', $confirmation_code)->where('email', $email)->first();
 | 
						|
            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 {
 | 
						|
                        $found->delete();
 | 
						|
                        send_internal_notification('Waitlist expired: '.$email);
 | 
						|
 | 
						|
                        return 'Your confirmation code has expired. Please sign up again.';
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return redirect()->route('dashboard');
 | 
						|
        } catch (Exception $e) {
 | 
						|
            send_internal_notification('Waitlist confirmation failed: '.$e->getMessage());
 | 
						|
            ray($e->getMessage());
 | 
						|
 | 
						|
            return redirect()->route('dashboard');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function cancel(Request $request)
 | 
						|
    {
 | 
						|
        $email = request()->get('email');
 | 
						|
        $confirmation_code = request()->get('confirmation_code');
 | 
						|
        try {
 | 
						|
            $found = ModelsWaitlist::where('uuid', $confirmation_code)->where('email', $email)->first();
 | 
						|
            if ($found && ! $found->verified) {
 | 
						|
                $found->delete();
 | 
						|
                send_internal_notification('Waitlist cancelled: '.$email);
 | 
						|
 | 
						|
                return 'Your email address has been removed from the waitlist.';
 | 
						|
            }
 | 
						|
 | 
						|
            return redirect()->route('dashboard');
 | 
						|
        } catch (Exception $e) {
 | 
						|
            send_internal_notification('Waitlist cancellation failed: '.$e->getMessage());
 | 
						|
            ray($e->getMessage());
 | 
						|
 | 
						|
            return redirect()->route('dashboard');
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |