Add PDF maintenance report generation feature for Android and iOS

- Add generateTasksReport API endpoint in ResidenceApi
- Implement report generation button in Android residence detail screen
- Add report generation state management in shared ResidenceViewModel
- Add report generation button to iOS residence detail view toolbar
- Implement iOS-specific report generation logic in ResidenceViewModel
- Display loading spinner and success/error alerts for report generation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-11-09 10:12:22 -06:00
parent da0493e165
commit e6dc54017b
5 changed files with 148 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ struct ResidenceDetailView: View {
@State private var selectedTaskForEdit: TaskDetail?
@State private var selectedTaskForComplete: TaskDetail?
@State private var hasAppeared = false
@State private var showReportAlert = false
var body: some View {
ZStack {
@@ -105,6 +106,20 @@ struct ResidenceDetailView: View {
}
ToolbarItemGroup(placement: .navigationBarTrailing) {
// Generate Report button
if viewModel.selectedResidence != nil {
Button(action: {
viewModel.generateTasksReport(residenceId: residenceId)
}) {
if viewModel.isGeneratingReport {
ProgressView()
} else {
Image(systemName: "doc.text")
}
}
.disabled(viewModel.isGeneratingReport)
}
// Manage Users button - only show for primary owners
if let residence = viewModel.selectedResidence, residence.isPrimaryOwner {
Button(action: {
@@ -164,6 +179,16 @@ struct ResidenceDetailView: View {
loadResidenceTasks()
}
}
.onChange(of: viewModel.reportMessage) { message in
if message != nil {
showReportAlert = true
}
}
.alert("Maintenance Report", isPresented: $showReportAlert) {
Button("OK", role: .cancel) { }
} message: {
Text(viewModel.reportMessage ?? "")
}
.onAppear {
loadResidenceData()
}