File: /var/www/api.vaspayment.com/app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\BeneficiaryList;
use Exception;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
protected $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::user();
if (!$this->user) {
return response()->json([
'status' => 'error',
'message' => 'Unauthorized, invalid token',
], 401);
}
return $next($request);
});
}
public function updateAccount(Request $request)
{
$request->validate([
'lastname' => 'required|string|max:255',
]);
// Retrieve the authenticated user
$user = $this->user;
// Update the user's last name
$user->lastname = $request->input('lastname');
// Save the changes
$user->save();
// Return a JSON response
return response()->json([
'status' => 'success',
'message' => 'Last name updated successfully',
'data' => $user,
]);
}
public function getBeneficiary(Request $request)
{
$userId = $this->user->id;
$bene = BeneficiaryList::where('user_id', $userId)->get();
if (!$bene) {
return response()->json([
'status' => 'success',
'message' => 'No beneficiary found',
'data' => [],
]);
}
// Return a JSON response
return response()->json([
'status' => 'success',
'message' => 'Beneficiaries found',
'data' => $bene,
]);
}
public function updateBeneficiary(Request $request)
{
// Validate the incoming request
$request->validate([
'beneficiaryUuid' => 'required|string',
'type' => 'required|string',
]);
$userId = $this->user->id;
// Retrieve the beneficiary list for the user
$beneficiaryList = BeneficiaryList::where('user_id', $userId)->where('product_type', $request->type)->first();
info($beneficiaryList);
// Handle case where no beneficiary list exists
if (!$beneficiaryList) {
return $this->responseError('No beneficiary found');
}
// Decode the JSON list of beneficiaries
$beneficiaries = json_decode($beneficiaryList->list, true);
// Log the UUID from the request for comparison
info('Incoming beneficiary UUID: ' . $request->beneficiaryUuid);
// Filter out the beneficiary with the matching UUID
$filteredBeneficiaries = array_filter($beneficiaries, function ($ben) use ($request) {
// Log for comparison
info('Comparing with beneficiary UUID: ' . $ben['uuid']);
return $ben['uuid'] !== $request->beneficiaryUuid; // Keep beneficiaries that do not match the UUID
});
// Log the original and filtered beneficiaries for debugging
info('Original beneficiaries: ', $beneficiaries);
info('Filtered beneficiaries: ', $filteredBeneficiaries);
// Check if any beneficiaries were removed
if (count($filteredBeneficiaries) === count($beneficiaries)) {
return $this->responseError('Beneficiary not found');
}
// Update the beneficiary list and save
$beneficiaryList->list = json_encode(array_values($filteredBeneficiaries)); // Ensure keys are reset
$beneficiaryList->save();
return $this->responseSuccess('Beneficiary deleted successfully');
}
private function responseError(string $message)
{
return response()->json([
'status' => 'error',
'message' => $message,
]);
}
private function responseSuccess(string $message)
{
return response()->json([
'status' => 'success',
'message' => $message,
]);
}
public function changePassword(Request $request)
{
try {
$validatedData = $request->validate([
"password" => "required|string",
]);
$user = $this->user;
$user->password = Hash::make($validatedData['password']);
$user->save();
return response()->json(['status' => 'success', 'message' => 'Your password was changed successfully'], 200);
} catch (Exception $e) {
info($e->getMessage());
return response()->json(['status' => 'error', 'message' => 'Your password failed to change', 'data' => $e->getMessage()], 422);
}
}
public function savePlayerId(Request $request)
{
$request->validate([
'player_id' => 'required|string',
]);
$user = $this->user;
$user->device_id = $request->input('player_id');
$user->save();
info('Player ID saved successfully.');
return response()->json(['status' => 'success', 'message' => 'Player ID saved successfully.']);
}
}