vendor and env first commit
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Controllers\Api;
|
||||
|
||||
use Spatie\QueryBuilder\AllowedFilter;
|
||||
use Spatie\QueryBuilder\QueryBuilder;
|
||||
use Vanguard\Http\Controllers\Api\ApiController;
|
||||
use Vanguard\UserActivity\Activity;
|
||||
use Vanguard\UserActivity\Http\Requests\GetActivitiesRequest;
|
||||
use Vanguard\UserActivity\Http\Resources\ActivityResource;
|
||||
|
||||
class ActivityController extends ApiController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('permission:users.activity');
|
||||
}
|
||||
|
||||
/**
|
||||
* Paginate user activities.
|
||||
*/
|
||||
public function index(GetActivitiesRequest $request): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
|
||||
{
|
||||
$activities = QueryBuilder::for(Activity::class)
|
||||
->allowedIncludes('user')
|
||||
->allowedFilters([
|
||||
AllowedFilter::partial('description'),
|
||||
AllowedFilter::exact('user', 'user_id'),
|
||||
])
|
||||
->allowedSorts('created_at')
|
||||
->defaultSort('-created_at')
|
||||
->paginate($request->per_page ?: 20);
|
||||
|
||||
return ActivityResource::collection($activities);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Controllers\Api;
|
||||
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Vanguard\Http\Controllers\Api\ApiController;
|
||||
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
|
||||
|
||||
class StatsController extends ApiController
|
||||
{
|
||||
public function __construct(private readonly ActivityRepository $activities)
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
|
||||
public function show(): JsonResponse
|
||||
{
|
||||
$data = $this->activities->userActivityForPeriod(
|
||||
Auth::user()->id,
|
||||
Carbon::now()->subWeeks(2),
|
||||
Carbon::now()
|
||||
);
|
||||
|
||||
return response()->json($data);
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Controllers\Web;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
use Vanguard\Http\Controllers\Controller;
|
||||
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
|
||||
|
||||
class ActivityController extends Controller
|
||||
{
|
||||
public function __construct(private readonly ActivityRepository $activities)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the page with activities for all system users.
|
||||
*/
|
||||
public function index(Request $request): View
|
||||
{
|
||||
$activities = $this->activities->paginateActivities(perPage: 20, search: $request->search);
|
||||
|
||||
return view('user-activity::index', [
|
||||
'adminView' => true,
|
||||
'activities' => $activities,
|
||||
]);
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Controllers\Web;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\Request;
|
||||
use Vanguard\Http\Controllers\Controller;
|
||||
use Vanguard\User;
|
||||
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
|
||||
|
||||
class UserActivityController extends Controller
|
||||
{
|
||||
public function __construct(private readonly ActivityRepository $activities)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the activity log page for specific user.
|
||||
*/
|
||||
public function index(User $user, Request $request): View
|
||||
{
|
||||
$activities = $this->activities->paginateActivitiesForUser(
|
||||
userId: $user->id,
|
||||
search: $request->search,
|
||||
);
|
||||
|
||||
return view('user-activity::index', [
|
||||
'user' => $user,
|
||||
'adminView' => true,
|
||||
'activities' => $activities,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display user activity log.
|
||||
*/
|
||||
public function show(Request $request): View
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
$activities = $this->activities->paginateActivitiesForUser(
|
||||
userId: $user->id,
|
||||
search: $request->get('search'),
|
||||
);
|
||||
|
||||
return view('user-activity::index', compact('activities', 'user'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Requests;
|
||||
|
||||
use Vanguard\Http\Requests\Request;
|
||||
|
||||
class GetActivitiesRequest extends Request
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'per_page' => 'integer|max:100',
|
||||
];
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'per_page.max' => __('Maximum number of records per page is 100.'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class ActivityResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*/
|
||||
public function toArray($request): array
|
||||
{
|
||||
$agent = app('agent');
|
||||
$agent->setUserAgent($this->resource->user_agent);
|
||||
|
||||
return [
|
||||
'id' => (int) $this->id,
|
||||
'user_id' => (int) $this->user_id,
|
||||
'ip_address' => $this->ip_address,
|
||||
'user_agent' => $this->user_agent,
|
||||
'browser' => $agent->browser(),
|
||||
'platform' => $agent->platform(),
|
||||
'device' => $agent->device(),
|
||||
'description' => $this->description,
|
||||
'created_at' => (string) $this->created_at,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Vanguard\UserActivity\Http\View\Composers;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
|
||||
|
||||
class ShowUserComposer
|
||||
{
|
||||
public function __construct(private readonly ActivityRepository $activity)
|
||||
{
|
||||
}
|
||||
|
||||
public function compose(View $view): void
|
||||
{
|
||||
$user = $view->getData()['user'];
|
||||
|
||||
$view->with('activities', $this->activity->getLatestActivitiesForUser($user->id));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user