<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Transformers\TransactionsTransformer;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* get all users
*
*/
public function index()
{
return response()->json(
fractal()
->collection(User::withTrashed()->get())
->transformWith(new UserTransformer())
->toArray()['data']
);
}
/**
* get logged-in user details
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function me(Request $request)
{
$data =fractal()
->item($request->user())
->transformWith(new UserTransformer())
->parseIncludes('wallet')
->toArray()['data'];
return response()->json($data);
}
/**
* get specified user details
* @param User $user
*/
public function details(User $user)
{
$data = fractal()
->item($user)
->transformWith(new UserTransformer())
->toArray()['data'];
return $this->sendResponse($data);
}
/**
* block or unblock user
* @param Request $request
*/
public function blockUnblock(Request $request)
{
$user = User::withTrashed()->where('email', $request->email)->first();
if ($user === null)
return $this->sendError(['user not found']);
$user->deleted_at === null ?
$user->delete() :
$user->restore();
return $this->sendResponse(['ok']);
}
/**
* user transactions
*/
/**
* get all user transactions
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function allTransaction(Request $request)
{
return response()->json(
fractal()
->collection(auth()->user()->wallet->transactions()->get())
->transformWith(new TransactionsTransformer())
->toArray()['data']
);
}
/**
* get approved transaction for user
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function approved(Request $request)
{
return response()->json(
fractal()
->collection($request->user()->wallet->transactions()->approved())
->transformWith(new TransactionsTransformer())
->toArray()['data']
);
}
/**
* get declined transactions for user
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function declined(Request $request)
{
return response()->json(
fractal()
->collection($request->user()->wallet->transactions()->declined())
->transformWith(new TransactionsTransformer())
->toArray()['data']
);
}
/**
* get pending transactions for user
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function pending(Request $request)
{
return response()->json(
fractal()
->collection($request->user()->wallet->transactions()->waiting())
->transformWith(new TransactionsTransformer())
->toArray()['data']
);
}
}
|