diff --git a/NautilusDeskTimeFrontend/app/components/Header.vue b/NautilusDeskTimeFrontend/app/components/Header.vue deleted file mode 100644 index e1859fb..0000000 --- a/NautilusDeskTimeFrontend/app/components/Header.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - NautilusDesk - - - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/components/Logo.vue b/NautilusDeskTimeFrontend/app/components/Logo.vue deleted file mode 100644 index b00a6b5..0000000 --- a/NautilusDeskTimeFrontend/app/components/Logo.vue +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/NautilusDeskTimeFrontend/app/components/Menus/LocationsMenu.vue b/NautilusDeskTimeFrontend/app/components/Menus/LocationsMenu.vue deleted file mode 100644 index 0402517..0000000 --- a/NautilusDeskTimeFrontend/app/components/Menus/LocationsMenu.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/components/Menus/UserMenu.vue b/NautilusDeskTimeFrontend/app/components/Menus/UserMenu.vue deleted file mode 100644 index 2a2e63c..0000000 --- a/NautilusDeskTimeFrontend/app/components/Menus/UserMenu.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/components/NotificationsSlideover.vue b/NautilusDeskTimeFrontend/app/components/NotificationsSlideover.vue deleted file mode 100644 index c5b87a5..0000000 --- a/NautilusDeskTimeFrontend/app/components/NotificationsSlideover.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - {{ notification.sender.name }} - - - - - - {{ notification.body }} - - - - - - \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/components/customers/AddModal.vue b/NautilusDeskTimeFrontend/app/components/customers/AddModal.vue deleted file mode 100644 index 83d95aa..0000000 --- a/NautilusDeskTimeFrontend/app/components/customers/AddModal.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/components/customers/DeleteModal.vue b/NautilusDeskTimeFrontend/app/components/customers/DeleteModal.vue deleted file mode 100644 index 8628f19..0000000 --- a/NautilusDeskTimeFrontend/app/components/customers/DeleteModal.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/composables/useAppHead.ts b/NautilusDeskTimeFrontend/app/composables/useAppHead.ts index a46e351..e69de29 100644 --- a/NautilusDeskTimeFrontend/app/composables/useAppHead.ts +++ b/NautilusDeskTimeFrontend/app/composables/useAppHead.ts @@ -1,3 +0,0 @@ -export function useAppHead() { - useHead({ titleTemplate: 'NautilusDesk · Dive School' }) -} \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/composables/useDashboard.ts b/NautilusDeskTimeFrontend/app/composables/useDashboard.ts index be422a7..e69de29 100644 --- a/NautilusDeskTimeFrontend/app/composables/useDashboard.ts +++ b/NautilusDeskTimeFrontend/app/composables/useDashboard.ts @@ -1,25 +0,0 @@ -import { createSharedComposable } from '@vueuse/core' - -const _useDashboard = () => { - const route = useRoute() - const router = useRouter() - const isNotificationsSlideoverOpen = ref(false) - - defineShortcuts({ - 'g-h': () => router.push('/'), - 'g-i': () => router.push('/inbox'), - 'g-c': () => router.push('/customers'), - 'g-s': () => router.push('/settings'), - 'n': () => isNotificationsSlideoverOpen.value = !isNotificationsSlideoverOpen.value - }) - - watch(() => route.fullPath, () => { - isNotificationsSlideoverOpen.value = false - }) - - return { - isNotificationsSlideoverOpen - } -} - -export const useDashboard = createSharedComposable(_useDashboard) \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/composables/useShiftApi.ts b/NautilusDeskTimeFrontend/app/composables/useShiftApi.ts deleted file mode 100644 index 1933b42..0000000 --- a/NautilusDeskTimeFrontend/app/composables/useShiftApi.ts +++ /dev/null @@ -1,59 +0,0 @@ -export type ShiftAssignmentPayload = { - employee_id: string -} - -export type CreateShiftPayload = { - date: string - type: string - start_time: string - end_time: string - assignments?: ShiftAssignmentPayload[] -} - -export type ShiftResponse = { - id: string - date: string - type: string - start_time: string - end_time: string - assignments: { - id: string - name: string - }[] -} - -const buildHeaders = (orgId: string) => ({ - 'X-Org-Id': orgId -}) - -export const useShiftApi = () => { - const getShifts = (branchId: string, from: string, to: string, orgId: string) => { - return $fetch(`/shifts/branches/${branchId}`, { - method: 'GET', - headers: buildHeaders(orgId), - query: { from, to } - }) - } - - const createShift = (branchId: string, payload: CreateShiftPayload, orgId: string) => { - return $fetch(`/shifts/branches/${branchId}`, { - method: 'POST', - headers: buildHeaders(orgId), - body: payload - }) - } - - const assignEmployees = (shiftId: string, payload: ShiftAssignmentPayload[], orgId: string) => { - return $fetch(`/shifts/${shiftId}/assignments`, { - method: 'POST', - headers: buildHeaders(orgId), - body: { assignments: payload } - }) - } - - return { - getShifts, - createShift, - assignEmployees - } -} diff --git a/NautilusDeskTimeFrontend/app/layouts/default.vue b/NautilusDeskTimeFrontend/app/layouts/default.vue index f6e591d..e69de29 100644 --- a/NautilusDeskTimeFrontend/app/layouts/default.vue +++ b/NautilusDeskTimeFrontend/app/layouts/default.vue @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/abwesenheiten.vue b/NautilusDeskTimeFrontend/app/pages/abwesenheiten.vue deleted file mode 100644 index 86267f0..0000000 --- a/NautilusDeskTimeFrontend/app/pages/abwesenheiten.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Diese Seite ist in Vorbereitung. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/dienstplan.vue b/NautilusDeskTimeFrontend/app/pages/dienstplan.vue deleted file mode 100644 index bd415c8..0000000 --- a/NautilusDeskTimeFrontend/app/pages/dienstplan.vue +++ /dev/null @@ -1,848 +0,0 @@ - - - - - - - - - - - - - - - - - Woche - {{ weekLabel }} - - - - - - - - - - - - - - - - {{ mobileDay?.label }} - - - - - - - - - - - - - - - - - {{ day.label }} - - - - - - - - {{ shift.start_time }} – {{ shift.end_time }} - - - {{ shift.label }} - - - - - {{ assignment.name }} - ⚠ - - Noch - niemand - zugewiesen. - - - - + Mitarbeiter hinzufügen - - - - ⚠ Überschneidung im Dienstplan - - - - - - - - - - - - - - - - - {{ shift.start_time }} – {{ shift.end_time }} - - - {{ shift.label }} - - - - - {{ assignment.name }} - ⚠ - - Noch niemand - zugewiesen. - - - - + Mitarbeiter hinzufügen - - - - ⚠ Überschneidung im Dienstplan - - - - - - - - - - Datum - - - - - Beginn - - - - Ende - - - - - Bezeichnung (optional) - - - - Notiz (optional) - - - - - - - - - - - - - - - - Schicht - - {{ assignContext?.date }} · {{ assignContext?.start_time }} – {{ assignContext?.end_time - }} - - {{ assignContext?.label }} - - - - Mitarbeiter suchen - - - - - - Verfügbar - - - {{ employee.name }} - - - - - Teilweise verfügbar - - - {{ employee.name }} - - ({{ employee.partial.map((item) => `${item.start_time}–${item.end_time}`).join(', ') }}) - - - - - - Nicht verfügbar - - - {{ employee.name }} - - - - - Unbekannt - - - {{ employee.name }} - - - - - - - - - - - - - - - - - - Von - - - - Bis - - - - - - Optionen - - - - Verfügbarkeiten beachten - - - - Überschneidungen vermeiden - - - - Fair verteilen - - - - - - Ergebnis - - {{ autoScheduleResult.assigned.length }} Schichten belegt - - - {{ autoScheduleResult.unfilled.length }} Schichten offen - - - - - - - - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/filialen.vue b/NautilusDeskTimeFrontend/app/pages/filialen.vue deleted file mode 100644 index 81d85d9..0000000 --- a/NautilusDeskTimeFrontend/app/pages/filialen.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Diese Seite ist in Vorbereitung. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/login.vue b/NautilusDeskTimeFrontend/app/pages/login.vue deleted file mode 100644 index a78a40c..0000000 --- a/NautilusDeskTimeFrontend/app/pages/login.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/mitarbeiter.vue b/NautilusDeskTimeFrontend/app/pages/mitarbeiter.vue deleted file mode 100644 index 4122605..0000000 --- a/NautilusDeskTimeFrontend/app/pages/mitarbeiter.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Diese Seite ist in Vorbereitung. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/settings/index.vue b/NautilusDeskTimeFrontend/app/pages/settings/index.vue deleted file mode 100644 index f9b94b6..0000000 --- a/NautilusDeskTimeFrontend/app/pages/settings/index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - Allgemeine Einstellungen kommen hier hin. - - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/settings/members.vue b/NautilusDeskTimeFrontend/app/pages/settings/members.vue deleted file mode 100644 index 73a7bfd..0000000 --- a/NautilusDeskTimeFrontend/app/pages/settings/members.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Mitgliederverwaltung kommt hier hin. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/settings/notifications.vue b/NautilusDeskTimeFrontend/app/pages/settings/notifications.vue deleted file mode 100644 index 644db45..0000000 --- a/NautilusDeskTimeFrontend/app/pages/settings/notifications.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Benachrichtigungseinstellungen kommen hier hin. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/settings/security.vue b/NautilusDeskTimeFrontend/app/pages/settings/security.vue deleted file mode 100644 index a92317a..0000000 --- a/NautilusDeskTimeFrontend/app/pages/settings/security.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - Sicherheitseinstellungen kommen hier hin. - - - - - diff --git a/NautilusDeskTimeFrontend/app/pages/verfuegbarkeit.vue b/NautilusDeskTimeFrontend/app/pages/verfuegbarkeit.vue deleted file mode 100644 index f93dc53..0000000 --- a/NautilusDeskTimeFrontend/app/pages/verfuegbarkeit.vue +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - Standardzeiten und Tagesausnahmen pflegen. - - - - - - - Filiale auswählen - - - {{ branch.name }} - - - - - - Mitarbeiter auswählen - - - {{ employee.name }} - - - - - - - - - - - - - - - - - - - - - - - {{ day.short }} - {{ day.label }} - - - - - - - {{ rule.start_time }} – {{ rule.end_time }} - - - - - - - - Start - - - - Ende - - - - - - - - - - - - - - - Von - - - - Bis - - - - - - - - - - - Neue Ausnahme - Tagesausnahme hinzufügen - - - - - - Datum - - - - Start - - - - Ende - - - - Typ - - Verfügbar - Nicht verfügbar - - - - - - - - - {{ entry.date }} · {{ entry.start_time }} – {{ entry.end_time }} - - - {{ entry.is_available ? 'Verfügbar' : 'Nicht verfügbar' }} - - - - - - - - - diff --git a/NautilusDeskTimeFrontend/app/types/index.d.ts b/NautilusDeskTimeFrontend/app/types/index.d.ts index daf9224..e69de29 100644 --- a/NautilusDeskTimeFrontend/app/types/index.d.ts +++ b/NautilusDeskTimeFrontend/app/types/index.d.ts @@ -1,60 +0,0 @@ -import type { AvatarProps } from '@nuxt/ui' - -export type UserStatus = 'subscribed' | 'unsubscribed' | 'bounced' -export type SaleStatus = 'paid' | 'failed' | 'refunded' - -export interface User { - id: number - name: string - email: string - avatar?: AvatarProps - status: UserStatus - location: string -} - -export interface Mail { - id: number - unread?: boolean - from: User - subject: string - body: string - date: string -} - -export interface Member { - name: string - username: string - role: 'member' | 'owner' - avatar: AvatarProps -} - -export interface Stat { - title: string - icon: string - value: number | string - variation: number - formatter?: (value: number) => string -} - -export interface Sale { - id: string - date: string - status: SaleStatus - email: string - amount: number -} - -export interface Notification { - id: number - unread?: boolean - sender: User - body: string - date: string -} - -export type Period = 'daily' | 'weekly' | 'monthly' - -export interface Range { - start: Date - end: Date -} \ No newline at end of file diff --git a/NautilusDeskTimeFrontend/app/utils/api.ts b/NautilusDeskTimeFrontend/app/utils/api.ts index 89f18b9..e69de29 100644 --- a/NautilusDeskTimeFrontend/app/utils/api.ts +++ b/NautilusDeskTimeFrontend/app/utils/api.ts @@ -1,81 +0,0 @@ -type ScheduleOptions = { - respect_availability: boolean - avoid_overlaps: boolean - fair_distribution: boolean -} - -const getAuthToken = () => { - if (typeof window !== 'undefined') { - const token = window.localStorage.getItem('auth_token') - if (token) { - return token - } - } - return 'placeholder-token' -} - -const buildHeaders = (orgId: string) => ({ - 'X-Org-Id': orgId, - Authorization: `Bearer ${getAuthToken()}` -}) - -export const getAvailabilityRules = (employeeId: string, orgId: string) => { - return $fetch(`/availability/employees/${employeeId}/rules`, { - method: 'GET', - headers: buildHeaders(orgId) - }) -} - -export const addAvailabilityRule = (employeeId: string, payload: any, orgId: string) => { - return $fetch(`/availability/employees/${employeeId}/rules`, { - method: 'POST', - headers: buildHeaders(orgId), - body: payload - }) -} - -export const deleteAvailabilityRule = (ruleId: string, orgId: string) => { - return $fetch(`/availability/rules/${ruleId}`, { - method: 'DELETE', - headers: buildHeaders(orgId) - }) -} - -export const getAvailabilityOverrides = (employeeId: string, from: string, to: string, orgId: string) => { - return $fetch(`/availability/employees/${employeeId}/overrides`, { - method: 'GET', - headers: buildHeaders(orgId), - query: { from, to } - }) -} - -export const addAvailabilityOverride = (employeeId: string, payload: any, orgId: string) => { - return $fetch(`/availability/employees/${employeeId}/overrides`, { - method: 'POST', - headers: buildHeaders(orgId), - body: payload - }) -} - -export const deleteAvailabilityOverride = (overrideId: string, orgId: string) => { - return $fetch(`/availability/overrides/${overrideId}`, { - method: 'DELETE', - headers: buildHeaders(orgId) - }) -} - -export const generateSchedule = ( - branchId: string, - from: string, - to: string, - options: ScheduleOptions, - apply: boolean, - orgId: string -) => { - return $fetch(`/scheduling/branches/${branchId}/generate`, { - method: 'POST', - headers: buildHeaders(orgId), - query: { apply }, - body: { from, to, mode: 'DRAFT', options } - }) -}
- {{ notification.sender.name }} - - -
- {{ notification.body }} -