Untitled
<?php namespace App\Http\Controllers\Services\Payments; use App\Enums\PaymentProviderEnum; use App\Foundations\PaymentProviders\PaymentProvider; use App\Http\Controllers\Controller; use App\Jobs\SendOrderSlackNotification; use App\Models\Order; use App\Services\OrderService; use App\Services\UserBookService; use Illuminate\Support\Facades\DB; class SessionController extends Controller { public function completed(Order $order) { if ($order->is_completed) { abort(403); } $provider = PaymentProvider::build(PaymentProviderEnum::getFromOrder($order)->value); if (!$provider->isCompleted($order)) { abort(403); } DB::beginTransaction(); $provider->confirm($order); OrderService::build()->complete($order); $userBook = UserBookService::createFormOrder($order); DB::commit(); SendOrderSlackNotification::dispatch($order); return redirect()->route('my.books.show', $userBook->slug); } public function canceled(Order $order) { if ($order->is_completed) { abort(403); } if ($order->is_cancelled) { abort(403); } OrderService::build()->cancel($order); return redirect()->route('books.child.preview.buy', [ "book" => $order->book->slug, "prospect" => $order->prospect_id ]); } }
Leave a Comment