b4d398270f
- Part A: Replace InquiryStatus badges with WhatsApp-style unread indicators (isRead, unreadCount, lastReadAt on Inquiry; markThreadAsRead in service + hook) - Part B: RelatedPropertyCardPanel — reposition "Objekt ansehen", add "Weitere Matches" section via matchService.getAdditionalMatchesForInquiry - Part C: PreparationWizard 4-step dialog — property selection, report generation progress, field editing + ReportObjectFieldSelector, PDF preview + finalize - Part D: OfferCreationWizard 4-step dialog triggered from first tenant message — data capture, field editing, viewing appointments, PDF generation + attach to reply - Part E: LatentInquiryReportPreview (2-page A4 doc), ReportObjectFieldSelector (5 accordion groups, 35+ optional fields), mapImageUrl on Property domain Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
608 B
TypeScript
20 lines
608 B
TypeScript
import type { Inquiry, InquiryStatus, InquiryMessage } from '../domain/inquiry'
|
|
|
|
export interface InquiryFilters {
|
|
status?: InquiryStatus
|
|
propertyId?: string
|
|
organizationId?: string
|
|
}
|
|
|
|
export interface IInquiryProvider {
|
|
getAll(filters?: InquiryFilters): Promise<Inquiry[]>
|
|
getById(id: string): Promise<Inquiry | null>
|
|
updateStatus(id: string, status: InquiryStatus): Promise<Inquiry>
|
|
markThreadAsRead(id: string): Promise<Inquiry>
|
|
getUnreadCount(): Promise<number>
|
|
addMessage(
|
|
inquiryId: string,
|
|
msg: Omit<InquiryMessage, 'id' | 'inquiryId' | 'createdAt'>,
|
|
): Promise<Inquiry>
|
|
}
|