1. Go to this page and download the library: Download elegantly/laravel-workflow library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace App\Workflows;
use Carbon\CarbonInterval;
use Elegantly\Workflow\Models\Workflow;
use Elegantly\Workflow\WorkflowDefinition;
use Elegantly\Workflow\WorkflowStep;
use Illuminate\Support\Collection;
class WelcomeUserWorkflow extends WorkflowDefinition
{
public function __construct(
public User $user
) {
//
}
public function steps(Workflow $workflow): Collection
{
return collect()
->put(
'welcome-email',
WorkflowStep::make($workflow)
->action(function (): void {
// send an email to the user
})
)
->put(
'export-user',
WorkflowStep::make($workflow)
->action(new ExportUserToCrmJob($this->user))
)
->put(
'product-tour-email',
WorkflowStep::make($workflow)
->after([
'welcome-email' => CarbonInterval::days(3)
])
->action(function (): void {
// Send another email to your user
})
)
->put(
'send-promo-code',
WorkflowStep::make($workflow)
->after([
'product-tour-email' => CarbonInterval::days(7),
])
->when(fn() => $this->user->hasNotPurchased())
->action(function (): void {
//
})
);
}
}
use Elegantly\Workflow\Commands\RunWorkflowsCommand;
$schedule->command(RunWorkflowsCommand::class)->everyMinutes();