Files
services_core/app/Http/Controllers/Voucher/VoucherController.php
T
2026-08-01 11:42:42 +07:00

78 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers\Voucher;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Voucher\IndexVoucherRequest;
use App\Http\Requests\Voucher\SaveVoucherLoginPageRequest;
use App\Http\Requests\Voucher\StoreVoucherAgentRequest;
use App\Http\Requests\Voucher\StoreVoucherSaleRequest;
use App\Http\Resources\Voucher\VoucherAgentResource;
use App\Http\Resources\Voucher\VoucherSaleResource;
use App\Models\VoucherAgent;
use App\Models\VoucherSale;
use App\Services\Voucher\VoucherService;
use Illuminate\Http\Request;
class VoucherController extends ApiController
{
public function __construct(protected VoucherService $service) {}
public function sales(IndexVoucherRequest $request)
{
return $this->successPaginated($this->service->sales($request->validated(), $request->user(), $this->tenantId($request)), VoucherSaleResource::class, 'Daftar penjualan voucher berhasil diambil');
}
public function storeSale(StoreVoucherSaleRequest $request)
{
return $this->created(new VoucherSaleResource($this->service->createSale($request->validated(), $request->user(), $this->tenantId($request))), 'Voucher berhasil dibuat');
}
public function showSale(Request $request, VoucherSale $sale)
{
return $this->success(new VoucherSaleResource($this->service->saleDetail($sale, $request->user(), $this->tenantId($request))), 'Detail voucher berhasil diambil');
}
public function agents(IndexVoucherRequest $request)
{
return $this->successPaginated($this->service->agents($request->validated(), $request->user(), $this->tenantId($request)), VoucherAgentResource::class, 'Daftar agen voucher berhasil diambil');
}
public function storeAgent(StoreVoucherAgentRequest $request)
{
return $this->created(new VoucherAgentResource($this->service->saveAgent($request->validated(), $request->user(), $this->tenantId($request))), 'Agen voucher berhasil dibuat');
}
public function updateAgent(StoreVoucherAgentRequest $request, VoucherAgent $agent)
{
return $this->updated(new VoucherAgentResource($this->service->saveAgent($request->validated(), $request->user(), $this->tenantId($request), $agent)), 'Agen voucher berhasil diperbarui');
}
public function destroyAgent(Request $request, VoucherAgent $agent)
{
$this->service->saveAgent([...$agent->toArray(), 'status' => 'inactive'], $request->user(), $this->tenantId($request), $agent);
return $this->deleted('Agen voucher berhasil dinonaktifkan');
}
public function options(Request $request)
{
return $this->success($this->service->options((string) $request->route('voucher_scope'), $request->user(), $this->tenantId($request)), 'Opsi voucher berhasil diambil');
}
public function loginPage(Request $request)
{
return $this->success($this->service->loginPage($request->user(), $this->tenantId($request)), 'Setting LoginPage berhasil diambil');
}
public function saveLoginPage(SaveVoucherLoginPageRequest $request)
{
return $this->updated($this->service->saveLoginPage($request->validated(), $request->user(), $this->tenantId($request)), 'Setting LoginPage berhasil disimpan');
}
private function tenantId(Request $request): ?int
{
return $request->attributes->get('tenant_id');
}
}