where('component_code', $componentCode); $hasFilter = true; } else if(!empty($lineCode)) { // component_code boşsa, line_code ile drawing_number'a göre ara $query->where('drawing_number', $lineCode); $hasFilter = true; } // RU Material Group filtresi (opsiyonel) if(!empty($ruMaterialGroup)) { $ruGroups = explode(",", $ruMaterialGroup); $materials = db("materials")->whereIn("ru_group", $ruGroups)->select("steel_grade")->get()->pluck("steel_grade")->toArray(); if(count($materials) > 0) { $query = $query->whereIn("material", $materials); } } // Total count for pagination $totalCount = $query->count(); $filterFailed = false; // Eğer filtre uygulandı ama sonuç bulunamadıysa, filtresiz tüm veriyi getir if($hasFilter && $totalCount === 0) { $query = IncomingControl::query(); $totalCount = $query->count(); $filterFailed = true; // Filtre uygulanamadı, tüm veri gösteriliyor } // Sıralama: En son girilen önce, sonra RFI tarihine göre // Pagination uygula $incomingData = $query ->orderBy('id', 'DESC') // En son girilen önce ->orderBy('rfi_date', 'ASC') // RFI tarihine göre sıralı ->skip($skip) ->take($take) ->get(); // Verileri formatla ve renklendirme flag'i ekle foreach($incomingData as $item) { $row = [ 'id' => $item->id, 'component_code' => $item->component_code, 'rfi' => $item->rfi, 'rfi_date' => $item->rfi_date, 'description_en' => $item->description_en, 'description_ru' => $item->description_ru, 'project' => $item->project, // Zone olarak gösterilecek 'drawing_number' => $item->drawing_number, 'certificate_no' => $item->certificate_no, 'certificate_date' => $item->certificate_date, 'heat_number' => $item->heat_number, 'received_quantity' => $item->received_quantity, 'constructor' => $item->constructor, 'inspection_photo_file' => $item->inspection_photo_file, 'email_tq_file' => $item->email_tq_file, 'email_tq_number' => $item->email_tq_number, 'osd_defect_akt_file' => $item->osd_defect_akt_file, 'osd_report_date' => $item->osd_report_date, 'osd_report_no' => $item->osd_report_no, ]; // RFI date > welding_date kontrolü için flag $row['highlight'] = false; if(!empty($item->rfi_date) && !empty($weldingDate)) { $rfiDate = strtotime($item->rfi_date); $weldDate = strtotime($weldingDate); if($rfiDate > $weldDate) { $row['highlight'] = true; } } $response[] = $row; } // JSON response döndür - pagination için data ve totalCount döndür echo json_encode([ 'data' => $response, 'totalCount' => $totalCount, 'filterFailed' => $filterFailed ]); exit();