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);
}
}
}