input('rollback_ids', []); $singleId = get("rollback"); // If rollback_ids is provided (bulk operation), use it; otherwise use single ID $isBulkOperation = !empty($rollbackIds) && is_array($rollbackIds); if($isBulkOperation) { // BULK ROLLBACK OPERATION $totalProcessed = 0; $totalAffectedRows = 0; $constructionUpdatedCount = 0; $paintFollowUpUpdatedCount = 0; $statusChanges = []; $processedSpools = []; foreach($rollbackIds as $rollbackId) { // Get the initial data to get iso_number and spool_number $initialData = db("weld_logs")->where("id", $rollbackId)->first(); if(!$initialData) { continue; // Skip if record not found } // Get all records with same iso_number and spool_number $allRecords = db("weld_logs") ->where("iso_number", $initialData->iso_number) ->where("spool_number", $initialData->spool_number) ->get(); // Process each record individually foreach($allRecords as $data) { $prevStatus = $data->spool_status; $updateData = null; $nowStatus = null; // Determine rollback status for each individual record if($data->spool_status == "Completed") { if($data->paint_release_no != "") { $nowStatus = "Paint"; $updateData = [ "spool_status" => $nowStatus, "paint_release_date" => null, "paint_release_no" => null, "spool_paint_check" => null, "register_date" => null, "register_paint_no" => null, ]; } else { $nowStatus = "NDT Release"; $updateData = [ "spool_status" => $nowStatus, "ndt_release_date" => null, "ndt_release_no" => null, "ndt_release_check" => null, ]; } } elseif($data->spool_status == "Paint") { $nowStatus = "NDT Release"; $updateData = [ "spool_status" => $nowStatus, "ndt_release_date" => null, "ndt_release_no" => null, "ndt_release_check" => null, ]; } elseif($data->spool_status == "NDT Release") { $nowStatus = "Spool Release"; $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "spool_ndt_check_date" => null, ]; } elseif($data->spool_status == "Spool Release") { if(!rejected_date($data->welding_date)) { $nowStatus = "Spool Release"; } else { $nowStatus = "On Going"; } $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "ndt_release_check" => null, "clearance_date" => null, "clearance_no" => null ]; } elseif($data->spool_status == "QC") { $nowStatus = "Spool Release"; $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "ndt_release_check" => null, "clearance_date" => null, "clearance_no" => null ]; } // Apply update for this specific record if($updateData) { $affectedRows = db("weld_logs") ->where("id", $data->id) ->update($updateData); $totalAffectedRows += $affectedRows; // Track status changes for reporting if(!isset($statusChanges[$prevStatus])) { $statusChanges[$prevStatus] = $nowStatus; } // Handle construction paint logs deletion for each record if($data->spool_status == "Completed" || $data->spool_status == "Paint") { // Construction paint logs'daki date sütunlarını null yap $constructionUpdatedCount += db("construction_paint_logs") ->where("iso_drawings", $data->iso_number) ->where("spool", $data->spool_number) ->where("painting_system_type_1", $data->painting_cycle) ->update([ 'dn_1' => null, 'dn_2' => null, 'dn_3' => null, 'line_pipe_mm_1' => null, 'line_pipe_mm_2' => null, 'cutting_mm' => null, 'total_line_mm' => null, 'elbow_pcs' => null, 'elbow_45_pcs' => null, 'elbow_m2' => null, 'tee_pcs' => null, 'tee_m2' => null, 'reductions_pcs' => null, 'reductions_m2' => null, 'vent_pcs' => null, 'vent_m2' => null, 'cap_pcs' => null, 'cap_m2' => null, 'flange_pcs' => null, 'flange_m2' => null, 'fittings_m2' => null, 'pipe_m2' => null, 'total_m2' => null, 'first_layer' => null, 'second_layer' => null, 'third_layer' => null, 'total_layer' => null, 'construction_report_no' => null, 'blasting_date' => null, 'blasting_finish_date' => null, 'blasting_rfi_no' => null, 'painting_date_1' => null, 'painting_finish_date_1' => null, 'rfi_date_1' => null, 'rfi_no_1' => null, 'painting_date_2' => null, 'painting_finish_date_2' => null, 'rfi_date_2' => null, 'rfi_no_2' => null, 'painting_date_3' => null, 'painting_finish_date_3' => null, 'rfi_date_3' => null, 'rfi_no_3' => null ]); } $whereData = [ 'iso_number' => $data->iso_number, 'spool_no_joint_no' => $data->spool_number, 'cycle' => $data->painting_cycle ]; // Paint follow ups'daki date sütunlarını null yap $paintFollowUpUpdatedCount += db("paint_follow_ups") ->where($whereData) ->update([ 'incoming_control_akt_no_1' => null, 'incoming_control_rfi_no_1' => null, 'akt_date_1' => null, 'standartgost_iso_en_1' => null, 'certificate_passport_no_1' => null, 'certificate_passport_date_1' => null, 'incoming_control_akt_no_2' => null, 'incoming_control_rfi_no_2' => null, 'akt_date_2' => null, 'standartgost_iso_en_2' => null, 'certificate_passport_no_2' => null, 'certificate_passport_date_2' => null, 'incoming_control_akt_no_3' => null, 'incoming_control_rfi_no_3' => null, 'akt_date_3' => null, 'standartgost_iso_en_3' => null, 'certificate_passport_no_3' => null, 'certificate_passport_date_3' => null, 'surface_preparation_equipment' => null, 'surface_roughness' => null, 'standartgost_iso_en_cleaning' => null, 'protocol_no_cleaning' => null, 'protocol_date_cleaning' => null, 'surface_preparation_rfi_no' => null, 'substrate_temprature' => null, 'ambient_temprature' => null, 'primer_measured_thickness_1' => null, 'primer_coating_protocol_no' => null, 'primer_coating_protocol_date' => null, 'primer_coating_start_date' => null, 'primer_coating_finish_date' => null, 'primer_coating_rfi_no' => null, 'primer_coating_rfi_date_1' => null, 'volume_1' => null, 'intermediate_measured_thickness_2' => null, 'intermediate_coating_protocol_no_2' => null, 'intermediate_coating_protocol_date2' => null, 'start_intermediate_date2' => null, 'finish_intermediate_date2' => null, 'intermediate_coating_rfi_no2' => null, 'intermediate_coating_rfi_date_3' => null, 'volume_2' => null, 'final_coating_measured_thickness_3' => null, 'final_coating_protocol_no_3' => null, 'final_coatingprotocol_date_3' => null, 'final_coat_start_date3' => null, 'final_coat_finish_date3' => null, 'final_coating_rfi_no3' => null, 'final_coating_rfi_date_3' => null, 'volume_3' => null, 'total_volume' => null, 'total_thickness' => null, 'brend_name' => null, 'passport_no' => null, 'passport_date' => null ]); } } // Track processed spools $processedSpools[] = $initialData->iso_number . ' - ' . $initialData->spool_number; $totalProcessed++; // Run spool status changer for each processed spool include(resource_path('views/cron/spool-status-changer.blade.php')); } // Generate status change summary $statusChangeText = ""; foreach($statusChanges as $prevStatus => $nowStatus) { $statusChangeText .= $prevStatus . " ⏩ " . $nowStatus . "
"; } if($totalAffectedRows > 0) { // Dispatch cache blade views dispatchCacheBladeViews(); $spoolList = implode('
', $processedSpools); echo __("Bulk Rollback Successful!

