20 içinde sonra 'status' hala 'pending' (onay bekliyor) durumundaysa, otomatik olarak 'rejected' (reddedildi) olarak değiştirmesini istiyorum.
Kısacası karşı taraf yani rez. sağlayıcı 20 saniye içerisinde rezervasyon talebini kabul etmezse otomatik olarak iptal edilmesini istiyorum(sql'de status tablosunda değer yukardaki gibi değişecek sadece). Bunu kodla nasıl yapabilirim? php bilgim az buna göre açıklarsanız veya eklerseniz çok sevinirim. Şimdiden teşekkürler.
Paylaşacağım kod 70 satır olacak kusura bakmayın

if($data['status'] === 'hold'){
if($bookingdata->start_at == null && $bookingdata->end_at == null){
$duration_diff = $data['duration_diff'];
$data['duration_diff'] = $duration_diff;
}else{
if($bookingdata->status == $data['status']){
$booking_start_date = $bookingdata->start_at;
$request_start_date = $data['start_at'];
if($request_start_date > $booking_start_date){
$msg = __('messages.already_in_status',[ 'status' => $data['status'] ] );
return comman_message_response($msg);
}
}else{
$duration_diff = $bookingdata->duration_diff;
if($bookingdata->start_at != null && $bookingdata->end_at != null){
$new_diff = $data['duration_diff'];
}else{
$new_diff = $data['duration_diff'];
}
$data['duration_diff'] = $duration_diff + $new_diff;
}
}
}
if($data['status'] === 'completed'){
$duration_diff = $bookingdata->duration_diff;
$new_diff = $data['duration_diff'];
$data['duration_diff'] = $duration_diff + $new_diff;
}
if($bookingdata->status != $data['status']) {
$activity_type = 'update_booking_status';
}
if($data['status'] == 'cancelled'){
$activity_type = 'cancel_booking';
}
if($data['status'] == 'rejected'){
if($bookingdata->handymanAdded()->count() > 0){
$assigned_handyman_ids = $bookingdata->handymanAdded()->pluck('handyman_id')->toArray();
$bookingdata->handymanAdded()->delete();
$data['status'] = 'accept';
}
// $activity_type = 'reject_booking';
}
if( $timediff > 7200 ) { // 7200 seconds is 2 hours
// do stuff;
}
if($data['status'] == 'accept'){
$provider_id = $bookingdata->provider_id ? $bookingdata->provider_id :auth()->user()->id;
$provider_wallet = Wallet::where('user_id',$provider_id)->first();
if($provider_wallet){
$amount = $provider_wallet->amount;
if($amount < 0 || $amount < $bookingdata->amount){
$message = __('messages.wallent_balance_error');
$status_code = 400;
return comman_message_response($message,$status_code);
}
}
}
$data['reason'] = isset($data['reason']) ? $data['reason'] : null;
$old_status = $bookingdata->status;
$bookingdata->update($data);
if($old_status != $data['status'] ){
$bookingdata->old_status = $old_status;
$activity_data = [
'activity_type' => $activity_type,
'booking_id' => $id,
'booking' => $bookingdata,
];
saveBookingActivity($activity_data);
}