|
2 | 2 |
|
3 | 3 | namespace Webkul\Admin\Http\Controllers\Contact\Persons;
|
4 | 4 |
|
| 5 | +use Exception; |
5 | 6 | use Illuminate\Http\JsonResponse;
|
6 | 7 | use Illuminate\Http\RedirectResponse;
|
7 | 8 | use Illuminate\Http\Resources\Json\JsonResource;
|
@@ -138,40 +139,97 @@ public function destroy(int $id): JsonResponse
|
138 | 139 | {
|
139 | 140 | $person = $this->personRepository->findOrFail($id);
|
140 | 141 |
|
| 142 | + if ( |
| 143 | + $person->leads |
| 144 | + && $person->leads->count() > 0 |
| 145 | + ) { |
| 146 | + return response()->json([ |
| 147 | + 'message' => trans('admin::app.contacts.persons.index.delete-failed'), |
| 148 | + ], 400); |
| 149 | + } |
| 150 | + |
141 | 151 | try {
|
142 |
| - Event::dispatch('contacts.person.delete.before', $id); |
| 152 | + Event::dispatch('contacts.person.delete.before', $person); |
143 | 153 |
|
144 |
| - $person->delete($id); |
| 154 | + $person->delete(); |
145 | 155 |
|
146 |
| - Event::dispatch('contacts.person.delete.after', $id); |
| 156 | + Event::dispatch('contacts.person.delete.after', $person); |
147 | 157 |
|
148 | 158 | return response()->json([
|
149 | 159 | 'message' => trans('admin::app.contacts.persons.index.delete-success'),
|
150 | 160 | ], 200);
|
151 |
| - } catch (\Exception $exception) { |
| 161 | + |
| 162 | + } catch (Exception $exception) { |
152 | 163 | return response()->json([
|
153 | 164 | 'message' => trans('admin::app.contacts.persons.index.delete-failed'),
|
154 | 165 | ], 400);
|
155 | 166 | }
|
156 | 167 | }
|
157 | 168 |
|
158 | 169 | /**
|
159 |
| - * Mass Delete the specified resources. |
| 170 | + * Mass destroy the specified resources from storage. |
160 | 171 | */
|
161 |
| - public function massDestroy(MassDestroyRequest $massDestroyRequest): JsonResponse |
| 172 | + public function massDestroy(MassDestroyRequest $request): JsonResponse |
162 | 173 | {
|
163 |
| - $persons = $this->personRepository->findWhereIn('id', $massDestroyRequest->input('indices')); |
| 174 | + try { |
| 175 | + $persons = $this->personRepository->findWhereIn('id', $request->input('indices', [])); |
164 | 176 |
|
165 |
| - foreach ($persons as $person) { |
166 |
| - Event::dispatch('contact.person.delete.before', $person); |
| 177 | + $deletedCount = 0; |
167 | 178 |
|
168 |
| - $this->personRepository->delete($person->id); |
| 179 | + $blockedCount = 0; |
169 | 180 |
|
170 |
| - Event::dispatch('contact.person.delete.after', $person); |
171 |
| - } |
| 181 | + foreach ($persons as $person) { |
| 182 | + if ( |
| 183 | + $person->leads |
| 184 | + && $person->leads->count() > 0 |
| 185 | + ) { |
| 186 | + $blockedCount++; |
| 187 | + |
| 188 | + continue; |
| 189 | + } |
| 190 | + |
| 191 | + Event::dispatch('contact.person.delete.before', $person); |
| 192 | + |
| 193 | + $this->personRepository->delete($person->id); |
| 194 | + |
| 195 | + Event::dispatch('contact.person.delete.after', $person); |
| 196 | + |
| 197 | + $deletedCount++; |
| 198 | + } |
| 199 | + |
| 200 | + $statusCode = 200; |
172 | 201 |
|
173 |
| - return response()->json([ |
174 |
| - 'message' => trans('admin::app.contacts.persons.index.delete-success'), |
175 |
| - ]); |
| 202 | + switch (true) { |
| 203 | + case $deletedCount > 0 && $blockedCount === 0: |
| 204 | + $message = trans('admin::app.contacts.persons.index.all-delete-success'); |
| 205 | + |
| 206 | + break; |
| 207 | + |
| 208 | + case $deletedCount > 0 && $blockedCount > 0: |
| 209 | + $message = trans('admin::app.contacts.persons.index.partial-delete-warning'); |
| 210 | + |
| 211 | + break; |
| 212 | + |
| 213 | + case $deletedCount === 0 && $blockedCount > 0: |
| 214 | + $message = trans('admin::app.contacts.persons.index.none-delete-warning'); |
| 215 | + |
| 216 | + $statusCode = 400; |
| 217 | + |
| 218 | + break; |
| 219 | + |
| 220 | + default: |
| 221 | + $message = trans('admin::app.contacts.persons.index.no-selection'); |
| 222 | + |
| 223 | + $statusCode = 400; |
| 224 | + |
| 225 | + break; |
| 226 | + } |
| 227 | + |
| 228 | + return response()->json(['message' => $message], $statusCode); |
| 229 | + } catch (Exception $exception) { |
| 230 | + return response()->json([ |
| 231 | + 'message' => trans('admin::app.contacts.persons.index.delete-failed'), |
| 232 | + ], 400); |
| 233 | + } |
176 | 234 | }
|
177 | 235 | }
|
0 commit comments