PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.3.23
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.3.23
1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 trunk All 48 releases
fluent-cart / app / Http / Controllers / TaxClassController.php

TaxClassController.php in FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler 1.3.23, at app/Http/Controllers/TaxClassController.php

160 lines 4.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentCart\App\Http\Controllers;
4
5 use FluentCart\App\Models\TaxClass;
6 use FluentCart\Framework\Support\Arr;
7 use FluentCart\Framework\Support\Str;
8 use FluentCart\App\Modules\Tax\TaxModule;
9 use FluentCart\Framework\Http\Request\Request;
10 use FluentCart\App\Http\Requests\TaxClassRequest;
11
12 class TaxClassController extends Controller
13 {
14
15 public function index(Request $request)
16 {
17 $taxClasses = TaxClass::query()->get();
18
19 $taxClasses = $taxClasses->sort(function ($a, $b) {
20 $aPriority = (int) Arr::get($a->meta, 'priority', 0);
21 $bPriority = (int) Arr::get($b->meta, 'priority', 0);
22 if ($aPriority === $bPriority) {
23 return $b->id <=> $a->id; // newer first when priority equal
24 }
25 return $bPriority <=> $aPriority;
26 })->values()->map(function ($taxClass) {
27 $taxClass->categories = Arr::get($taxClass->meta, 'categories', []);
28 return $taxClass;
29 });
30
31 return $this->sendSuccess([
32 'tax_classes' => $taxClasses
33 ]);
34 }
35
36 public function store(TaxClassRequest $request)
37 {
38
39 $data = $request->getSafe($request->sanitize());
40
41 $taxClassData = [
42 'title' => Arr::get($data, 'title'),
43 'description' => Arr::get($data, 'description', ''),
44 'meta' => [
45 'categories' => Arr::get($data, 'categories', []),
46 'priority' => Arr::get($data, 'priority', 0),
47 ]
48 ];
49
50 $taxClass = TaxClass::create($taxClassData);
51
52 if (is_wp_error($taxClass)) {
53 return $this->sendError([
54 'message' => $taxClass->get_error_message()
55 ]);
56 }
57
58 return $this->sendSuccess([
59 'message' => __('Tax class has been created successfully', 'fluent-cart')
60 ]);
61
62 }
63
64 public function checkAndCreateInitialTaxClasses()
65 {
66 if (get_option('fluent_cart_has_tax_configure', false)) {
67 return;
68 }
69
70 $taxClasses = [
71 [
72 'title' => __('Standard', 'fluent-cart'),
73 'slug' => 'standard',
74 'description' => __('Standard tax rate for most products', 'fluent-cart'),
75 'meta' => [
76 'categories' => [],
77 'priority' => 10,
78 ]
79 ],
80 [
81 'title' => __('Reduced', 'fluent-cart'),
82 'slug' => 'reduced',
83 'description' => __('Reduced tax rate for essential goods', 'fluent-cart'),
84 'meta' => [
85 'categories' => [],
86 'priority' => 5,
87 ]
88 ],
89 [
90 'title' => __('Zero', 'fluent-cart'),
91 'slug' => 'zero',
92 'description' => __('Zero tax rate for exempt products', 'fluent-cart'),
93 'meta' => [
94 'categories' => [],
95 'priority' => 2,
96 ]
97 ]
98 ];
99
100 foreach ($taxClasses as $taxClass) {
101 $taxClass = TaxClass::query()->firstOrCreate(
102 ['slug' => $taxClass['slug']],
103 [
104 'title' => $taxClass['title'],
105 'description' => $taxClass['description'],
106 'meta' => $taxClass['meta']
107 ]
108 );
109 }
110
111 update_option('fluent_cart_has_tax_configure', true);
112 }
113
114 public function update(TaxClassRequest $request, $id)
115 {
116 $data = $request->getSafe($request->sanitize());
117 $taxClass = TaxClass::query()->findOrFail($id);
118
119 $taxClassData = [
120 'title' => Arr::get($data, 'title'),
121 'description' => Arr::get($data, 'description', ''),
122 'meta' => [
123 'categories' => Arr::get($data, 'categories', []),
124 'priority' => Arr::get($data, 'priority', 0),
125 ]
126 ];
127
128 $isUpdated = $taxClass->update($taxClassData);
129
130 if (!$isUpdated) {
131 return $this->sendError([
132 'message' => __('Failed to update tax class', 'fluent-cart')
133 ]);
134 }
135
136 return $this->sendSuccess([
137 'message' => __('Tax class has been updated successfully', 'fluent-cart')
138 ]);
139 }
140
141
142
143 public function delete(Request $request, $id)
144 {
145 $taxClass = TaxClass::query()->findOrFail($id);
146 $isDeleted = $taxClass->delete();
147
148 if (!$isDeleted) {
149 return $this->sendError([
150 'message' => __('Failed to delete tax class', 'fluent-cart')
151 ]);
152 }
153
154 return $this->sendSuccess([
155 'message' => __('Tax class has been deleted successfully', 'fluent-cart')
156 ]);
157 }
158
159 }
160