Skip to content

Commit aad6003

Browse files
committed
feat(onboarding): add onboarding steps and completion checks for menus
1 parent 8cb20c6 commit aad6003

File tree

7 files changed

+49
-1
lines changed

7 files changed

+49
-1
lines changed

resources/lang/en/default.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,5 +633,8 @@
633633
'text_delivery_order_count' => 'Number of Delivery Orders',
634634
'text_canceled_order_total' => 'Total Canceled Orders',
635635
'text_canceled_order_count' => 'Number of Canceled Orders',
636+
'text_onboarding_menus' => 'Build your menu',
637+
638+
'help_onboarding_menus' => 'Add your dishes, organize them into categories, and set prices. This is what your hungry customers will browse and order from.',
636639
],
637640
];

resources/models/inventory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
'stockable_type_name' => [
2828
'label' => 'lang:igniter.cart::default.stocks.column_stockable_type',
2929
'type' => 'text',
30-
'searchable' => true,
30+
'select' => 'stockable_type',
31+
'searchable' => false,
3132
],
3233
'stockable_name' => [
3334
'label' => 'lang:igniter.cart::default.stocks.column_stockable_name',

src/Extension.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,4 +472,18 @@ protected function registerMiddlewares(): void
472472
$this->app['router']->pushMiddlewareToGroup('igniter', CartMiddleware::class);
473473
}
474474
}
475+
476+
public function registerOnboardingSteps(): array
477+
{
478+
return [
479+
'igniter.cart::menus' => [
480+
'label' => 'igniter.cart::default.dashboard.text_onboarding_menus',
481+
'description' => 'igniter.cart::default.dashboard.help_onboarding_menus',
482+
'icon' => 'fa-cutlery',
483+
'url' => admin_url('menus'),
484+
'priority' => 30,
485+
'complete' => Menu::onboardingIsComplete(...),
486+
],
487+
];
488+
}
475489
}

src/FormWidgets/StockEditor.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ public function onSaveRecord(): array
9595

9696
flash()->success(sprintf(lang('igniter::admin.alert_success'), lang('igniter.cart::default.stocks.text_form_name').' updated'))->now();
9797

98+
$this->model->refresh();
99+
98100
$this->prepareVars();
99101

100102
return [

src/Models/Menu.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ public static function getDropdownOptions()
145145
return self::whereIsEnabled()->pluck('menu_name', 'menu_id');
146146
}
147147

148+
public static function onboardingIsComplete(): bool
149+
{
150+
return self::whereIsEnabled()->count() > 0;
151+
}
152+
148153
//
149154
// Helpers
150155
//

tests/ExtensionTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,13 @@
174174
expect(collect($items['core'])->firstWhere('code', 'order'))->not->toBeNull();
175175
});
176176

177+
it('registers onboarding steps', function(): void {
178+
$steps = $this->extension->registerOnboardingSteps();
179+
180+
expect($steps)->toHaveKey('igniter.cart::menus')
181+
->and($steps['igniter.cart::menus']['label'])->toBe('igniter.cart::default.dashboard.text_onboarding_payments');
182+
});
183+
177184
it('restores cart session on login correctly', function(): void {
178185
CartSettings::set('abandoned_cart', 1);
179186
$customer = Customer::factory()->create();

tests/Models/MenuTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@
2626
expect($options->isNotEmpty())->toBeTrue();
2727
});
2828

29+
it('returns true if onboarding is complete', function(): void {
30+
Menu::factory()->create(['menu_status' => 1]);
31+
32+
$result = Menu::onboardingIsComplete();
33+
34+
expect($result)->toBeTrue();
35+
});
36+
37+
it('returns false if onboarding is not complete', function(): void {
38+
Menu::query()->update(['status' => 0]);
39+
40+
$result = Menu::onboardingIsComplete();
41+
42+
expect($result)->toBeFalse();
43+
});
44+
2945
it('returns menu_price_from attribute', function(): void {
3046
$menu = Menu::factory()->create(['menu_price' => 10.00]);
3147

0 commit comments

Comments
 (0)