#!/bin/bash

# Define the file to update
FILE="CustomerMngController.php"

# Backup the original file
cp "$FILE" "${FILE}.bak"

echo "Updating Laravel Controller: $FILE"

# 1. Replace date() with Carbon\Carbon
sed -i "/namespace/a use Carbon\\Carbon;" "$FILE"
sed -i "s/date('Y-m-d')/Carbon::today()/g" "$FILE"
sed -i "s/date('Y-m-d', strtotime(\(.*\)))/Carbon::parse(\1)->toDateString()/g" "$FILE"
sed -i "s/strtotime(\(.*\))/Carbon::parse(\1)/g" "$FILE"

# 2. Replace toastr() with php-flasher
sed -i "s/toastr()->success/flasher('success')->addFlash/g" "$FILE"
sed -i "s/toastr()->error/flasher('error')->addFlash/g" "$FILE"

# 3. Replace direct instantiation of controllers with dependency injection
sed -i "s/new ChatBotController()/\$ctrl/g" "$FILE"
sed -i "s/new ClientMngController()/\$client/g" "$FILE"
sed -i "s/public function monitor_customer()/public function monitor_customer(ChatBotController \$ctrl, ClientMngController \$client)/g" "$FILE"

# 4. Replace Str::contains logic
sed -i "s/\\\\Str::contains(\(.*\), \(.*\)) != 1/!Str::contains(\1, \2)/g" "$FILE"

# 5. Update Validator usage
sed -i "s/Validator::make(\$request->all(), \(.*\))->fails()/\$request->validate(\1)/g" "$FILE"

# 6. Replace \Log::info() with Log facade
sed -i "s/\\\\Log::info/Log::info/g" "$FILE"

# 7. Add use statements for missing facades
sed -i "/namespace/a use Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Support\\Facades\\Str;" "$FILE"

# 8. Replace DataTables with updated syntax (if applicable)
sed -i "s/return DataTables::of/return \Yajra\\DataTables\\Facades\\DataTables::of/g" "$FILE"

# Print completion message
echo "Updates completed. Backup saved as ${FILE}.bak."