Processed Spools (:processed_count):
:spool_list

Status Changes:
:status_changes
(:count weld log rows affected)
Construction data updated: :construction_count rows
Paint follow up data updated: :paint_followup_count rows", [ 'processed_count' => $totalProcessed, 'spool_list' => $spoolList, 'status_changes' => $statusChangeText, 'count' => $totalAffectedRows, 'construction_count' => $constructionUpdatedCount, 'paint_followup_count' => $paintFollowUpUpdatedCount ]); } else { echo __("No records were updated. Please check your selection."); } } else { // SINGLE ROLLBACK OPERATION (Original Code) // Get the initial data to get iso_number and spool_number $initialData = db("weld_logs")->where("id", $singleId)->first(); // Get all records with same iso_number and spool_number $allRecords = db("weld_logs") ->where("iso_number", $initialData->iso_number) ->where("spool_number", $initialData->spool_number) ->get(); $totalAffectedRows = 0; $constructionUpdatedCount = 0; $paintFollowUpUpdatedCount = 0; $statusChanges = []; // Process each record individually foreach($allRecords as $data) { $prevStatus = $data->spool_status; $updateData = null; $nowStatus = null; // Determine rollback status for each individual record if($data->spool_status == "Completed") { if($data->paint_release_no != "") { $nowStatus = "Paint"; $updateData = [ "spool_status" => $nowStatus, "paint_release_date" => null, "paint_release_no" => null, "spool_paint_check" => null, "register_date" => null, "register_paint_no" => null, ]; } else { $nowStatus = "NDT Release"; $updateData = [ "spool_status" => $nowStatus, "ndt_release_date" => null, "ndt_release_no" => null, "ndt_release_check" => null, ]; } } elseif($data->spool_status == "Paint") { $nowStatus = "NDT Release"; $updateData = [ "spool_status" => $nowStatus, "ndt_release_date" => null, "ndt_release_no" => null, "ndt_release_check" => null, ]; } elseif($data->spool_status == "NDT Release") { $nowStatus = "Spool Release"; $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "spool_ndt_check_date" => null, ]; } elseif($data->spool_status == "Spool Release") { if(!rejected_date($data->welding_date)) { $nowStatus = "Spool Release"; } else { $nowStatus = "On Going"; } $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "ndt_release_check" => null, "clearance_date" => null, "clearance_no" => null ]; } elseif($data->spool_status == "QC") { $nowStatus = "Spool Release"; $updateData = [ "spool_status" => $nowStatus, "spool_ndt_check" => null, "spool_paint_check" => null, "spool_ndt_check_no" => null, "ndt_release_check" => null, "clearance_date" => null, "clearance_no" => null ]; } // Apply update for this specific record if($updateData) { $affectedRows = db("weld_logs") ->where("id", $data->id) ->update($updateData); $totalAffectedRows += $affectedRows; // Track status changes for reporting if(!isset($statusChanges[$prevStatus])) { $statusChanges[$prevStatus] = $nowStatus; } // Handle construction paint logs deletion for each record if($data->spool_status == "Completed" || $data->spool_status == "Paint") { // Construction paint logs'daki date sütunlarını null yap (blasting_date boş olanları) $constructionUpdatedCount += db("construction_paint_logs") ->where("iso_drawings", $data->iso_number) ->where("spool", $data->spool_number) ->where("painting_system_type_1", $data->painting_cycle) ->update([ // All construction paint log fields are set to null for rollback operation 'dn_1' => null, 'dn_2' => null, 'dn_3' => null, 'line_pipe_mm_1' => null, 'line_pipe_mm_2' => null, 'cutting_mm' => null, 'total_line_mm' => null, 'elbow_pcs' => null, 'elbow_45_pcs' => null, 'elbow_m2' => null, 'tee_pcs' => null, 'tee_m2' => null, 'reductions_pcs' => null, 'reductions_m2' => null, 'vent_pcs' => null, 'vent_m2' => null, 'cap_pcs' => null, 'cap_m2' => null, 'flange_pcs' => null, 'flange_m2' => null, 'fittings_m2' => null, 'pipe_m2' => null, 'total_m2' => null, 'first_layer' => null, 'second_layer' => null, 'third_layer' => null, 'total_layer' => null, 'construction_report_no' => null, 'blasting_date' => null, 'blasting_finish_date' => null, 'blasting_rfi_no' => null, 'painting_date_1' => null, 'painting_finish_date_1' => null, 'rfi_date_1' => null, 'rfi_no_1' => null, 'painting_date_2' => null, 'painting_finish_date_2' => null, 'rfi_date_2' => null, 'rfi_no_2' => null, 'painting_date_3' => null, 'painting_finish_date_3' => null, 'rfi_date_3' => null, 'rfi_no_3' => null ]); } $whereData = [ 'iso_number' => $data->iso_number, 'spool_no_joint_no' => $data->spool_number, 'cycle' => $data->painting_cycle ]; // Paint follow ups'daki date sütunlarını null yap $paintFollowUpUpdatedCount += db("paint_follow_ups") ->where($whereData) ->update([ // All paint follow up date and related fields are set to null for rollback operation 'incoming_control_akt_no_1' => null, 'incoming_control_rfi_no_1' => null, 'akt_date_1' => null, 'standartgost_iso_en_1' => null, 'certificate_passport_no_1' => null, 'certificate_passport_date_1' => null, 'incoming_control_akt_no_2' => null, 'incoming_control_rfi_no_2' => null, 'akt_date_2' => null, 'standartgost_iso_en_2' => null, 'certificate_passport_no_2' => null, 'certificate_passport_date_2' => null, 'incoming_control_akt_no_3' => null, 'incoming_control_rfi_no_3' => null, 'akt_date_3' => null, 'standartgost_iso_en_3' => null, 'certificate_passport_no_3' => null, 'certificate_passport_date_3' => null, 'surface_preparation_equipment' => null, 'surface_roughness' => null, 'standartgost_iso_en_cleaning' => null, 'protocol_no_cleaning' => null, 'protocol_date_cleaning' => null, 'surface_preparation_rfi_no' => null, 'substrate_temprature' => null, 'ambient_temprature' => null, 'primer_measured_thickness_1' => null, 'primer_coating_protocol_no' => null, 'primer_coating_protocol_date' => null, 'primer_coating_start_date' => null, 'primer_coating_finish_date' => null, 'primer_coating_rfi_no' => null, 'primer_coating_rfi_date_1' => null, 'volume_1' => null, 'intermediate_measured_thickness_2' => null, 'intermediate_coating_protocol_no_2' => null, 'intermediate_coating_protocol_date2' => null, 'start_intermediate_date2' => null, 'finish_intermediate_date2' => null, 'intermediate_coating_rfi_no2' => null, 'intermediate_coating_rfi_date_3' => null, 'volume_2' => null, 'final_coating_measured_thickness_3' => null, 'final_coating_protocol_no_3' => null, 'final_coatingprotocol_date_3' => null, 'final_coat_start_date3' => null, 'final_coat_finish_date3' => null, 'final_coating_rfi_no3' => null, 'final_coating_rfi_date_3' => null, 'volume_3' => null, 'total_volume' => null, 'total_thickness' => null, 'brend_name' => null, 'passport_no' => null, 'passport_date' => null ]); } } // Generate status change summary $statusChangeText = ""; foreach($statusChanges as $prevStatus => $nowStatus) { $statusChangeText .= $prevStatus . " ⏩ " . $nowStatus . "
"; } if($totalAffectedRows > 0) { // Dispatch cache blade views dispatchCacheBladeViews(); echo __("Rollback is successful
:iso_number :spool_number
Status Changes:
:status_changes (:count rows affected)
Construction data updated: :construction_count rows
Paint follow up data updated: :paint_followup_count rows", [ 'status_changes' => $statusChangeText, 'count' => $totalAffectedRows, 'construction_count' => $constructionUpdatedCount, 'paint_followup_count' => $paintFollowUpUpdatedCount, 'iso_number' => $initialData->iso_number, 'spool_number' => $initialData->spool_number ]); } else { echo __("You cannot revert this data because no changes were made." ); } } ?> @if(!$isBulkOperation && isset($initialData)) @include("cron.spool-status-changer", ['iso_number' => $initialData->iso_number, 'spool_number' => $initialData->spool_number]) @endif