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