Updated to laravel 11

This commit is contained in:
Constantin Graf
2024-03-27 15:00:00 +01:00
parent 5d256650d2
commit ebd4754773
22 changed files with 1585 additions and 847 deletions

View File

@@ -62,7 +62,7 @@ class DashboardService
{
$value1 = Carbon::createFromFormat('Y-m-d', $possibleDates->first(), $timeZone);
$value2 = Carbon::createFromFormat('Y-m-d', $possibleDates->last(), $timeZone);
if ($value2 === false || $value1 === false) {
if ($value2 === null || $value1 === null) {
throw new \RuntimeException('Provided date is not valid');
}
if ($value1->gt($value2)) {

View File

@@ -102,7 +102,7 @@ class ClockifyTimeEntriesImporter extends DefaultImporter
} else {
$start = Carbon::createFromFormat('m/d/Y H:i:s A', $record['Start Date'].' '.$record['Start Time'], 'UTC');
}
if ($start === false) {
if ($start === null) {
throw new ImportException('Start date ("'.$record['Start Date'].'") or time ("'.$record['Start Time'].'") are invalid');
}
$timeEntry->start = $start;
@@ -113,7 +113,7 @@ class ClockifyTimeEntriesImporter extends DefaultImporter
} else {
$end = Carbon::createFromFormat('m/d/Y H:i:s A', $record['End Date'].' '.$record['End Time'], 'UTC');
}
if ($end === false) {
if ($end === null) {
throw new ImportException('End date ("'.$record['End Date'].'") or time ("'.$record['End Time'].'") are invalid');
}
$timeEntry->end = $end;

View File

@@ -93,12 +93,12 @@ class TogglTimeEntriesImporter extends DefaultImporter
$timeEntry->billable = $record['Billable'] === 'Yes';
$timeEntry->tags = $this->getTags($record['Tags']);
$start = Carbon::createFromFormat('Y-m-d H:i:s', $record['Start date'].' '.$record['Start time'], 'UTC');
if ($start === false) {
if ($start === null) {
throw new ImportException('Start date ("'.$record['Start date'].'") or time ("'.$record['Start time'].'") are invalid');
}
$timeEntry->start = $start;
$end = Carbon::createFromFormat('Y-m-d H:i:s', $record['End date'].' '.$record['End time'], 'UTC');
if ($end === false) {
if ($end === null) {
throw new ImportException('End date ("'.$record['End date'].'") or time ("'.$record['End time'].'") are invalid');
}
$timeEntry->end = $end;

View File

@@ -2,6 +2,7 @@
"name": "solidtime-io/solidtime",
"type": "project",
"description": "An open-source time-tracking app",
"version": "0.0.1",
"keywords": [],
"license": "AGPL-3.0-or-later",
"require": {
@@ -10,16 +11,16 @@
"dedoc/scramble": "dev-main",
"filament/filament": "^3.2",
"guzzlehttp/guzzle": "^7.2",
"inertiajs/inertia-laravel": "^0.6.8",
"inertiajs/inertia-laravel": "^1.0",
"korridor/laravel-model-validation-rules": "^3.0",
"laravel/framework": "^10.10",
"laravel/jetstream": "^4.2",
"laravel/passport": "^11.10.2",
"laravel/framework": "^11.0",
"laravel/jetstream": "^5.0",
"laravel/passport": "^12.0",
"laravel/tinker": "^2.8",
"pxlrbt/filament-environment-indicator": "^2.0",
"spatie/temporary-directory": "^2.2",
"tightenco/ziggy": "^1.0",
"tpetry/laravel-postgresql-enhanced": "^0.36.0"
"tightenco/ziggy": "^2.1.0",
"tpetry/laravel-postgresql-enhanced": "^0.37.0"
},
"require-dev": {
"brianium/paratest": "^7.3",
@@ -28,10 +29,10 @@
"larastan/larastan": "^2.0",
"laravel/pint": "^1.0",
"laravel/sail": "^1.18",
"laravel/telescope": "^4.17",
"laravel/telescope": "^5.0",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^7.0",
"phpunit/phpunit": "^10.1",
"nunomaduro/collision": "^8.1",
"phpunit/phpunit": "^11",
"spatie/laravel-ignition": "^2.0",
"timacdonald/log-fake": "^2.1"
},

1643
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -67,11 +67,11 @@ class TimeEntryFactory extends Factory
public function startBetween(Carbon $rangeStart, Carbon $rangeEnd): self
{
$start = $this->faker->dateTimeBetween($rangeStart, $rangeEnd);
$start = Carbon::instance($this->faker->dateTimeBetween($rangeStart, $rangeEnd));
return $this->state(function (array $attributes) use ($start): array {
return [
'start' => $start,
'start' => $start->utc(),
'end' => $this->faker->dateTimeBetween($start, 'now'),
];
});

132
package-lock.json generated
View File

@@ -39,7 +39,7 @@
"vite-plugin-checker": "^0.6.2",
"vue": "^3.4.0",
"vue-tsc": "^1.8.27",
"ziggy-js": "^1.8.1"
"ziggy-js": "^2.1.0"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -1340,9 +1340,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz",
"integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.1.tgz",
"integrity": "sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==",
"cpu": [
"arm"
],
@@ -1353,9 +1353,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz",
"integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.1.tgz",
"integrity": "sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==",
"cpu": [
"arm64"
],
@@ -1366,9 +1366,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz",
"integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.1.tgz",
"integrity": "sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==",
"cpu": [
"arm64"
],
@@ -1379,9 +1379,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz",
"integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.1.tgz",
"integrity": "sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==",
"cpu": [
"x64"
],
@@ -1392,9 +1392,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz",
"integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.1.tgz",
"integrity": "sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==",
"cpu": [
"arm"
],
@@ -1405,9 +1405,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz",
"integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.1.tgz",
"integrity": "sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==",
"cpu": [
"arm64"
],
@@ -1418,9 +1418,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz",
"integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.1.tgz",
"integrity": "sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==",
"cpu": [
"arm64"
],
@@ -1431,9 +1431,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz",
"integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.1.tgz",
"integrity": "sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==",
"cpu": [
"riscv64"
],
@@ -1443,10 +1443,23 @@
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.1.tgz",
"integrity": "sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==",
"cpu": [
"s390x"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz",
"integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.1.tgz",
"integrity": "sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==",
"cpu": [
"x64"
],
@@ -1457,9 +1470,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz",
"integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.1.tgz",
"integrity": "sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==",
"cpu": [
"x64"
],
@@ -1470,9 +1483,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz",
"integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.1.tgz",
"integrity": "sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==",
"cpu": [
"arm64"
],
@@ -1483,9 +1496,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz",
"integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.1.tgz",
"integrity": "sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==",
"cpu": [
"ia32"
],
@@ -1496,9 +1509,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz",
"integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.1.tgz",
"integrity": "sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==",
"cpu": [
"x64"
],
@@ -4780,9 +4793,9 @@
}
},
"node_modules/rollup": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz",
"integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.1.tgz",
"integrity": "sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.5"
@@ -4795,19 +4808,20 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.13.0",
"@rollup/rollup-android-arm64": "4.13.0",
"@rollup/rollup-darwin-arm64": "4.13.0",
"@rollup/rollup-darwin-x64": "4.13.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.13.0",
"@rollup/rollup-linux-arm64-gnu": "4.13.0",
"@rollup/rollup-linux-arm64-musl": "4.13.0",
"@rollup/rollup-linux-riscv64-gnu": "4.13.0",
"@rollup/rollup-linux-x64-gnu": "4.13.0",
"@rollup/rollup-linux-x64-musl": "4.13.0",
"@rollup/rollup-win32-arm64-msvc": "4.13.0",
"@rollup/rollup-win32-ia32-msvc": "4.13.0",
"@rollup/rollup-win32-x64-msvc": "4.13.0",
"@rollup/rollup-android-arm-eabi": "4.13.1",
"@rollup/rollup-android-arm64": "4.13.1",
"@rollup/rollup-darwin-arm64": "4.13.1",
"@rollup/rollup-darwin-x64": "4.13.1",
"@rollup/rollup-linux-arm-gnueabihf": "4.13.1",
"@rollup/rollup-linux-arm64-gnu": "4.13.1",
"@rollup/rollup-linux-arm64-musl": "4.13.1",
"@rollup/rollup-linux-riscv64-gnu": "4.13.1",
"@rollup/rollup-linux-s390x-gnu": "4.13.1",
"@rollup/rollup-linux-x64-gnu": "4.13.1",
"@rollup/rollup-linux-x64-musl": "4.13.1",
"@rollup/rollup-win32-arm64-msvc": "4.13.1",
"@rollup/rollup-win32-ia32-msvc": "4.13.1",
"@rollup/rollup-win32-x64-msvc": "4.13.1",
"fsevents": "~2.3.2"
}
},
@@ -5952,9 +5966,9 @@
}
},
"node_modules/ziggy-js": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/ziggy-js/-/ziggy-js-1.8.2.tgz",
"integrity": "sha512-lCtJkecWwAIinVs2aQgKMSheFbZ60VHnEBXMdJ5I/n7C8kFt2NNd0iuFCc0fLYMBzLl25qhVeYTK+1aZr3jGVA==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ziggy-js/-/ziggy-js-2.1.0.tgz",
"integrity": "sha512-BhbVGWwKXSkB2LsY2L+cG78WNdymxzI+wCWWi8qtPMVhxi2vkrHcU2CchEs1NGCkgo41KUOMOrct7Bu7Rpthwg==",
"dev": true,
"dependencies": {
"qs": "~6.9.7"

View File

@@ -30,7 +30,7 @@
"vite-plugin-checker": "^0.6.2",
"vue": "^3.4.0",
"vue-tsc": "^1.8.27",
"ziggy-js": "^1.8.1"
"ziggy-js": "^2.1.0"
},
"dependencies": {
"@heroicons/vue": "^2.1.1",

View File

@@ -1,6 +1,5 @@
<script setup lang="ts">
import { ChevronDownIcon } from '@heroicons/vue/20/solid';
import route from 'ziggy-js';
import Dropdown from '@/Components/Dropdown.vue';
import DropdownLink from '@/Components/DropdownLink.vue';
import { router, usePage } from '@inertiajs/vue3';

View File

@@ -1,5 +1,4 @@
<script setup lang="ts">
import route from 'ziggy-js';
import { router, usePage } from '@inertiajs/vue3';
import type { Organization, User } from '@/types/models';
import DropdownLink from '@/Components/DropdownLink.vue';

View File

@@ -1,7 +1,6 @@
<script setup lang="ts">
import { Head } from '@inertiajs/vue3';
import Banner from '@/Components/Banner.vue';
import route from 'ziggy-js';
import OrganizationSwitcher from '@/Components/OrganizationSwitcher.vue';
import CurrentSidebarTimer from '@/Components/CurrentSidebarTimer.vue';
import {

View File

@@ -7,7 +7,6 @@ import InputError from '@/Components/InputError.vue';
import InputLabel from '@/Components/InputLabel.vue';
import PrimaryButton from '@/Components/PrimaryButton.vue';
import TextInput from '@/Components/TextInput.vue';
import route from 'ziggy-js';
defineProps({
canResetPassword: Boolean,

View File

@@ -7,7 +7,6 @@ import InputError from '@/Components/InputError.vue';
import InputLabel from '@/Components/InputLabel.vue';
import PrimaryButton from '@/Components/PrimaryButton.vue';
import TextInput from '@/Components/TextInput.vue';
import route from 'ziggy-js';
const form = useForm({
name: '',

View File

@@ -8,7 +8,6 @@ import PrimaryButton from '@/Components/PrimaryButton.vue';
const props = defineProps({
status: String,
});
import route from 'ziggy-js';
const form = useForm({});
const submit = () => {

View File

@@ -9,7 +9,6 @@ import PrimaryButton from '@/Components/PrimaryButton.vue';
import SecondaryButton from '@/Components/SecondaryButton.vue';
import TextInput from '@/Components/TextInput.vue';
import type { User } from '@/types/models';
import route from 'ziggy-js';
const props = defineProps<{
user: User;

View File

@@ -1,6 +1,5 @@
<script setup lang="ts">
import { Head, Link, usePage } from '@inertiajs/vue3';
import route from 'ziggy-js';
import { computed } from 'vue';
import type { User } from '@/types/models';

View File

@@ -4,8 +4,7 @@ import type { DefineComponent } from 'vue';
import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/vue3';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
// @ts-expect-error - ziggy in composer is not typed
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
import { ZiggyVue } from 'ziggy-js';
import { createPinia } from 'pinia';
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';

View File

@@ -1,26 +1,87 @@
/* This file is generated by Ziggy. */
declare module 'ziggy-js' {
interface RouteList {
'scramble.docs.index': [];
'scramble.docs.api': [];
'filament.exports.download': [
{
'name': 'export';
'required': true;
'binding': 'id';
},
];
'filament.imports.failed-rows.download': [
{
'name': 'import';
'required': true;
'binding': 'id';
},
];
'filament.admin.auth.logout': [];
'filament.admin.pages.dashboard': [];
'filament.admin.resources.clients.index': [];
'filament.admin.resources.clients.create': [];
'filament.admin.resources.clients.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.organizations.index': [];
'filament.admin.resources.organizations.create': [];
'filament.admin.resources.organizations.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.projects.index': [];
'filament.admin.resources.projects.create': [];
'filament.admin.resources.projects.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.tags.index': [];
'filament.admin.resources.tags.create': [];
'filament.admin.resources.tags.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.tasks.index': [];
'filament.admin.resources.tasks.create': [];
'filament.admin.resources.tasks.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.time-entries.index': [];
'filament.admin.resources.time-entries.create': [];
'filament.admin.resources.time-entries.edit': [
{
'name': 'record';
'required': true;
},
];
'filament.admin.resources.users.index': [];
'filament.admin.resources.users.create': [];
'filament.admin.resources.users.edit': [
{
'name': 'record';
'required': true;
},
];
'login': [];
'logout': [];
'password.request': [];
'password.reset': [
{
'name': 'token';
'required': true;
},
];
'password.email': [];
@@ -30,9 +91,11 @@ declare module 'ziggy-js' {
'verification.verify': [
{
'name': 'id';
'required': true;
},
{
'name': 'hash';
'required': true;
},
];
'verification.send': [];
@@ -56,48 +119,58 @@ declare module 'ziggy-js' {
'teams.show': [
{
'name': 'team';
'required': true;
},
];
'teams.update': [
{
'name': 'team';
'required': true;
},
];
'teams.destroy': [
{
'name': 'team';
'required': true;
},
];
'current-team.update': [];
'team-members.store': [
{
'name': 'team';
'required': true;
},
];
'team-members.update': [
{
'name': 'team';
'required': true;
},
{
'name': 'user';
'required': true;
},
];
'team-members.destroy': [
{
'name': 'team';
'required': true;
},
{
'name': 'user';
'required': true;
},
];
'team-invitations.accept': [
{
'name': 'invitation';
'required': true;
},
];
'team-invitations.destroy': [
{
'name': 'invitation';
'required': true;
},
];
'passport.token': [];
@@ -109,6 +182,7 @@ declare module 'ziggy-js' {
'passport.tokens.destroy': [
{
'name': 'token_id';
'required': true;
},
];
'passport.clients.index': [];
@@ -116,11 +190,13 @@ declare module 'ziggy-js' {
'passport.clients.update': [
{
'name': 'client_id';
'required': true;
},
];
'passport.clients.destroy': [
{
'name': 'client_id';
'required': true;
},
];
'passport.scopes.index': [];
@@ -129,6 +205,7 @@ declare module 'ziggy-js' {
'passport.personal.tokens.destroy': [
{
'name': 'token_id';
'required': true;
},
];
'livewire.update': [];
@@ -136,12 +213,267 @@ declare module 'ziggy-js' {
'livewire.preview-file': [
{
'name': 'filename';
'required': true;
},
];
'ignition.healthCheck': [];
'ignition.executeSolution': [];
'ignition.updateConfig': [];
'api.v1.organizations.show': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.organizations.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.users.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.users.invite-placeholder': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'user';
'required': true;
'binding': 'id';
},
];
'api.v1.projects.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.projects.show': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'project';
'required': true;
'binding': 'id';
},
];
'api.v1.projects.store': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.projects.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'project';
'required': true;
'binding': 'id';
},
];
'api.v1.projects.destroy': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'project';
'required': true;
'binding': 'id';
},
];
'api.v1.time-entries.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.time-entries.store': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.time-entries.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'timeEntry';
'required': true;
'binding': 'id';
},
];
'api.v1.time-entries.destroy': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'timeEntry';
'required': true;
'binding': 'id';
},
];
'api.v1.tags.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.tags.store': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.tags.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'tag';
'required': true;
'binding': 'id';
},
];
'api.v1.tags.destroy': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'tag';
'required': true;
'binding': 'id';
},
];
'api.v1.clients.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.clients.store': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.clients.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'client';
'required': true;
'binding': 'id';
},
];
'api.v1.clients.destroy': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'client';
'required': true;
'binding': 'id';
},
];
'api.v1.tasks.index': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.tasks.store': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'api.v1.tasks.update': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'task';
'required': true;
'binding': 'id';
},
];
'api.v1.tasks.destroy': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
{
'name': 'task';
'required': true;
'binding': 'id';
},
];
'api.v1.import.import': [
{
'name': 'organization';
'required': true;
'binding': 'id';
},
];
'dashboard': [];
'telescope': [
{
'name': 'view';
'required': false;
},
];
'api.': [
{
'name': 'fallbackPlaceholder';
'required': true;
},
];
}
}
export {};

