98 lines
2.9 KiB
PHP
98 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\User\Controllers;
|
|
|
|
use App\Enums\BusinessTypeEnum;
|
|
use App\Facades\DataTable\DataTableFacade;
|
|
use App\Facades\File\FileFacade;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\UserGateway;
|
|
use App\Traits\ApiResponse;
|
|
use App\User\Requests\Gateway\StoreRequest;
|
|
use App\User\Requests\Gateway\UpdateRequest;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Throwable;
|
|
|
|
class GatewayManagementController extends Controller
|
|
{
|
|
use ApiResponse;
|
|
|
|
public function index(Request $request)
|
|
{
|
|
return DataTableFacade::run(
|
|
UserGateway::query()->where('user_id', '=', Auth::guard('web')->id()),
|
|
$request,
|
|
allowedFilters: ['*'],
|
|
allowedSortings: ['*'],
|
|
allowedSelects: ['id', 'name', 'domain', 'tax_id', 'bank_name', 'account_holder', 'iban', 'business_type_id', 'business_type_name'],
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function store(StoreRequest $request): JsonResponse
|
|
{
|
|
$user = Auth::guard('web')->user();
|
|
|
|
$logo = $request->has('logo') ? FileFacade::save($request->file('logo'), "{$user->id}") : null;
|
|
|
|
DB::transaction(function () use ($user, $logo, $request) {
|
|
UserGateway::query()->create([
|
|
'user_id' => $user->id,
|
|
'username' => $user->username,
|
|
'name' => $request->name,
|
|
'domain' => $request->domain,
|
|
'tax_id' => $request->tax_id,
|
|
'bank_name' => $request->bank_name,
|
|
'account_holder' => $request->account_holder,
|
|
'iban' => $request->iban,
|
|
'business_type_id' => $request->business_type_id,
|
|
'business_type_name' => BusinessTypeEnum::name($request->business_type_id),
|
|
'logo' => $logo,
|
|
]);
|
|
|
|
$user->update(['authority_level' => 1]);
|
|
});
|
|
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
public function show(UserGateway $gateway): JsonResponse
|
|
{
|
|
return $this->successResponse($gateway);
|
|
}
|
|
|
|
public function update(UpdateRequest $request, UserGateway $gateway): JsonResponse
|
|
{
|
|
$logo = null;
|
|
$user = Auth::guard('web')->user();
|
|
|
|
if ($request->has('logo'))
|
|
{
|
|
FileFacade::delete($gateway->logo, true);
|
|
$logo = FileFacade::save(request()->file('logo'), "{$user->id}");
|
|
}
|
|
|
|
$gateway->update([
|
|
'name' => $request->name,
|
|
'domain' => $request->domain,
|
|
'business_type_id' => $request->business_type_id,
|
|
'business_type_name' => BusinessTypeEnum::name($request->business_type_id),
|
|
'logo' => $logo,
|
|
]);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
public function destroy(UserGateway $gateway): JsonResponse
|
|
{
|
|
$gateway->delete();
|
|
return $this->successResponse();
|
|
}
|
|
}
|