CluPilotCloud/app/Provisioning/Steps/Customer/CompleteProvisioning.php

47 lines
1.3 KiB
PHP

<?php
namespace App\Provisioning\Steps\Customer;
use App\Models\ProvisioningRun;
use App\Notifications\CloudReady;
use App\Provisioning\StepResult;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Notification;
class CompleteProvisioning extends CustomerStep
{
public function key(): string
{
return 'complete_provisioning';
}
public function maxDuration(): int
{
return 60;
}
public function execute(ProvisioningRun $run): StepResult
{
$order = $this->order($run);
$instance = $this->instance($run);
$instance->update(['status' => 'active']);
$order->update(['status' => 'active']);
foreach (['invite_users', 'upload_logo', 'connect_desktop', 'explore_apps'] as $key) {
$instance->onboardingTasks()->firstOrCreate(['key' => $key], ['done' => false]);
}
// Deliver the initial credentials, then scrub the transient password.
$encrypted = $run->context('admin_password');
if ($encrypted !== null) {
Notification::route('mail', $order->customer->email)->notify(
new CloudReady($instance, (string) $instance->nc_admin_ref, Crypt::decryptString($encrypted)),
);
$run->forgetContext('admin_password');
}
return StepResult::advance();
}
}