input('table'); $column = $request->input('column'); $row_id = $request->input('row_id'); $file_name = $request->input('file_name'); $query = DocumentHistory::query(); if ($file_name) { // File name'e göre arama $base_name = str_replace(".pdf", "", $file_name); // Sadece tam dosya adlarını veya '_' ile ayrılmış arşiv adlarını (örn: _2025_08_30...) eşleştir $query->where(function ($q) use ($base_name, $file_name) { $q->where('file_name', $file_name) ->orWhere('file_name', 'LIKE', $base_name . '_%.pdf'); }); } elseif ($table && $row_id) { // Table ve row_id'ye göre dosyayı bulup arama yap try { $row = \Illuminate\Support\Facades\DB::table($table)->find($row_id); if ($row) { $filenames = []; if ($column && isset($row->$column)) { // Belirli bir kolon varsa $value = $row->$column; if ($value && is_string($value)) { $filenames[] = basename($value); } } else { // Kolon belirtilmemişse, olası dosya kolonlarını tara foreach ((array) $row as $key => $value) { if ($value && is_string($value) && preg_match('/\.(pdf|xls|xlsx|doc|docx|jpg|png|jpeg)$/i', $value)) { $filenames[] = basename($value); } } } if (!empty($filenames)) { $query->whereIn('file_name', $filenames); } else { // Dosya bulunamadıysa boş dön return response()->json([]); } } else { return response()->json([]); } } catch (\Exception $e) { // Tablo hatası vs. return response()->json([]); } } else { // Hiçbir geçerli filtre yoksa boş döndür return response()->json([]); } $documentHistory = $query->orderBy('action_date', 'DESC') ->get() ->map(function ($item) { return [ 'id' => $item->id, 'user_name' => $item->user_name, 'action' => $item->action, 'file_name' => $item->file_name, 'file_size' => $item->file_size, 'moved_from' => $item->moved_from, 'moved_to' => $item->moved_to, 'action_date' => $item->action_date, 'file_path' => $item->file_path, 'notes' => $item->notes ]; }); return response()->json($documentHistory); } }