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 updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void;
|
||||||
|
|
||||||
public function getSentCardsToUserThisMonth(User $sender, string $receiverMsnv): int;
|
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,73 +232,87 @@ class UserService implements UserServiceInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve paginated list of received ThankCards for a user
|
// 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();
|
$start = Carbon::parse($selectedMonth)->startOfMonth();
|
||||||
$end = Carbon::parse($selectedMonth)->endOfMonth();
|
$end = Carbon::parse($selectedMonth)->endOfMonth();
|
||||||
|
|
||||||
|
$statsQuery = Administration::where('msnv', $user->msnv)
|
||||||
|
->whereBetween('date', [$start, $end])
|
||||||
|
->where('received', '>', 0);
|
||||||
|
|
||||||
|
$totalCards = (int) $statsQuery->sum('received');
|
||||||
|
$totalSenders = (int) $statsQuery->whereNotNull('sender')->distinct('sender')->count('sender');
|
||||||
|
|
||||||
$cards = Administration::with('senderUser')
|
$cards = Administration::with('senderUser')
|
||||||
->where('msnv', $user->msnv)
|
->where('msnv', $user->msnv)
|
||||||
->whereBetween('date', [$start, $end])
|
->whereBetween('date', [$start, $end])
|
||||||
->where('received', '>', 0)
|
->where('received', '>', 0)
|
||||||
->orderBy('date', 'desc')
|
->orderBy('date', 'desc')
|
||||||
|
->skip($offset)
|
||||||
|
->take($limit)
|
||||||
->get();
|
->get();
|
||||||
return ['cards' => $cards];
|
|
||||||
|
$hasMore = Administration::where('msnv', $user->msnv)
|
||||||
|
->whereBetween('date', [$start, $end])
|
||||||
|
->where('received', '>', 0)
|
||||||
|
->skip($offset + $limit)
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
return [
|
||||||
|
'cards' => $cards,
|
||||||
|
'hasMore' => $hasMore,
|
||||||
|
'totalCards' => $totalCards,
|
||||||
|
'totalSenders' => $totalSenders
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve paginated list of sent ThankCards for a user
|
// Retrieve paginated list of sent ThankCards for a user
|
||||||
public function getSentPageData(User $user, string $selectedMonth): array
|
public function getSentPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array
|
||||||
{
|
{
|
||||||
$start = Carbon::parse($selectedMonth)->startOfMonth();
|
$start = Carbon::parse($selectedMonth)->startOfMonth();
|
||||||
$end = Carbon::parse($selectedMonth)->endOfMonth();
|
$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')
|
$cards = Administration::with('receiverUser')
|
||||||
->where('msnv', $user->msnv)
|
->where('msnv', $user->msnv)
|
||||||
->whereBetween('date', [$start, $end])
|
->whereBetween('date', [$start, $end])
|
||||||
->where('sent', '>', 0)
|
->where('sent', '>', 0)
|
||||||
->orderBy('date', 'desc')
|
->orderBy('date', 'desc')
|
||||||
|
->skip($offset)
|
||||||
|
->take($limit)
|
||||||
->get();
|
->get();
|
||||||
return ['cards' => $cards];
|
|
||||||
|
$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
|
// Retrieve limited feed of received ThankCards for activity feed
|
||||||
public function getReceivedFeed(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
|
||||||
{
|
{
|
||||||
$start = Carbon::parse($selectedMonth)->startOfMonth();
|
return $this->getReceivedPageData($user, $selectedMonth, $limit, $offset);
|
||||||
$end = Carbon::parse($selectedMonth)->endOfMonth();
|
|
||||||
$cards = Administration::with('senderUser')
|
|
||||||
->where('msnv', $user->msnv)
|
|
||||||
->whereBetween('date', [$start, $end])
|
|
||||||
->where('received', '>', 0)
|
|
||||||
->orderBy('date', 'desc')
|
|
||||||
->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];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve limited feed of sent ThankCards for activity feed
|
// Retrieve limited feed of sent ThankCards for activity feed
|
||||||
public function getSentFeed(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
|
||||||
{
|
{
|
||||||
$start = Carbon::parse($selectedMonth)->startOfMonth();
|
return $this->getSentPageData($user, $selectedMonth, $limit, $offset);
|
||||||
$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];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void
|
public function updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void
|
||||||
|
|||||||
@@ -4,12 +4,7 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="max-w-2xl mx-auto w-full mt-6">
|
<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()" />
|
<x-user-form mode="self" :user="Auth::user()" />
|
||||||
</div>
|
</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