%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Http/Controllers/Booking/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/app/Http/Controllers/Booking/CancelBooking.php |
<?php namespace App\Http\Controllers\Booking; use App\Models\Booking; use App\Jobs\RefundPayment; use Illuminate\Support\Facades\Mail; use App\Mail\Clients\CancelledBooking; use App\Mail\Therapist\CancelledBooking as TherapistCancelledBooking; use App\Notifications\Client\CancelledBooking as ClientCancelledSMS; use App\Notifications\Therapist\CancelledBooking as TherapistCancelledSMS; use App\Http\Resources\BookingResource; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class CancelBooking extends Controller { /** * Handle the incoming request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function __invoke($id, Request $request) { $booking = Booking::where('id', $id) ->where('user_id', auth()->id()) ->orWhere('user_id', auth()->user()->therapist ? auth()->user()->therapist->id : null) ->firstOrFail(); if (auth()->user()->hasRole('therapist') || $booking->start_date >= now()->addHour(48)) { $booking->status = array_search('Cancelled', Booking::STATUSES); $booking->save(); RefundPayment::dispatch($booking->payment); // Send Notification Emails Mail::to($booking->user)->send(new CancelledBooking($booking)); Mail::to($booking->therapist->user)->send(new TherapistCancelledBooking($booking)); // Send SMS $booking->user->notify(new ClientCancelledSMS($bookings)); $booking->therapist->user->notify(new TherapistCancelledSMS($bookings)); return new BookingResource($booking); } return response()->json('You cannot cancel this booking.', 422); } }