update migrations

This commit is contained in:
Daeng Deni Mardaeni 2023-09-27 15:06:08 +07:00
parent 375463fc77
commit b153558a25
6 changed files with 41 additions and 21 deletions

View File

@ -3,6 +3,7 @@
namespace Modules\Usermanager\DataTables; namespace Modules\Usermanager\DataTables;
use Modules\Usermanager\Entities\User; use Modules\Usermanager\Entities\User;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Column; use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable; use Yajra\DataTables\Services\DataTable;
@ -18,8 +19,7 @@
public function dataTable($query) public function dataTable($query)
{ {
return datatables() return (new EloquentDataTable($query))
->eloquent($query)
->filter(function ($query) { ->filter(function ($query) {
$search = request()->get('search'); $search = request()->get('search');
if ($search['value'] !== "") { if ($search['value'] !== "") {
@ -27,10 +27,19 @@
->orWhere('email', 'like', "%" . $search['value'] . "%"); ->orWhere('email', 'like', "%" . $search['value'] . "%");
} }
}) })
->rawColumns(['action']) ->rawColumns(['action','last_login_at'])
->addIndexColumn() ->addIndexColumn()
->editColumn('user', function (User $model) {
return view('usermanager::users.users.columns._user', compact('model'));
})
->editColumn('role', function (User $user) {
return ucwords($user->roles->first()?->name);
})
->editColumn('last_login_at', function (User $user) {
return sprintf('<div class="badge badge-light fw-bold">%s</div>', $user->last_login_at ? $user->last_login_at->diffForHumans() : $user->updated_at->diffForHumans());
})
->addColumn('action', function (User $model) { ->addColumn('action', function (User $model) {
return view('usermanager::users.users._action', compact('model')); return view('usermanager::users.users.columns._action', compact('model'));
}); });
} }
@ -77,7 +86,9 @@
{ {
return [ return [
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('name')->title(__('Name')), Column::make('user')->addClass('d-flex align-items-center')->name('name'),
Column::make('role')->searchable(false),
Column::make('last_login_at')->title('Last Login'),
Column::make('email'), Column::make('email'),
Column::computed('action') Column::computed('action')
->exportable(false) ->exportable(false)

View File

@ -18,8 +18,7 @@
$table->string('email')->unique(); $table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable(); $table->timestamp('email_verified_at')->nullable();
$table->string('password'); $table->string('password');
$table->foreignId('directorat_id')->nullable(); $table->string('avatar')->nullable();
$table->foreignId('sub_directorat_id')->nullable();
$table->rememberToken(); $table->rememberToken();
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();

View File

@ -24,7 +24,12 @@
protected $fillable = [ protected $fillable = [
'name', 'name',
'email', 'email',
'password' 'password',
'last_login_at',
'last_login_ip',
'profile_photo_path',
'direktorat_id',
'sub_direktorat_id',
]; ];
/** /**
@ -44,5 +49,15 @@
*/ */
protected $casts = [ protected $casts = [
'email_verified_at' => 'datetime', 'email_verified_at' => 'datetime',
'last_login_at' => 'datetime',
]; ];
public function getProfilePhotoUrlAttribute()
{
if ($this->profile_photo_path) {
return asset('storage/' . $this->profile_photo_path);
}
return $this->profile_photo_path;
}
} }

View File

@ -5,6 +5,7 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Modules\Usermanager\Http\Requests\LoginRequest; use Modules\Usermanager\Http\Requests\LoginRequest;
@ -23,6 +24,11 @@
$request->session()->regenerate(); $request->session()->regenerate();
$request->user()->update([
'last_login_at' => Carbon::now()->toDateTimeString(),
'last_login_ip' => $request->getClientIp()
]);
return redirect()->intended(RouteServiceProvider::HOME); return redirect()->intended(RouteServiceProvider::HOME);
} }

View File

@ -34,6 +34,8 @@
'name' => $request->name, 'name' => $request->name,
'email' => $request->email, 'email' => $request->email,
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
'last_login_at' => \Illuminate\Support\Carbon::now()->toDateTimeString(),
'last_login_ip' => $request->getClientIp()
]); ]);
event(new Registered($user)); event(new Registered($user));

View File

@ -1,13 +0,0 @@
@php
$route = explode('.', Route::currentRouteName());
@endphp
<div class="d-flex flex-row flex-center">
<a href="{{ route($route[0].'.'.$route[1].'.edit',['user' => $model->id]) }}"
class="kt_edit_form btn btn-icon btn-bg-light btn-active-light-primary btn-sm me-1">
{!! getIcon("pencil", "fs-1 text-info","duotune") !!}
</a>
{!! Form::open(['method' => 'DELETE','route' => [$route[0].'.'.$route[1].'.destroy', $model->id],'class'=>'']) !!}
{{ Form::button(getIcon("trash", "fs-1 text-danger","duotune"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }}
{!! Form::close() !!}
</div>