feat: Anfragencenter Parts A–E — read/unread, prep wizard, offer flow, report preview
- 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>
This commit is contained in:
@@ -10,6 +10,8 @@ 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'>,
|
||||
|
||||
@@ -21,6 +21,21 @@ export const MockupInquiryProvider: IInquiryProvider = {
|
||||
store[idx] = { ...store[idx], status, updatedAt: new Date().toISOString() }
|
||||
return store[idx]
|
||||
},
|
||||
async markThreadAsRead(id: string): Promise<Inquiry> {
|
||||
const idx = store.findIndex(i => i.id === id)
|
||||
if (idx === -1) throw new Error(`Inquiry ${id} not found`)
|
||||
store[idx] = {
|
||||
...store[idx],
|
||||
isRead: true,
|
||||
unreadCount: 0,
|
||||
lastReadAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
}
|
||||
return store[idx]
|
||||
},
|
||||
async getUnreadCount(): Promise<number> {
|
||||
return store.reduce((sum, i) => sum + (i.unreadCount ?? 0), 0)
|
||||
},
|
||||
async addMessage(
|
||||
inquiryId: string,
|
||||
msg: Omit<InquiryMessage, 'id' | 'inquiryId' | 'createdAt'>,
|
||||
|
||||
Reference in New Issue
Block a user