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/BillerController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Models\Biller;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\ValidationException;

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

    public function storeOrUpdate(Request $request)
    {
        try {
            $validated = $request->validate([
                'name' => 'required|string|max:40',
                'status' => 'required|string',
                'type' => 'required|string',
            ]);
        } catch (ValidationException $th) {
            return response()->json([
                'status' => 'error',
                'message' => $th->getMessage(),
            ], 401);
        }

        try {
            $biller = Biller::updateOrCreate(
                ['name' => $validated['name']],
                ['type' => $validated['type'], 'status' => $validated['status']]
            );
            $message = $biller->wasRecentlyCreated
                ? 'Data provider created successfully.'
                : 'Data provider updated successfully.';
            return response()->json([
                'status' => 'success',
                'message' => $message,
                'data' => $biller,
            ], 200);
        } catch (\Exception $e) {
            return response()->json([
                'status' => 'error',
                'message' => $message,
            ], 401);
        }
    }


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

        try {
            $biller = Biller::findOrFail($validated['id']);
            $imagePath = str_replace('/storage/', 'public/', $biller->image);
            if ($biller && Storage::exists($imagePath)) {
                Storage::delete($imagePath);
                $biller->delete();
                return response()->json([
                    'status' => 'success',
                    'message' => 'Biller with Image deleted successfully',
                ], 200);
            } else {
                return response()->json([
                    'message' => 'Biller with Image not found',
                    'status' => 'error'
                ], 404);
            }
        } catch (\Exception $e) {
            info('Mail the admin system about this error: ' . $e->getMessage());
            return response()->json([
                'message' => 'Internal server error occurred. Please try again later.',
                'status' => 'error'
            ], 500);
        }
    }
}