Files
mykopkb-be/Modules/Investment/Http/Controllers/UserLimitProfileController.php
T

76 lines
2.5 KiB
PHP

<?php
namespace Modules\Investment\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Modules\Investment\Entities\InvestmentLimitProfile;
use Modules\Investment\Entities\UserLimitProfile;
use Modules\Investment\Http\Requests\AssignUserLimitProfileRequest;
use Modules\Investment\Services\InvestmentLimitService;
use Modules\Investment\Transformers\UserLimitProfileResource;
class UserLimitProfileController extends Controller
{
use AuthorizesRequests;
public function __construct(
protected InvestmentLimitService $limitService,
) {}
public function index(Request $request): JsonResponse
{
$this->authorize('viewAny', InvestmentLimitProfile::class);
$query = UserLimitProfile::query()
->with(['user:id,name,email,ic_number', 'profile'])
->orderByDesc('effective_date');
if ($userId = $request->query('user_id')) {
$query->where('user_id', $userId);
}
if ($request->boolean('active_only')) {
$query->active();
}
$assignments = $query->paginate(min((int) $request->get('per_page', 10), 1000));
return response()->json([
'success' => true,
'data' => UserLimitProfileResource::collection($assignments->items()),
'pagination' => [
'current_page' => $assignments->currentPage(),
'per_page' => $assignments->perPage(),
'total' => $assignments->total(),
'last_page' => $assignments->lastPage(),
'from' => $assignments->firstItem(),
'to' => $assignments->lastItem(),
'has_more_pages' => $assignments->hasMorePages(),
],
'message' => 'Tugasan profil had berjaya dimuatkan',
]);
}
public function store(AssignUserLimitProfileRequest $request): JsonResponse
{
$this->authorize('create', InvestmentLimitProfile::class);
$validated = $request->validated();
$assignment = $this->limitService->assignProfileToUser(
$validated['user_id'],
$validated['profile_id'],
$validated['effective_date'],
);
return response()->json([
'success' => true,
'data' => new UserLimitProfileResource($assignment),
'message' => 'Profil had berjaya ditugaskan kepada ahli',
], 201);
}
}