diff --git a/app/Http/Controllers/TermsAndPrivacyController.php b/app/Http/Controllers/TermsAndPrivacyController.php
index 0b9f17a..d0115f9 100644
--- a/app/Http/Controllers/TermsAndPrivacyController.php
+++ b/app/Http/Controllers/TermsAndPrivacyController.php
@@ -206,7 +206,7 @@ class TermsAndPrivacyController extends Controller
];
return view('pages.terms-and-privacy.edit', ['item' => $item, 'types' => ['1' => 'Terms', '2' => 'Privacy']]);
} else {
- Log::warning('No terms or privacy found or invalid API response: ', $json);
+ Log::warning('No terms and privacy found or invalid API response: ', $json);
return redirect()->back()->with('error', 'Terms or privacy not found.');
}
} catch (\Exception $e) {
@@ -298,32 +298,49 @@ class TermsAndPrivacyController extends Controller
$accessToken = $user['access_token'] ?? null;
if (!$accessToken) {
+ Log::info('No access token found, redirecting to login from terms-and-privacy batch delete');
return redirect()->route('login')->with('error', 'Please log in to delete terms or privacy.');
}
$uuids = $request->input('tp_uuid', []);
+ if (is_string($uuids)) {
+ $uuids = json_decode($uuids, true);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ Log::warning('Invalid JSON format for tp_uuid', ['input' => $uuids]);
+ return redirect()->back()->with('error', 'Invalid terms or privacy UUID format.');
+ }
+ }
- if (empty($uuids)) {
+ if (empty($uuids) || !is_array($uuids)) {
+ Log::warning('No valid tp_uuids provided for batch delete', ['uuids' => $uuids]);
return redirect()->back()->with('error', 'No terms or privacy selected for deletion.');
}
+ Log::info('Attempting batch delete for UUIDs: ', ['uuids' => $uuids]);
+
$response = Http::withHeaders([
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $accessToken,
+ 'Content-Type' => 'application/json',
])->delete("{$this->apiBaseUrl}/TermsAndPrivacyBatchDelete", [
'tp_uuid' => $uuids,
]);
- if ($response->successful()) {
- Log::info('Terms or privacy batch deleted successfully: ', $uuids);
- return redirect()->route('terms-and-privacy')->with('success', 'Selected terms or privacy deleted successfully.');
+ $json = $response->json();
+
+ Log::info('Batch delete response: ', ['response' => $json, 'status' => $response->status(), 'headers' => $response->headers()]);
+
+ if ($response->successful() && isset($json['status']) && $json['status'] === 'success') {
+ Log::info('Batch delete successful for UUIDs: ', ['uuids' => $uuids, 'response' => $json]);
+ return redirect()->route('terms-and-privacy')
+ ->with('success', $json['message'] ?? 'Selected terms or privacy deleted successfully.');
} else {
- Log::warning('Failed to batch delete terms or privacy: ', $response->json());
- return redirect()->back()->with('error', $response->json()['message'] ?? 'Failed to delete terms or privacy. Please try again.');
+ Log::error('Batch delete failed: ', ['response' => $json, 'status' => $response->status(), 'headers' => $response->headers()]);
+ return redirect()->back()->with('error', $json['message'] ?? 'Failed to delete terms or privacy. Status: ' . $response->status());
}
} catch (\Exception $e) {
- Log::error('Error batch deleting terms or privacy: ' . $e->getMessage());
- return redirect()->back()->with('error', 'An error occurred while deleting the terms or privacy.');
+ Log::error('Error in batch delete: ', ['error' => $e->getMessage(), 'uuids' => $uuids ?? [], 'trace' => $e->getTraceAsString()]);
+ return redirect()->back()->with('error', 'An error occurred while deleting terms or privacy: ' . $e->getMessage());
}
}
}
\ No newline at end of file
diff --git a/resources/views/components/terms-component.blade.php b/resources/views/components/terms-component.blade.php
index 62bb3a7..209aa8b 100644
--- a/resources/views/components/terms-component.blade.php
+++ b/resources/views/components/terms-component.blade.php
@@ -65,43 +65,7 @@
@endif
-
- @foreach ($data as $row)
-
- @if ($showCheckboxes)
-
-
- |
- @endif
- @foreach ($columns as $column)
- {{ $row[$column['key']] ?? '' }} |
- @endforeach
- @if (!empty($actions))
-
- @if (in_array('view', $actions))
-
-
-
- @endif
- @if (in_array('edit', $actions))
-
-
-
- @endif
- @if (in_array('delete', $actions))
-
- @endif
- |
- @endif
-
- @endforeach
-
+
@@ -109,33 +73,13 @@
@if ($showBatchDelete)
-
+
@endif
@@ -146,33 +90,120 @@
font-weight: 400;
line-height: 1.5;
}
- .table-container {
- overflow-x: auto;
+ .card-header h5 {
+ font-weight: 500;
}
- .table th, .table td {
- white-space: nowrap;
+ .table thead th {
+ font-weight: 500;
+ font-size: 0.8rem;
+ }
+ .form-label {
+ font-weight: 500;
+ font-size: 0.9rem;
+ }
+ .card {
+ border-radius: 10px;
+ }
+ .card-header {
+ background-color: transparent;
+ }
+ .btn-primary {
+ background-color: #E74610;
+ border-color: #E74610;
+ }
+ .btn-primary:hover {
+ background-color: #E74610;
+ border-color: #E74610;
}
.sortable {
cursor: pointer;
- position: relative;
}
.sortable:hover {
+ background-color: #f1f3f5;
+ }
+ .table {
+ font-size: 0.85rem;
+ width: 100%;
+ table-layout: auto;
+ }
+ .table th, .table td {
+ padding: 0.5rem;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ .table th:first-child, .table td:first-child {
+ width: 40px;
+ text-align: center;
+ }
+ .table th:last-child, .table td:last-child {
+ width: 120px;
+ text-align: center;
+ }
+ .table td:nth-child(5), .table th:nth-child(5) {
+ width: 100px;
+ }
+ .table td:nth-child(6), .table th:nth-child(6) {
+ max-width: 200px;
+ }
+ .edit-btn {
+ border-color: #E74610;
+ color: #E74610;
+ }
+ .edit-btn:hover {
+ background-color: #E74610;
+ border-color: #E74610;
+ color: #fff;
+ }
+ .view-btn {
+ border-color: #0d6efd;
+ color: #0d6efd;
+ }
+ .view-btn:hover {
+ background-color: #0d6efd;
+ color: #fff;
+ }
+ .delete-btn {
+ border-color: #dc3545;
+ color: #dc3545;
+ }
+ .delete-btn:hover {
+ background-color: #dc3545;
+ color: #fff;
+ }
+ .table-hover tbody tr:hover {
+ cursor: pointer;
background-color: #f8f9fa;
}
- .sortable i {
- margin-left: 5px;
- color: #6c757d;
+ @media (max-width: 576px) {
+ .table {
+ font-size: 0.75rem;
+ }
+ .table thead th {
+ font-size: 0.75rem;
+ }
+ .table th, .table td {
+ padding: 0.3rem;
+ }
+ .btn-sm {
+ padding: 0.2rem 0.4rem;
+ font-size: 0.75rem;
+ }
+ .input-group-sm>.form-control {
+ font-size: 0.75rem;
+ }
+ .pagination-sm .page-link {
+ padding: 0.2rem 0.4rem;
+ font-size: 0.75rem;
+ }
+ .table td:nth-child(6) {
+ max-width: 150px;
+ }
+ .form-control, .form-select {
+ font-size: 0.85rem;
+ }
}
- .clickable-row:hover {
- background-color: #f1f1f1;
- cursor: pointer;
- }
- .view-btn { border-color: #0d6efd; color: #0d6efd; }
- .view-btn:hover { background-color: #0d6efd; color: #fff; }
- .edit-btn { border-color: #ffc107; color: #ffc107; }
- .edit-btn:hover { background-color: #ffc107; color: #fff; }
- .delete-btn { border-color: #dc3545; color: #dc3545; }
- .delete-btn:hover { background-color: #dc3545; color: #fff; }
\ No newline at end of file
+ renderPagination();
+
+
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index c1059f3..0164a50 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -189,7 +189,7 @@ Route::get('/terms-and-privacy/{uuid}', [TermsAndPrivacyController::class, 'show
Route::get('/terms-and-privacy/{uuid}/edit', [TermsAndPrivacyController::class, 'edit'])->name('terms-and-privacy.edit');
Route::put('/terms-and-privacy/{uuid}', [TermsAndPrivacyController::class, 'update'])->name('terms-and-privacy.update');
Route::delete('/terms-and-privacy/{uuid}', [TermsAndPrivacyController::class, 'destroy'])->name('terms-and-privacy.destroy');
-Route::delete('/terms-and-privacy/batch-delete', [TermsAndPrivacyController::class, 'batchDelete'])->name('terms-and-privacy.batchDelete');
+Route::post('terms-and-privacy/batchDelete', [TermsAndPrivacyController::class, 'batchDelete'])->name('terms-and-privacy.batchDelete');
//Card Types
Route::get('/card-types', [CardTypeController::class, 'index'])->name('card-types');