useract wip

This commit is contained in:
salam committed 2026-02-13 07:38:17 +01:00
1 parent 10b0d334ab
commit 7e9d841856
19 files changed
+194 -51

No files matched your search

@@ -15,7 +15,7 @@ class ClientResource extends Resource
{
protected static ?string $model = Client::class;
protected static ?int $navigationSort = 32;
protected static ?int $navigationSort = 33;
protected static string|\BackedEnum|null $navigationIcon = 'phosphor-baseball-helmet';
@@ -0,0 +1,11 @@
<?php
namespace App\Filament\Resources\UserActivities\Pages;
use App\Filament\Resources\UserActivities\UserActivityResource;
use Filament\Resources\Pages\CreateRecord;
class CreateUserActivity extends CreateRecord
{
protected static string $resource = UserActivityResource::class;
}
@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\UserActivities\Pages;
use App\Filament\Resources\UserActivities\UserActivityResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditUserActivity extends EditRecord
{
protected static string $resource = UserActivityResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -0,0 +1,11 @@
<?php
namespace App\Filament\Resources\UserActivities\Pages;
use App\Filament\Resources\UserActivities\UserActivityResource;
use Filament\Resources\Pages\ListRecords;
class ListUserActivities extends ListRecords
{
protected static string $resource = UserActivityResource::class;
}
@@ -0,0 +1,16 @@
<?php
namespace App\Filament\Resources\UserActivities\Schemas;
use Filament\Schemas\Schema;
class UserActivityForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
//
]);
}
}
@@ -0,0 +1,25 @@
<?php
namespace App\Filament\Resources\UserActivities\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class UserActivitiesTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
TextColumn::make('user.name'),
TextColumn::make('ip'),
TextColumn::make('country'),
TextColumn::make('location'),
TextColumn::make('created_at')->dateTime('M j, Y H:i'),
])
->defaultSort('created_at', 'desc')
->filters([
//
]);
}
}
@@ -0,0 +1,49 @@
<?php
namespace App\Filament\Resources\UserActivities;
use App\Filament\Clusters\Administrator\AdministratorCluster;
use App\Filament\Resources\UserActivities\Pages\ListUserActivities;
use App\Filament\Resources\UserActivities\Schemas\UserActivityForm;
use App\Filament\Resources\UserActivities\Tables\UserActivitiesTable;
use App\Models\UserActivity;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
class UserActivityResource extends Resource
{
protected static ?string $model = UserActivity::class;
protected static ?string $cluster = AdministratorCluster::class;
protected static ?int $navigationSort = 32;
protected static string|\UnitEnum|null $navigationGroup = 'User';
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
public static function form(Schema $schema): Schema
{
return UserActivityForm::configure($schema);
}
public static function table(Table $table): Table
{
return UserActivitiesTable::configure($table);
}
public static function getPages(): array
{
return [
'index' => ListUserActivities::route('/'),
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
}
+9 -9
View File
@@ -18,6 +18,8 @@ class ColumnOdds extends Column
public $slots;
public $empty_slots_icons;
public $bookmaker;
protected $max;
@@ -40,8 +42,6 @@ class ColumnOdds extends Column
public $partner;
public $partner_icon;
protected ?array $odds_labels;
protected bool $state = true;
@@ -68,8 +68,6 @@ class ColumnOdds extends Column
return;
}
$this->setPartnerIcon();
$this->setSlots();
$this->has_data = count($this->data);
@@ -131,11 +129,6 @@ class ColumnOdds extends Column
return $this->columns;
}
public function getPartnerBookmakerIcon()
{
return $this->partner_icon;
}
public function getSlots()
{
if (auth()->user()->is_multiline_direct) {
@@ -465,6 +458,11 @@ class ColumnOdds extends Column
});
}
public function getBookmakerIcon($bookmaker_id)
{
return $this->empty_slots_icons[$bookmaker_id];
}
public function setPartnerIcon()
{
$this->partner_icon = Bookmaker::where('id', auth()->user()->partner_bookmaker_id)->value('icon');
@@ -474,6 +472,8 @@ class ColumnOdds extends Column
{
$this->slots = EventsTable::$slots[$this->bettype];
$this->empty_slots_icons = Bookmaker::pluck('icon', 'id')->all();
$this->bookmaker = EventsTable::$bookmaker[$this->bettype];
$this->filter = EventsTable::$filter[$this->bettype];
+6 -4
View File
@@ -1,6 +1,6 @@
<?php
namespace Edwink\FilamentUserActivity\Http\Middleware;
namespace App\Http\Middleware;
use App\Models\UserActivity;
use Closure;
@@ -21,18 +21,20 @@ class RecordUserActivity
$response = $next($request);
$whoIsIp = request()->ip();
$whoIsIp = '178.165.190.98';
$position = Location::get($whoIsIp);
$session_id = session()->getId();
dd($position);
// dd($position);
// Perform action
if (Auth::id() !== null) {
UserActivity::create([
'url' => config('app.url').'/'.$request->path(),
'user_id' => Auth::id(),
'session_id' => $session_id,
'ip' => $whoIsIp,
'country' => $position->countryName,
'location' => $position->countryName,
'location' => $position->cityName,
]);
}
+11 -1
View File
@@ -7,10 +7,20 @@ use Illuminate\Database\Eloquent\Model;
class UserActivity extends Model
{
protected $fillable = [
'user_id', 'url',
'user_id',
'url',
'session_id',
'ip',
'country',
'location',
];
protected $casts = [
'created_at' => 'datetime',
];
public function user()
{
return $this->belongsTo(User::class);
}
}
@@ -3,6 +3,7 @@
namespace App\Providers\Filament;
use Agencetwogether\HooksHelper\HooksHelperPlugin;
use App\Http\Middleware\RecordUserActivity;
use Awcodes\LightSwitch\Enums\Alignment;
use Awcodes\LightSwitch\LightSwitchPlugin;
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
@@ -38,6 +39,9 @@ class AdminPanelProvider extends PanelProvider
{
return $panel
->id('admin')
->middleware([
RecordUserActivity::class,
])
->path('')
->login()
->passwordReset(RequestPasswordReset::class)