Skip to content

Commit 1e2ed24

Browse files
committed
wip
1 parent c1262aa commit 1e2ed24

File tree

7 files changed

+68
-14
lines changed

7 files changed

+68
-14
lines changed

src/BazarServiceProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ protected function registerPublishes(): void
103103
__DIR__.'/../stubs/BazarServiceProvider.stub' => $this->app->basePath('app/Providers/BazarServiceProvider.php'),
104104
__DIR__.'/../stubs/CategoryResource.stub' => $this->app->basePath('app/Root/Resources/CategoryResource.php'),
105105
__DIR__.'/../stubs/CouponResource.stub' => $this->app->basePath('app/Root/Resources/CouponResource.php'),
106+
__DIR__.'/../stubs/DiscountRuleResource.stub' => $this->app->basePath('app/Root/Resources/DiscountRuleResource.php'),
106107
__DIR__.'/../stubs/OrderResource.stub' => $this->app->basePath('app/Root/Resources/OrderResource.php'),
107108
__DIR__.'/../stubs/ProductResource.stub' => $this->app->basePath('app/Root/Resources/ProductResource.php'),
108109
__DIR__.'/../stubs/PropertyResource.stub' => $this->app->basePath('app/Root/Resources/PropertyResource.php'),

src/Enums/CouponType.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44

55
namespace Cone\Bazar\Enums;
66

7+
use Cone\Root\Enums\Arrayable;
8+
79
enum CouponType: string
810
{
11+
use Arrayable;
12+
913
case FIX = 'fix';
1014
case PERCENT = 'percent';
1115

@@ -19,17 +23,4 @@ public function label(): string
1923
self::PERCENT => __('Percentage'),
2024
};
2125
}
22-
23-
/**
24-
* Convert to array.
25-
*/
26-
public static function toArray(): array
27-
{
28-
return array_reduce(self::cases(), function (array $cases, self $case): array {
29-
return array_merge(
30-
$cases,
31-
[$case->value => $case->label()]
32-
);
33-
}, []);
34-
}
3526
}

src/Enums/Currency.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44

55
namespace Cone\Bazar\Enums;
66

7+
use Cone\Root\Enums\Arrayable;
78
use Illuminate\Support\Facades\Config;
89
use Illuminate\Support\Number;
910

1011
enum Currency: string
1112
{
13+
use Arrayable;
14+
1215
case AED = 'AED';
1316
case ARS = 'ARS';
1417
case AUD = 'AUD';
@@ -60,6 +63,14 @@ enum Currency: string
6063
case VND = 'VND';
6164
case ZAR = 'ZAR';
6265

66+
/**
67+
* Get the label for the currency.
68+
*/
69+
public function label(): string
70+
{
71+
return $this->value;
72+
}
73+
6374
/**
6475
* Get the symbol for the currency.
6576
*/

src/Enums/DiscountRuleType.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44

55
namespace Cone\Bazar\Enums;
66

7+
use Cone\Root\Enums\Arrayable;
8+
79
enum DiscountRuleType: string
810
{
11+
use Arrayable;
12+
913
case CART = 'cart';
1014
case BUYABLE = 'buyable';
1115
case SHIPPING = 'shipping';

src/Enums/DiscountValueType.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,23 @@
44

55
namespace Cone\Bazar\Enums;
66

7+
use Cone\Root\Enums\Arrayable;
8+
79
enum DiscountValueType: string
810
{
11+
use Arrayable;
12+
913
case FIX = 'fixed_amount';
1014
case PERCENT = 'percent';
15+
16+
/**
17+
* Get the label of the target.
18+
*/
19+
public function label(): string
20+
{
21+
return match ($this) {
22+
self::FIX => __('Fixed Amount'),
23+
self::PERCENT => __('Percentage'),
24+
};
25+
}
1126
}

src/Resources/DiscountRuleResource.php

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44

55
namespace Cone\Bazar\Resources;
66

7+
use Cone\Bazar\Enums\DiscountRuleType;
78
use Cone\Bazar\Models\DiscountRule;
9+
use Cone\Root\Fields\BelongsToMany;
10+
use Cone\Root\Fields\Boolean;
811
use Cone\Root\Fields\ID;
12+
use Cone\Root\Fields\Select;
13+
use Cone\Root\Fields\Text;
914
use Cone\Root\Resources\Resource;
1015
use Illuminate\Database\Eloquent\Model;
1116
use Illuminate\Http\Request;
17+
use Illuminate\Validation\Rule;
1218

1319
class DiscountRuleResource extends Resource
1420
{
@@ -17,7 +23,7 @@ class DiscountRuleResource extends Resource
1723
*
1824
* @var class-string<\Cone\Bazar\Models\DiscountRule>
1925
*/
20-
protected static string $model = DiscountRule::class;
26+
protected string $model = DiscountRule::class;
2127

2228
/**
2329
* The group for the resource.
@@ -47,6 +53,29 @@ public function fields(Request $request): array
4753
{
4854
return [
4955
ID::make(),
56+
57+
Text::make(__('Name'), 'name')
58+
->sortable()
59+
->searchable()
60+
->rules(['required', 'string', 'max:255']),
61+
62+
Boolean::make(__('Active'), 'active')
63+
->sortable()
64+
->rules(['required', 'boolean']),
65+
66+
Select::make(__('Type'), 'type')
67+
->options(DiscountRuleType::toArray())
68+
->sortable()
69+
->rules(['required', 'string', Rule::in(array_column(DiscountRuleType::cases(), 'value'))]),
70+
71+
Boolean::make(__('Stackable'), 'stackable')
72+
->sortable()
73+
->rules(['required', 'boolean']),
74+
75+
BelongsToMany::make(__('Users'), 'users')
76+
->searchable(columns: ['name', 'email'])
77+
->async()
78+
->display('name'),
5079
];
5180
}
5281
}

src/Traits/AsOrder.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,9 @@ public function calculateDiscount(): float
480480
$this->applyCoupon($coupon);
481481
});
482482

483+
// calculate cart levet discount
484+
// calculate item level discount
485+
483486
return $this->getDiscount();
484487
}
485488
}

0 commit comments

Comments
 (0)