/
itp_practice
/
itp_backend
Обзор
Документация
Войти
/
itp_practice
/
itp_backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/Http/Controllers/Admin/PurchaseController.php
141 строка
5 KB
vivanenko
refactoring
21 май 2025, 20:24
21 май 2025, 20:24
1a1e745
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers\Admin; use App\DTOs\Admin\PurchaseData; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\PurchaseRequest; use App\Services\Admin\PurchaseService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class PurchaseController extends Controller { public function __construct( private readonly PurchaseService $purchaseService ) {} public function index(Request $request): JsonResponse { $perPage = $request->get('per_page', 15); $page = $request->get('page', 1); $result = $this->purchaseService->getPurchases($perPage, $page); return response()->json([ 'data' => $result['data'], 'meta' => [ 'current_page' => $result['current_page'], 'per_page' => $result['per_page'], 'last_page' => $result['last_page'], 'total' => $result['total'] ] ]); } public function show(int $id): JsonResponse { $purchase = $this->purchaseService->getPurchase($id); if (!$purchase) { return response()->json(['message' => 'Purchase not found'], 404); } return response()->json(['data' => $purchase]); } public function store(PurchaseRequest $request): JsonResponse { try { $data = PurchaseData::fromRequest($request); $purchase = $this->purchaseService->createPurchase($data); return response()->json(['data' => $purchase], 201); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } public function update(PurchaseRequest $request, int $id): JsonResponse { try { $data = PurchaseData::fromRequest($request); $purchase = $this->purchaseService->updatePurchase($id, $data); if (!$purchase) { return response()->json(['message' => 'Purchase not found'], 404); } return response()->json(['data' => $purchase]); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } public function destroy(int $id): JsonResponse { $deleted = $this->purchaseService->deletePurchase($id); if (!$deleted) { return response()->json(['message' => 'Purchase not found'], 404); } return response()->json(null, 204); } public function updateStatus(PurchaseRequest $request, int $id): JsonResponse { try { $data = PurchaseData::fromRequest($request); $updated = $this->purchaseService->updatePurchaseStatus($id, $data->status); if (!$updated) { return response()->json(['message' => 'Purchase not found'], 404); } return response()->json(['message' => 'Purchase status updated successfully']); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } public function updatePaymentDetails(PurchaseRequest $request, int $id): JsonResponse { try { $data = PurchaseData::fromRequest($request); $updated = $this->purchaseService->updatePaymentDetails($id, $data->payment_details); if (!$updated) { return response()->json(['message' => 'Purchase not found'], 404); } return response()->json(['message' => 'Payment details updated successfully']); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } public function getByUser(int $userId): JsonResponse { $purchases = $this->purchaseService->getUserPurchases($userId); return response()->json(['data' => $purchases]); } public function getByStatus(string $status): JsonResponse { try { $purchases = $this->purchaseService->getPurchasesByStatus($status); return response()->json(['data' => $purchases]); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } public function getByTariffLevel(string $tariffLevel): JsonResponse { try { $purchases = $this->purchaseService->getPurchasesByTariffLevel($tariffLevel); return response()->json(['data' => $purchases]); } catch (\InvalidArgumentException $e) { return response()->json(['message' => $e->getMessage()], 422); } } }