m
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -4,12 +4,7 @@
|
||||
|
||||
@section('content')
|
||||
<div class="max-w-2xl mx-auto w-full mt-6">
|
||||
@if(session('success'))
|
||||
<div class="mb-4 p-4 bg-green-50 border border-green-200 text-green-800 rounded-2xl font-semibold flex items-center gap-2 shadow-sm">
|
||||
<span>✅</span>
|
||||
<span>{{ session('success') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<x-user-form mode="self" :user="Auth::user()" />
|
||||
</div>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
Reference in New Issue
Block a user