File: /var/www/api.ayokah.co.uk/app/Http/Controllers/Admin/SellerPlanController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Models\SellerPlan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
class SellerPlanController extends Controller
{
public function store(Request $request)
{
try {
$validatedData = $request->validate([
'name' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:255'],
'amount' => ['required', 'numeric'],
'link' => ['sometimes', 'url'],
]);
if ($request->has('id')) {
$package = SellerPlan::findOrFail($request->id);
$status = 'updated';
} else {
$package = new SellerPlan();
$status = 'saved';
}
$package->fill($validatedData);
$package->save();
return response()->json(['status' => 'success', 'message' => 'Seller plan ' . $status . ' successfully', 'package' => $package], 200);
} catch (ValidationException $e) {
return response()->json(['status' => 'failed', 'message' => $e->getMessage()], 422);
}
}
// for admin
public function index()
{
try {
$plans = SellerPlan::all();
return response()->json(['plans' => $plans], 200);
} catch (\Throwable $th) {
Log::alert($th->getMessage());
return response()->json(['error' => 'Unable to fetch list of Seller plans'], 500);
}
}
public function list()
{
try {
$plans = SellerPlan::all();
return response()->json(['data' => $plans], 200);
} catch (\Throwable $th) {
Log::alert($th->getMessage());
return response()->json(['error' => 'Unable to fetch list of Seller plans'], 500);
}
}
public function delete(Request $request)
{
try {
$validator = Validator::make($request->all(), [
'id' => ['required', 'exists:seller_plans,id'],
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 422);
}
$package = SellerPlan::findOrFail($request->id);
$package->delete();
return response()->json(['message' => 'Seller plan deleted successfully', 'plan' => $package], 200);
} catch (\Illuminate\Validation\ValidationException $e) {
return response()->json(['error' => $e->errors()], 422);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
Log::alert($e->getMessage());
return response()->json(['error' => 'Seller plan not found'], 404);
} catch (\Throwable $e) {
Log::alert($e->getMessage());
return response()->json(['error' => 'Unable to delete seller plan'], 500);
}
}
}