View File

@@ -1,8 +1,13 @@
const Ziggy = {
'url': 'http://localhost',
'url': 'http://solidtime.test',
'port': null,
'defaults': {},
'routes': {
'scramble.docs.index': {
'uri': 'docs/api.json',
'methods': ['GET', 'HEAD'],
},
'scramble.docs.api': { 'uri': 'docs/api', 'methods': ['GET', 'HEAD'] },
'filament.exports.download': {
'uri': 'filament/exports/{export}/download',
'methods': ['GET', 'HEAD'],
@@ -23,6 +28,97 @@ const Ziggy = {
'uri': 'admin',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.clients.index': {
'uri': 'admin/clients',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.clients.create': {
'uri': 'admin/clients/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.clients.edit': {
'uri': 'admin/clients/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.organizations.index': {
'uri': 'admin/organizations',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.organizations.create': {
'uri': 'admin/organizations/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.organizations.edit': {
'uri': 'admin/organizations/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.projects.index': {
'uri': 'admin/projects',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.projects.create': {
'uri': 'admin/projects/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.projects.edit': {
'uri': 'admin/projects/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.tags.index': {
'uri': 'admin/tags',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.tags.create': {
'uri': 'admin/tags/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.tags.edit': {
'uri': 'admin/tags/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.tasks.index': {
'uri': 'admin/tasks',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.tasks.create': {
'uri': 'admin/tasks/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.tasks.edit': {
'uri': 'admin/tasks/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.time-entries.index': {
'uri': 'admin/time-entries',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.time-entries.create': {
'uri': 'admin/time-entries/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.time-entries.edit': {
'uri': 'admin/time-entries/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'filament.admin.resources.users.index': {
'uri': 'admin/users',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.users.create': {
'uri': 'admin/users/create',
'methods': ['GET', 'HEAD'],
},
'filament.admin.resources.users.edit': {
'uri': 'admin/users/{record}/edit',
'methods': ['GET', 'HEAD'],
'parameters': ['record'],
},
'login': { 'uri': 'login', 'methods': ['GET', 'HEAD'] },
'logout': { 'uri': 'logout', 'methods': ['POST'] },
'password.request': {
@@ -227,12 +323,178 @@ const Ziggy = {
'uri': '_ignition/update-config',
'methods': ['POST'],
},
'api.v1.organizations.show': {
'uri': 'api/v1/organizations/{organization}',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.organizations.update': {
'uri': 'api/v1/organizations/{organization}',
'methods': ['PUT'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.users.index': {
'uri': 'api/v1/organizations/{organization}/members',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.users.invite-placeholder': {
'uri': 'api/v1/organizations/{organization}/members/{user}/invite-placeholder',
'methods': ['POST'],
'parameters': ['organization', 'user'],
'bindings': { 'organization': 'id', 'user': 'id' },
},
'api.v1.projects.index': {
'uri': 'api/v1/organizations/{organization}/projects',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.projects.show': {
'uri': 'api/v1/organizations/{organization}/projects/{project}',
'methods': ['GET', 'HEAD'],
'parameters': ['organization', 'project'],
'bindings': { 'organization': 'id', 'project': 'id' },
},
'api.v1.projects.store': {
'uri': 'api/v1/organizations/{organization}/projects',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.projects.update': {
'uri': 'api/v1/organizations/{organization}/projects/{project}',
'methods': ['PUT'],
'parameters': ['organization', 'project'],
'bindings': { 'organization': 'id', 'project': 'id' },
},
'api.v1.projects.destroy': {
'uri': 'api/v1/organizations/{organization}/projects/{project}',
'methods': ['DELETE'],
'parameters': ['organization', 'project'],
'bindings': { 'organization': 'id', 'project': 'id' },
},
'api.v1.time-entries.index': {
'uri': 'api/v1/organizations/{organization}/time-entries',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.time-entries.store': {
'uri': 'api/v1/organizations/{organization}/time-entries',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.time-entries.update': {
'uri': 'api/v1/organizations/{organization}/time-entries/{timeEntry}',
'methods': ['PUT'],
'parameters': ['organization', 'timeEntry'],
'bindings': { 'organization': 'id', 'timeEntry': 'id' },
},
'api.v1.time-entries.destroy': {
'uri': 'api/v1/organizations/{organization}/time-entries/{timeEntry}',
'methods': ['DELETE'],
'parameters': ['organization', 'timeEntry'],
'bindings': { 'organization': 'id', 'timeEntry': 'id' },
},
'api.v1.tags.index': {
'uri': 'api/v1/organizations/{organization}/tags',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.tags.store': {
'uri': 'api/v1/organizations/{organization}/tags',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.tags.update': {
'uri': 'api/v1/organizations/{organization}/tags/{tag}',
'methods': ['PUT'],
'parameters': ['organization', 'tag'],
'bindings': { 'organization': 'id', 'tag': 'id' },
},
'api.v1.tags.destroy': {
'uri': 'api/v1/organizations/{organization}/tags/{tag}',
'methods': ['DELETE'],
'parameters': ['organization', 'tag'],
'bindings': { 'organization': 'id', 'tag': 'id' },
},
'api.v1.clients.index': {
'uri': 'api/v1/organizations/{organization}/clients',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.clients.store': {
'uri': 'api/v1/organizations/{organization}/clients',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.clients.update': {
'uri': 'api/v1/organizations/{organization}/clients/{client}',
'methods': ['PUT'],
'parameters': ['organization', 'client'],
'bindings': { 'organization': 'id', 'client': 'id' },
},
'api.v1.clients.destroy': {
'uri': 'api/v1/organizations/{organization}/clients/{client}',
'methods': ['DELETE'],
'parameters': ['organization', 'client'],
'bindings': { 'organization': 'id', 'client': 'id' },
},
'api.v1.tasks.index': {
'uri': 'api/v1/organizations/{organization}/tasks',
'methods': ['GET', 'HEAD'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.tasks.store': {
'uri': 'api/v1/organizations/{organization}/tasks',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'api.v1.tasks.update': {
'uri': 'api/v1/organizations/{organization}/tasks/{task}',
'methods': ['PUT'],
'parameters': ['organization', 'task'],
'bindings': { 'organization': 'id', 'task': 'id' },
},
'api.v1.tasks.destroy': {
'uri': 'api/v1/organizations/{organization}/tasks/{task}',
'methods': ['DELETE'],
'parameters': ['organization', 'task'],
'bindings': { 'organization': 'id', 'task': 'id' },
},
'api.v1.import.import': {
'uri': 'api/v1/organizations/{organization}/import',
'methods': ['POST'],
'parameters': ['organization'],
'bindings': { 'organization': 'id' },
},
'dashboard': { 'uri': 'dashboard', 'methods': ['GET', 'HEAD'] },
'telescope': {
'uri': 'telescope/{view?}',
'methods': ['GET', 'HEAD'],
'wheres': { 'view': '(.*)' },
'parameters': ['view'],
},
'api.': {
'uri': 'api/{fallbackPlaceholder}',
'methods': ['GET', 'HEAD'],
'wheres': { 'fallbackPlaceholder': '.*' },
'parameters': ['fallbackPlaceholder'],
},
},
};
if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') {
Object.assign(Ziggy.routes, window.Ziggy.routes);
}
export { Ziggy };

View File

@@ -34,7 +34,6 @@ Route::middleware([
])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard');
Route::get('/time', function () {
return Inertia::render('Time');
})->name('time');

View File

@@ -182,10 +182,10 @@ class TimeEntryEndpointTest extends ApiEndpointTestAbstract
'time-entries:view:own',
]);
$timeEntriesDay1 = TimeEntry::factory()->forOrganization($data->organization)->forUser($data->user)
->startBetween(Carbon::now()->subDay()->startOfDay(), Carbon::now()->subDay()->endOfDay())
->startBetween(Carbon::now($data->user->timezone)->subDay()->startOfDay(), Carbon::now($data->user->timezone)->subDay()->endOfDay())
->createMany(3);
$timeEntriesDay2 = TimeEntry::factory()->forOrganization($data->organization)->forUser($data->user)
->startBetween(Carbon::now()->subDays(2)->startOfDay(), Carbon::now()->subDays(2)->endOfDay())
->startBetween(Carbon::now($data->user->timezone)->subDays(2)->startOfDay(), Carbon::now($data->user->timezone)->subDays(2)->endOfDay())
->createMany(3);
Passport::actingAs($data->user);

View File

@@ -2,8 +2,14 @@ import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';
import checker from 'vite-plugin-checker';
import path from 'path';
export default defineConfig({
resolve: {
alias: {
'ziggy-js': path.resolve('vendor/tightenco/ziggy'),
},
},
plugins: [
laravel({
input: 'resources/js/app.ts',