diff options
Diffstat (limited to 'DomainDig/DomainViewModel.swift')
| -rw-r--r-- | DomainDig/DomainViewModel.swift | 105 |
1 files changed, 1 insertions, 104 deletions
diff --git a/DomainDig/DomainViewModel.swift b/DomainDig/DomainViewModel.swift index b5f51c3..fdf6b84 100644 --- a/DomainDig/DomainViewModel.swift +++ b/DomainDig/DomainViewModel.swift @@ -1546,40 +1546,6 @@ final class DomainViewModel { return try? DomainReportExporter.data(for: currentReport, format: format) } - func audits(for domain: String) -> [AuditSession] { - auditSessions - .filter { $0.domain.caseInsensitiveCompare(domain) == .orderedSame } - .sorted { $0.createdAt > $1.createdAt } - } - - func auditSession(withID id: UUID) -> AuditSession? { - auditSessions.first(where: { $0.id == id }) - } - - func auditTimeline(for domain: String) -> [AuditTimelinePoint] { - let sessions = audits(for: domain).sorted { $0.createdAt > $1.createdAt } - return sessions.map { session in - let repeatedIssues = sessions - .filter { $0.id != session.id } - .flatMap(\.findings) - .map { $0.title.lowercased() } - let repeatedIssueCount = session.findings.filter { - repeatedIssues.contains($0.title.lowercased()) - }.count - - return AuditTimelinePoint( - id: session.id, - sessionID: session.id, - domain: session.domain, - createdAt: session.createdAt, - status: session.status, - findingCount: session.findings.count, - openHighSeverityCount: session.findings.filter { $0.severity == .high && $0.status != .resolved }.count, - repeatedIssueCount: repeatedIssueCount - ) - } - } - @discardableResult func startAudit(for domain: String, reviewer: String? = nil) async -> AuditSession? { let normalizedDomain = domain @@ -1625,75 +1591,6 @@ final class DomainViewModel { return session } - func updateAuditStatus(_ status: AuditStatus, sessionID: UUID) { - guard let index = auditSessions.firstIndex(where: { $0.id == sessionID }) else { return } - auditSessions[index].status = status - persistAuditSessions() - } - - func updateAuditNotes(_ notes: String, sessionID: UUID) { - guard let index = auditSessions.firstIndex(where: { $0.id == sessionID }) else { return } - auditSessions[index].notes = notes.trimmingCharacters(in: .whitespacesAndNewlines) - persistAuditSessions() - } - - func toggleAuditChecklistItem(sessionID: UUID, itemID: UUID) { - guard let sessionIndex = auditSessions.firstIndex(where: { $0.id == sessionID }), - let itemIndex = auditSessions[sessionIndex].checklist.firstIndex(where: { $0.id == itemID }) else { - return - } - - auditSessions[sessionIndex].checklist[itemIndex].isComplete.toggle() - auditSessions[sessionIndex].checklist[itemIndex].completedAt = auditSessions[sessionIndex].checklist[itemIndex].isComplete ? Date() : nil - persistAuditSessions() - } - - func addAuditFinding( - sessionID: UUID, - title: String, - severity: AuditFindingSeverity, - summary: String, - evidenceReferences: [String], - notes: String, - checklistAreas: [AuditChecklistArea] - ) { - guard let index = auditSessions.firstIndex(where: { $0.id == sessionID }) else { return } - let finding = AuditFinding( - title: title, - severity: severity, - summary: summary, - evidenceReferences: evidenceReferences, - notes: notes, - status: .open, - checklistAreas: checklistAreas - ) - auditSessions[index].findings.insert(finding, at: 0) - persistAuditSessions() - } - - func updateAuditFinding(_ finding: AuditFinding, sessionID: UUID) { - guard let sessionIndex = auditSessions.firstIndex(where: { $0.id == sessionID }), - let findingIndex = auditSessions[sessionIndex].findings.firstIndex(where: { $0.id == finding.id }) else { - return - } - - var updatedFinding = finding - updatedFinding.updatedAt = Date() - auditSessions[sessionIndex].findings[findingIndex] = updatedFinding - persistAuditSessions() - } - - func removeAuditFindings(at offsets: IndexSet, sessionID: UUID) { - guard let sessionIndex = auditSessions.firstIndex(where: { $0.id == sessionID }) else { return } - auditSessions[sessionIndex].findings.remove(atOffsets: offsets) - persistAuditSessions() - } - - func exportAuditData(sessionID: UUID, format: AuditExportFormat) -> Data? { - guard let session = auditSession(withID: sessionID) else { return nil } - return try? AuditExporter.data(for: session, format: format) - } - func loadOwnershipHistory() async { guard !searchedDomain.isEmpty else { return } guard DataAccessService.hasAccess(to: .ownershipHistory) else { @@ -2605,7 +2502,7 @@ final class DomainViewModel { DomainDebugLog.signpostEnd("DomainViewModel.persistHistory", start: persistStartedAt, extra: "count=\(history.count)") } - private func persistAuditSessions() { + func persistAuditSessions() { DomainDataPortabilityService.saveAuditSessions(auditSessions) refreshDataLifecycleSummary() } |
