This commit is contained in:
antv
2026-07-17 13:57:02 +07:00
parent 91a598a5f9
commit 7af5de6048
5 changed files with 66 additions and 49 deletions
@@ -22,4 +22,12 @@ interface UserServiceInterface
public function updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void;
public function getSentCardsToUserThisMonth(User $sender, string $receiverMsnv): int;
public function getReceivedPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;
public function getSentPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;
public function getReceivedFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;
public function getSentFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;
}
+57 -43
View File
@@ -232,38 +232,18 @@ class UserService implements UserServiceInterface
}
// Retrieve paginated list of received ThankCards for a user
public function getReceivedPageData(User $user, string $selectedMonth): array
public function getReceivedPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
{
$start = Carbon::parse($selectedMonth)->startOfMonth();
$end = Carbon::parse($selectedMonth)->endOfMonth();
$cards = Administration::with('senderUser')
->where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('received', '>', 0)
->orderBy('date', 'desc')
->get();
return ['cards' => $cards];
}
// Retrieve paginated list of sent ThankCards for a user
public function getSentPageData(User $user, string $selectedMonth): array
{
$start = Carbon::parse($selectedMonth)->startOfMonth();
$end = Carbon::parse($selectedMonth)->endOfMonth();
$cards = Administration::with('receiverUser')
->where('msnv', $user->msnv)
$statsQuery = Administration::where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0)
->orderBy('date', 'desc')
->get();
return ['cards' => $cards];
}
->where('received', '>', 0);
$totalCards = (int) $statsQuery->sum('received');
$totalSenders = (int) $statsQuery->whereNotNull('sender')->distinct('sender')->count('sender');
// Retrieve limited feed of received ThankCards for activity feed
public function getReceivedFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
{
$start = Carbon::parse($selectedMonth)->startOfMonth();
$end = Carbon::parse($selectedMonth)->endOfMonth();
$cards = Administration::with('senderUser')
->where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
@@ -272,33 +252,67 @@ class UserService implements UserServiceInterface
->skip($offset)
->take($limit)
->get();
$hasMore = Administration::where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('received', '>', 0)
->skip($offset + $limit)
->exists();
return ['cards' => $cards, 'hasMore' => $hasMore];
return [
'cards' => $cards,
'hasMore' => $hasMore,
'totalCards' => $totalCards,
'totalSenders' => $totalSenders
];
}
// Retrieve paginated list of sent ThankCards for a user
public function getSentPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
{
$start = Carbon::parse($selectedMonth)->startOfMonth();
$end = Carbon::parse($selectedMonth)->endOfMonth();
$statsQuery = Administration::where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0);
$totalCards = (int) $statsQuery->sum('sent');
$totalReceivers = (int) $statsQuery->whereNotNull('receiver')->distinct('receiver')->count('receiver');
$cards = Administration::with('receiverUser')
->where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0)
->orderBy('date', 'desc')
->skip($offset)
->take($limit)
->get();
$hasMore = Administration::where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0)
->skip($offset + $limit)
->exists();
return [
'cards' => $cards,
'hasMore' => $hasMore,
'totalCards' => $totalCards,
'totalReceivers' => $totalReceivers
];
}
// Retrieve limited feed of received ThankCards for activity feed
public function getReceivedFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
{
return $this->getReceivedPageData($user, $selectedMonth, $limit, $offset);
}
// Retrieve limited feed of sent ThankCards for activity feed
public function getSentFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
{
$start = Carbon::parse($selectedMonth)->startOfMonth();
$end = Carbon::parse($selectedMonth)->endOfMonth();
$cards = Administration::with('receiverUser')
->where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0)
->orderBy('date', 'desc')
->skip($offset)
->take($limit)
->get();
$hasMore = Administration::where('msnv', $user->msnv)
->whereBetween('date', [$start, $end])
->where('sent', '>', 0)
->skip($offset + $limit)
->exists();
return ['cards' => $cards, 'hasMore' => $hasMore];
return $this->getSentPageData($user, $selectedMonth, $limit, $offset);
}
public function updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void