DONE: merge heir tab into profile tab, santize userIcNum and name, rename to malay, add stat card on user list
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace Modules\User\Repositories;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Modules\Auth\Entities\User;
|
||||
use Modules\User\Repositories\Contracts\UserRepositoryInterface;
|
||||
|
||||
@@ -85,7 +86,18 @@ class UserRepository implements UserRepositoryInterface
|
||||
|
||||
$query = User::excludeDevelopersUnlessDeveloper()
|
||||
->with([
|
||||
'roles:id,name,guard_name'
|
||||
'roles:id,name,guard_name',
|
||||
'employments' => function ($q) {
|
||||
$q->select([
|
||||
'id',
|
||||
'user_id',
|
||||
'company_name',
|
||||
'is_current',
|
||||
'start_date',
|
||||
])
|
||||
->orderByDesc('is_current')
|
||||
->orderByDesc('start_date');
|
||||
},
|
||||
])
|
||||
->orderBy($sortBy, $sortOrder);
|
||||
|
||||
@@ -129,6 +141,17 @@ class UserRepository implements UserRepositoryInterface
|
||||
->excludeDevelopersUnlessDeveloper()
|
||||
->with([
|
||||
'roles:id,name,guard_name',
|
||||
'employments' => function ($q) {
|
||||
$q->select([
|
||||
'id',
|
||||
'user_id',
|
||||
'company_name',
|
||||
'is_current',
|
||||
'start_date',
|
||||
])
|
||||
->orderByDesc('is_current')
|
||||
->orderByDesc('start_date');
|
||||
},
|
||||
])
|
||||
->orderBy($sortBy, $sortOrder);
|
||||
|
||||
@@ -141,6 +164,36 @@ class UserRepository implements UserRepositoryInterface
|
||||
return $query->paginate($perPage);
|
||||
}
|
||||
|
||||
public function getListStats(
|
||||
string $search = '',
|
||||
string $status = '',
|
||||
array $dateFilters = []
|
||||
): array {
|
||||
$baseQuery = User::excludeDevelopersUnlessDeveloper();
|
||||
|
||||
$this->applySearch($baseQuery, $search);
|
||||
|
||||
if (! empty($status)) {
|
||||
$baseQuery->where('status', $status);
|
||||
}
|
||||
|
||||
$this->applyDateRangeFilters($baseQuery, $dateFilters);
|
||||
|
||||
$total = (int) (clone $baseQuery)->count();
|
||||
|
||||
$monthStart = Carbon::now()->startOfMonth()->toDateString();
|
||||
$monthEnd = Carbon::now()->endOfMonth()->toDateString();
|
||||
$joinedThisMonth = (int) (clone $baseQuery)
|
||||
->whereDate('join_date', '>=', $monthStart)
|
||||
->whereDate('join_date', '<=', $monthEnd)
|
||||
->count();
|
||||
|
||||
return [
|
||||
'total' => $total,
|
||||
'joined_this_month' => $joinedThisMonth,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Users with their relationships and search
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user