diff --git a/src/components/supply/PropertyDetailOverview.tsx b/src/components/supply/PropertyDetailOverview.tsx index fa24f79..d2fafbb 100644 --- a/src/components/supply/PropertyDetailOverview.tsx +++ b/src/components/supply/PropertyDetailOverview.tsx @@ -1,4 +1,5 @@ -import { Box, Divider, LinearProgress, TextField, Typography } from '@mui/material' +import { Box, Button, Divider, LinearProgress, TextField, Typography } from '@mui/material' +import { ExternalLink, FileText, Plus } from 'lucide-react' import type { Property, UpdatePropertyInput } from '../../domain/property' import { PropertyMap } from '../shared' import { getAssetTypeLabel, qualityColor } from './propertyHelpers' @@ -97,18 +98,75 @@ export function PropertyDetailOverview({ p, editing, draft, onDraftChange }: Pro onChange={e => onDraftChange({ ...draft, leaseEndDate: e.target.value })} /> + + + + Mietvertrag + + + + onDraftChange({ ...draft, leaseContractUrl: e.target.value })} + placeholder="https://…" + slotProps={{ input: { startAdornment: } }} + /> + onDraftChange({ ...draft, leaseContractName: e.target.value })} + placeholder="z.B. Mietvertrag 2021–2026" + /> + ) : ( - - - - - - - - - - + <> + + + + + + + + + + + + {/* Mietvertrag */} + + + + + Mietvertrag + + + {p.leaseContractUrl ? ( + + + {p.leaseContractName ?? 'Mietvertrag'} + + + + ) : ( + + Noch kein Mietvertrag hinterlegt — im Bearbeitungsmodus hinzufügen. + + )} + + )} {/* Floor / unit structure */} diff --git a/src/components/supply/ReminderDetailDrawer.tsx b/src/components/supply/ReminderDetailDrawer.tsx index d0d78dc..0da2c8c 100644 --- a/src/components/supply/ReminderDetailDrawer.tsx +++ b/src/components/supply/ReminderDetailDrawer.tsx @@ -12,9 +12,10 @@ import { FormControlLabel, Tooltip, } from '@mui/material' -import { X, MapPin, Calendar, DollarSign, Eye, Activity } from 'lucide-react' +import { X, MapPin, Calendar, DollarSign, Eye, Activity, FileText, ExternalLink } from 'lucide-react' import { useReminderStore } from '../../stores/reminderStore' import { useReminder, useCompleteReminder, useDismissReminder, useSnoozeReminder } from '../../hooks/useReminders' +import { usePropertyById } from '../../hooks/useProperties' import { ReminderPriorityBadge } from './ReminderPriorityBadge' import { ReminderTypeBadge } from './ReminderTypeBadge' import { ReminderDaysIndicator } from './ReminderDaysIndicator' @@ -24,6 +25,7 @@ import { SHADOW_RISK_COLOR, SHADOW_RISK_LABEL, STATUS_CHIP_COLOR, STATUS_LABEL, export function ReminderDetailDrawer() { const { selectedId, drawerOpen, setDrawerOpen, setSelectedId } = useReminderStore() const { data: reminder } = useReminder(selectedId ?? '') + const { data: reminderProperty } = usePropertyById(reminder?.propertyId ?? '') const complete = useCompleteReminder() const dismiss = useDismissReminder() const snooze = useSnoozeReminder() @@ -101,6 +103,27 @@ export function ReminderDetailDrawer() { Mieter: {reminder.tenantName} Fläche: {reminder.areaSqm.toLocaleString('de-CH')} m² + {reminderProperty?.leaseContractUrl ? ( + + + + + ) : ( + + + Kein Mietvertrag hinterlegt + + )} diff --git a/src/domain/property.ts b/src/domain/property.ts index 52303e3..6aacc62 100644 --- a/src/domain/property.ts +++ b/src/domain/property.ts @@ -135,6 +135,8 @@ export interface Property { description?: string images?: string[] floorPlanUrl?: string + leaseContractUrl?: string // link to the signed lease document + leaseContractName?: string // display label, e.g. "Mietvertrag 2021–2026" propertyNumber?: string units?: PropertyUnit[]