Add lead workflows, PDF signing, AR projects and photo gallery integration
This commit is contained in:
53
GasTankAR/Views/Leads/Overview/LeadPresentation.swift
Normal file
53
GasTankAR/Views/Leads/Overview/LeadPresentation.swift
Normal file
@ -0,0 +1,53 @@
|
||||
import SwiftUI
|
||||
|
||||
enum LeadOverviewStyle {
|
||||
static let blue = Color(red: 0, green: 0.44, blue: 0.80)
|
||||
static let successGreen = Color(red: 0.12, green: 0.53, blue: 0.38)
|
||||
static let background = Color(uiColor: .systemGroupedBackground)
|
||||
}
|
||||
|
||||
/// Formatting shared by the overview and the selected lead's detail screen.
|
||||
extension Lead {
|
||||
var displayName: String {
|
||||
companyName ?? [contact?.title, contact?.firstName, contact?.lastName]
|
||||
.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: " ")
|
||||
}
|
||||
|
||||
var locality: String { "\(address.postalCode) \(address.city)" }
|
||||
|
||||
var fullAddress: String {
|
||||
[address.street, locality].compactMap { $0 }.joined(separator: ", ")
|
||||
}
|
||||
}
|
||||
|
||||
extension LeadError {
|
||||
var message: LocalizedStringResource {
|
||||
switch self {
|
||||
case .offline: "Keine Internetverbindung. Bitte prüfe deine Verbindung."
|
||||
case .timeout: "Der Server antwortet derzeit nicht. Bitte versuche es erneut."
|
||||
case .serviceUnavailable: "Die Interessenten konnten gerade nicht geladen werden."
|
||||
case .unauthorized: "Deine Sitzung ist abgelaufen. Bitte melde dich erneut an."
|
||||
case .forbidden: "Du hast keine Berechtigung für diesen Vorgang."
|
||||
case .notFound: "Dieser Interessent ist nicht mehr verfügbar. Bitte aktualisiere die Übersicht."
|
||||
case .invalidResponse: "Die Serverantwort konnte nicht verarbeitet werden."
|
||||
case .unexpected: "Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut."
|
||||
}
|
||||
}
|
||||
|
||||
var allowsRetry: Bool {
|
||||
self != .unauthorized && self != .forbidden
|
||||
}
|
||||
}
|
||||
|
||||
enum LeadOverviewSelection: String, CaseIterable, Identifiable {
|
||||
case newest, alphabetical, open
|
||||
var id: Self { self }
|
||||
|
||||
var title: LocalizedStringKey {
|
||||
switch self {
|
||||
case .newest: "Neueste"
|
||||
case .alphabetical: "A–Z"
|
||||
case .open: "Offen"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user