File: //home/marketing.cfbon.ru/public_html/app/Http/Controllers/Loyalty/ScoresController.php
<?php
namespace App\Http\Controllers\Loyalty;
use App\Enums\ScopesAction;
use App\Http\Controllers\Controller;
use App\Http\Requests\Loyalty\ScoresRequest;
use App\Models\Guest;
use App\Services\IicoCardService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class ScoresController extends Controller
{
public function index() : View
{
$userData = session('userData');
$operationData = session('operationData');
return view('loyalty.scores.index', [
'scopesActions' => collect(ScopesAction::cases())
->mapWithKeys(fn($action) => [$action->value => $action->label()]),
'userData' => $userData,
'operationData' => $operationData,
]);
}
public function makeTransaction(Request $request, IicoCardService $iicoCardService): RedirectResponse
{
$actions = $request->input('actions') . 'Bonus';
try {
$iicoCardService->connect();
if (method_exists($iicoCardService, $actions)) $iicoCardService->$actions($request->input('card_id'), $request->input('scopes'), 'тестовое');
return redirect()->route('loyalty.scores.index')->with('success', 'Транзакция успешно завершена');
} catch (\Exception $e) {
return redirect()->route('loyalty.scores.index')->with('error', $e->getMessage());
}
}
public function verificationUser(ScoresRequest $request) : RedirectResponse
{
$user = Guest::where('phone', $request->input('phoneOrCard'))
->orWhere('card_number', $request->input('phoneOrCard'))
->first();
if ($user) {
return redirect()->route('loyalty.scores.showUserInformationForm')->with('userData', $user)->with('operationData', $request->validated());
} else {
return redirect()->route('loyalty.scores.index')->with('error', 'Пользователь не найден');
}
}
public function showUserInformationForm() : RedirectResponse|View
{
$userData = session('userData');
$operationData = session('operationData');
if (!$userData || !$operationData) return redirect()->route('loyalty.scores.index')->with('error', 'Сессия истекла');
$operationType = ScopesAction::tryFrom(($operationData['actions'] ?? ''))->label();
if (!$operationType) return redirect()->route('loyalty.scores.index')->with('error', 'Не задан тип операции');
return view('loyalty.scores.userDataInformation', [
'userData' => $userData,
'operationData' => $operationData,
'operationType' => $operationType,
]);
}
}