Untitled
unknown
plain_text
10 months ago
1.4 kB
5
Indexable
<?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
]);
}
}
Editor is loading...
Leave a Comment