From 802d9558a33796dd8abd736da4c074ffca2a5ef1 Mon Sep 17 00:00:00 2001 From: Constantin Graf Date: Thu, 30 May 2024 19:51:49 +0200 Subject: [PATCH] Fixed endOfWeek bug --- app/Filament/Resources/TagResource.php | 5 ++- app/Service/DashboardService.php | 2 +- tests/Unit/Service/DashboardServiceTest.php | 40 ++++++++++----------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/app/Filament/Resources/TagResource.php b/app/Filament/Resources/TagResource.php index 431de9fe..1f134f68 100644 --- a/app/Filament/Resources/TagResource.php +++ b/app/Filament/Resources/TagResource.php @@ -11,6 +11,7 @@ use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; +use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; class TagResource extends Resource @@ -58,7 +59,9 @@ class TagResource extends Resource ]) ->defaultSort('created_at', 'desc') ->filters([ - // + SelectFilter::make('organization') + ->relationship('organization', 'name') + ->searchable(), ]) ->actions([ Tables\Actions\EditAction::make(), diff --git a/app/Service/DashboardService.php b/app/Service/DashboardService.php index 3d11ba2b..e6e473d2 100644 --- a/app/Service/DashboardService.php +++ b/app/Service/DashboardService.php @@ -122,7 +122,7 @@ class DashboardService { return $builder->whereBetween('start', [ Carbon::now($timeZone)->startOfWeek($startOfWeek->carbonWeekDay())->utc(), - Carbon::now($timeZone)->endOfWeek($startOfWeek->carbonWeekDay())->utc(), + Carbon::now($timeZone)->endOfWeek($startOfWeek->toEndOfWeek()->carbonWeekDay())->utc(), ]); } diff --git a/tests/Unit/Service/DashboardServiceTest.php b/tests/Unit/Service/DashboardServiceTest.php index 462bed55..490a390f 100644 --- a/tests/Unit/Service/DashboardServiceTest.php +++ b/tests/Unit/Service/DashboardServiceTest.php @@ -273,38 +273,38 @@ class DashboardServiceTest extends TestCase $project2 = Project::factory()->forOrganization($organization)->create(); $timeEntry1Project1 = TimeEntry::factory()->forMember($member)->forOrganization($organization)->forProject($project1)->create([ // Note: At the start of the week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry2Project1 = TimeEntry::factory()->forMember($member)->forOrganization($organization)->forProject($project1)->create([ // Note: At the end of the week - 'start' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->utc(), + 'end' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry1Project2 = TimeEntry::factory()->forMember($member)->forOrganization($organization)->forProject($project2)->create([ // Note: At the start of the week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry2Project2 = TimeEntry::factory()->forMember($member)->forOrganization($organization)->forProject($project2)->create([ // Note: At the end of the week - 'start' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->utc(), + 'end' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry1WithoutProject = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: At the start of the week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry2WithoutProject = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: At the end of the week - 'start' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->utc(), + 'end' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry1WithoutProjectOutsideOfWeek = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: Outside of week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->subSecond()->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(39)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->subSecond()->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(39)->utc(), ]); // Act @@ -347,18 +347,18 @@ class DashboardServiceTest extends TestCase $member = Member::factory()->forUser($user)->forOrganization($organization)->create(); $timeEntry1WithoutProject = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: At the start of the week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry2WithoutProject = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: At the end of the week - 'start' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->utc(), - 'end' => $now->endOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(40)->utc(), + 'start' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->utc(), + 'end' => $now->endOfWeek($user->week_start->toEndOfWeek()->carbonWeekDay())->addSeconds(40)->utc(), ]); $timeEntry1WithoutProjectOutsideOfWeek = TimeEntry::factory()->forMember($member)->forOrganization($organization)->create([ // Note: Outside of week - 'start' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->subSecond()->utc(), - 'end' => $now->startOfWeek(Weekday::Sunday->carbonWeekDay())->addSeconds(39)->utc(), + 'start' => $now->startOfWeek($user->week_start->carbonWeekDay())->subSecond()->utc(), + 'end' => $now->startOfWeek($user->week_start->carbonWeekDay())->addSeconds(39)->utc(), ]); // Act