Fixed major bugs

This commit is contained in:
m.razaghi
2026-07-09 19:11:39 +03:30
parent 71dc7da8a4
commit 71a6f683a7
4 changed files with 90 additions and 8 deletions

View File

@@ -123,6 +123,34 @@ class BylawApiController extends Controller
return $this->success($responseData, 'Success', 'Search Results Fetched'); return $this->success($responseData, 'Success', 'Search Results Fetched');
} }
public function fast_search(Request $request)
{
$searchTerm = $request->input('search');
$query = BylawDocument::with(['category', 'approvalAuthority', 'promulgationAuthority'])
->where('is_published', true);
if (!empty($searchTerm)) {
$query->where(function ($q) use ($searchTerm) {
$q->where('title', 'LIKE', "%{$searchTerm}%")
->orWhere('description', 'LIKE', "%{$searchTerm}%")
->orWhere('promulgation_number', 'LIKE', "%{$searchTerm}%")
->orWhere('official_gazette_number', 'LIKE', "%{$searchTerm}%");
});
}
$count = $query->count();
// Limit to 5 results for fast search dropdown
$items = $query->orderBy('approval_date', 'desc')->take(5)->get()->map(function ($item) {
return $this->formatBylaw($item);
});
return $this->success([
'items' => $items,
'count' => $count
], 'Success', 'Fast Search Results');
}
public function pager($id) public function pager($id)
{ {
$current = BylawDocument::with(['category', 'approvalAuthority', 'promulgationAuthority']) $current = BylawDocument::with(['category', 'approvalAuthority', 'promulgationAuthority'])

View File

@@ -96,6 +96,31 @@ class JudicialPrecedentApiController extends Controller
return $this->success($responseData, 'Success', 'Search Results Fetched'); return $this->success($responseData, 'Success', 'Search Results Fetched');
} }
public function fast_search(Request $request)
{
$searchTerm = $request->input('search');
$query = JudicialPrecedent::query();
if (!empty($searchTerm)) {
$query->where(function ($q) use ($searchTerm) {
$q->where('ruling_number', 'LIKE', "%{$searchTerm}%")
->orWhere('subject', 'LIKE', "%{$searchTerm}%")
->orWhere('full_text', 'LIKE', "%{$searchTerm}%");
});
}
$count = $query->count();
// Limit to 5 results for fast search dropdown
$items = $query->orderBy('ruling_date', 'desc')->take(5)->get()->map(function ($item) {
return $this->formatItem($item);
});
return $this->success([
'items' => $items,
'count' => $count
], 'Success', 'Fast Search Results');
}
public function pager($id) public function pager($id)
{ {
$current = JudicialPrecedent::find($id); $current = JudicialPrecedent::find($id);

View File

@@ -97,6 +97,32 @@ class LegalOpinionApiController extends Controller
return $this->success($responseData, 'Success', 'Search Results Fetched'); return $this->success($responseData, 'Success', 'Search Results Fetched');
} }
public function fast_search(Request $request)
{
$searchTerm = $request->input('search');
$query = LegalOpinion::query();
if ($request->filled('search')) {
$query->where(function ($q) use ($searchTerm) {
$q->where('opinion_number', 'LIKE', "%{$searchTerm}%")
->orWhere('subject', 'LIKE', "%{$searchTerm}%")
->orWhere('full_text', 'LIKE', "%{$searchTerm}%")
->orWhere('issuing_authority', 'LIKE', "%{$searchTerm}%");
});
}
$count = $query->count();
// Limit to 5 results for fast search dropdown
$items = $query->orderBy('opinion_date', 'desc')->take(5)->get()->map(function ($item) {
return $this->formatItem($item);
});
return $this->success([
'items' => $items,
'count' => $count
], 'Success', 'Fast Search Results');
}
public function pager($id) public function pager($id)
{ {
$current = LegalOpinion::find($id); $current = LegalOpinion::find($id);

View File

@@ -25,7 +25,6 @@ Route::prefix('v1')->group(function () {
Route::post('verify', [AuthController::class, 'verify']); Route::post('verify', [AuthController::class, 'verify']);
Route::post('version', [VersionController::class, 'index']); Route::post('version', [VersionController::class, 'index']);
Route::post('/payment/callback', [SubscribePlanController::class, 'paymentCallback'])->name('payment.callback'); Route::post('/payment/callback', [SubscribePlanController::class, 'paymentCallback'])->name('payment.callback');
}); });
Route::prefix('v1')->middleware('auth:sanctum')->group(function () { Route::prefix('v1')->middleware('auth:sanctum')->group(function () {
@@ -35,7 +34,7 @@ Route::prefix('v1')->middleware('auth:sanctum')->group(function () {
Route::get('art', [ArtController::class, 'index']); Route::get('art', [ArtController::class, 'index']);
Route::get('categories', [CategoriesController::class, 'index']); Route::get('categories', [CategoriesController::class, 'index']);
Route::post('art/search', [ArtController::class, 'search']); Route::post('art/search', [ArtController::class, 'search']);
Route::post('fast-search', [ArtController::class, 'fash_search']); Route::post('fast-search', [ArtController::class, 'fash_search']); // Legacy Art fast search
Route::post('art/note', [NoteController::class, 'create']); Route::post('art/note', [NoteController::class, 'create']);
Route::put('art/note/{id}', [NoteController::class, 'update']); Route::put('art/note/{id}', [NoteController::class, 'update']);
Route::delete('art/note/{id}', [NoteController::class, 'destroy']); Route::delete('art/note/{id}', [NoteController::class, 'destroy']);
@@ -71,25 +70,29 @@ Route::prefix('v1')->middleware('auth:sanctum')->group(function () {
Route::post('suggestions', [SuggestionController::class, 'index']); Route::post('suggestions', [SuggestionController::class, 'index']);
// Judicial Precedents
Route::get('judicial-precedents/categories', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'categories']); Route::get('judicial-precedents/categories', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'categories']);
Route::get('judicial-precedents', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'index']); Route::get('judicial-precedents', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'index']);
Route::get('judicial-precedents/{id}/pager', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'pager']); Route::get('judicial-precedents/{id}/pager', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'pager']);
Route::post('judicial-precedents/search', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'search']); // NEW Route::post('judicial-precedents/search', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'search']);
Route::post('judicial-precedents/fast-search', [\App\Http\Controllers\api\JudicialPrecedentApiController::class, 'fast_search']); // NEW
// Legal Opinions
Route::get('legal-opinions/categories', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'categories']); Route::get('legal-opinions/categories', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'categories']);
Route::get('legal-opinions', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'index']); Route::get('legal-opinions', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'index']);
Route::get('legal-opinions/{id}/pager', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'pager']); Route::get('legal-opinions/{id}/pager', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'pager']);
Route::post('legal-opinions/search', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'search']); // NEW Route::post('legal-opinions/search', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'search']);
Route::post('legal-opinions/fast-search', [\App\Http\Controllers\api\LegalOpinionApiController::class, 'fast_search']); // NEW
// Bylaws
Route::get('bylaws/categories', [\App\Http\Controllers\api\BylawApiController::class, 'categories']); Route::get('bylaws/categories', [\App\Http\Controllers\api\BylawApiController::class, 'categories']);
Route::get('bylaws/authorities', [\App\Http\Controllers\api\BylawApiController::class, 'authorities']); Route::get('bylaws/authorities', [\App\Http\Controllers\api\BylawApiController::class, 'authorities']);
Route::get('bylaws', [\App\Http\Controllers\api\BylawApiController::class, 'index']); Route::get('bylaws', [\App\Http\Controllers\api\BylawApiController::class, 'index']);
Route::get('bylaws/{id}/pager', [\App\Http\Controllers\api\BylawApiController::class, 'pager']); Route::get('bylaws/{id}/pager', [\App\Http\Controllers\api\BylawApiController::class, 'pager']);
Route::post('bylaws/search', [\App\Http\Controllers\api\BylawApiController::class, 'search']); Route::post('bylaws/search', [\App\Http\Controllers\api\BylawApiController::class, 'search']);
Route::post('bylaws/fast-search', [\App\Http\Controllers\api\BylawApiController::class, 'fast_search']); // NEW
// Global Search
Route::post('global-search', [\App\Http\Controllers\api\GlobalSearchApiController::class, 'search']); Route::post('global-search', [\App\Http\Controllers\api\GlobalSearchApiController::class, 'search']);
Route::post('global-search/fast-search', [\App\Http\Controllers\api\GlobalSearchApiController::class, 'fast_search']); // NEW
}); });