import Foundation
public final class CompanyDirectoryContact: NSObject, Sendable {
public let id: String
public let pk: Data
public let first: String?
public let last: String?
public let csi: String?
public let jobTitle: String?
public let department: String?
public let cat: [String]?
public let org: String?
public let availability: String?
public var workAvailabilityStatus: WorkAvailabilityStatus? {
WorkAvailabilityStatus.fromEncodedString(availability)
}
public init(dictionary: [AnyHashable: Any?]) {
self.id = dictionary["id"] as! String
self.pk = NSData(
base64Encoded: dictionary["pk"] as! String,
options: NSData.Base64DecodingOptions.ignoreUnknownCharacters
)! as Data
if let tmp = dictionary["first"] as? String {
self.first = tmp
}
else {
self.first = ""
}
if let tmp = dictionary["last"] as? String {
self.last = tmp
}
else {
self.last = ""
}
if let tmp = dictionary["csi"] as? String {
self.csi = tmp
}
else {
self.csi = ""
}
self.jobTitle = dictionary["jobTitle"] as? String
self.department = dictionary["department"] as? String
if let tmp = dictionary["cat"] as? [String] {
self.cat = tmp
}
else {
self.cat = []
}
if let orgDict = dictionary["org"] as? [AnyHashable: String], let orgName = orgDict["name"] {
self.org = orgName
}
else {
self.org = ""
}
self.availability = dictionary["availability"] as? String
}
public func fullName() -> String {
var fullName = ""
if UserSettings.shared().displayOrderFirstName == true {
if first != nil {
fullName.append(first!)
}
if last != nil {
if !fullName.isEmpty {
fullName.append(" ")
}
fullName.append(last!)
}
}
else {
if last != nil {
fullName.append(last!)
}
if first != nil {
if !fullName.isEmpty {
fullName.append(" ")
}
fullName.append(first!)
}
}
return fullName
}
public func fullNameWithCSI() -> String {
// swiftformat:disable:next redundantSelf
var fullName = self.fullName()
if csi != nil {
if !fullName.isEmpty {
fullName.append(" ")
}
fullName.append("(" + csi! + ")")
}
return fullName
}
public func categoryString() -> String {
if cat != nil {
let categoryDict: [String: String] = MyIdentityStore.shared().directoryCategories as! [String: String]
var categoryString = ""
for category in cat! {
if !categoryString.isEmpty {
categoryString.append(", ")
}
if let catName = categoryDict[category] {
categoryString.append(catName)
}
}
return categoryString
}
return ""
}
public func categoryWithOrganisationString() -> String {
let catString = categoryString()
if let organisationName = org, !organisationName.isEmpty,
organisationName != MyIdentityStore.shared().companyName {
if !catString.isEmpty {
return organisationName + ", " + catString
}
return organisationName
}
return categoryString()
}
}
¤ Dauer der Verarbeitung: 0.7 Sekunden
¤
*© Formatika GbR, Deutschland