// // Results.swift // Befund // // Created by Irakli Abetschkhrischwili on 26.05.22. // Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved. import Foundation import UIKit extension Core.Models { public struct Database { /** * Database results object */ public struct Results { public enum ResultsStatus : String { case NONE case CREATED case REJECTED case EXPIRED case COMPLETED case DELETED } public var pgs: String? = nil public var pat_hash: String? = nil public var available: Bool = false public var available_ts: String? = nil public var picked_up: Bool = false public var picked_up_ts: String? = nil public var file_checksum: String? = nil public var status: String? = nil public var modified: String? = nil public var created: String? = nil public func GetStatus() -> Core.Models.Database.Results.ResultsStatus { switch(self.status) { case "CREATED": return .CREATED case "REJECTED": return .REJECTED case "EXPIRED": return .EXPIRED case "COMPLETED": return .COMPLETED case "DELETED": return .DELETED default: return .NONE } } /** * Returns translated status of object */ public func GetStatusText() -> String { var result: String = Core.Lang.Get(key: "LBL_PENDING") if(self.available && self.GetStatus() == .COMPLETED && !self.picked_up) { result = Core.Lang.Get(key: "LBL_READY_TO_DOWNLOAD") } else if(self.available && self.GetStatus() == .COMPLETED && self.picked_up) { result = Core.Lang.Get(key: "LBL_ALREADY_DOWNLOAD") } else if(!self.available && self.GetStatus() == .REJECTED) { result = Core.Lang.Get(key: "LBL_REJECTED") } else if(!self.available && self.GetStatus() == .EXPIRED) { result = Core.Lang.Get(key: "LBL_EXPIRED") } return result } /** * Returns icon of the results status */ public func GetStatusIcon() -> UIImage { var result: UIImage = UIImage(named: "ic_opacity")! if(self.available && self.GetStatus() == .COMPLETED && !self.picked_up) { result = UIImage(named: "ic_file_download")! } else if(self.available && self.GetStatus() == .COMPLETED && self.picked_up) { result = UIImage(named: "ic_picture_as_pdf")! } else if(!self.available && self.GetStatus() == .REJECTED) { result = UIImage(named: "ic_do_not_disturb_on")! } else if(!self.available && self.GetStatus() == .EXPIRED) { result = UIImage(named: "ic_av_timer")! } return result } /** * Returns color of the results status */ public func GetStatusColor() -> UIColor { var result: UIColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1) if(self.available && self.GetStatus() == .COMPLETED && !self.picked_up) { result = UIColor(red: 101/255, green: 246/255, blue: 107/255, alpha: 1) } else if(self.available && self.GetStatus() == .COMPLETED && self.picked_up) { result = UIColor(red: 250/255, green: 138/255, blue: 47/255, alpha: 1) } else if(!self.available && self.GetStatus() == .REJECTED) { result = UIColor(red: 250/255, green: 46/255, blue: 46/255, alpha: 1) } else if(!self.available && self.GetStatus() == .EXPIRED) { result = UIColor(red: 250/255, green: 46/255, blue: 46/255, alpha: 1) } return result } /** * Returns formated modified date */ public func GetModified() -> Date? { var result: Date? = nil let dateFormatter = DateFormatter() if(self.modified != nil) { dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" result = dateFormatter.date(from: self.modified!) } return result } /** * Returns formated created date */ public func GetCreated() -> Date? { var result: Date? = nil let dateFormatter = DateFormatter() if(self.created != nil) { dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" result = dateFormatter.date(from: self.created!) } return result } /** * Returns formated available date */ public func GetAvailableTS() -> Date? { var result: Date? = nil let dateFormatter = DateFormatter() if(self.available_ts != nil) { dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" result = dateFormatter.date(from: available_ts!) } return result } /** * Returns formated pickedup date */ public func GetPickedUpTS() -> Date? { var result: Date? = nil let dateFormatter = DateFormatter() if(self.picked_up_ts != nil) { dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" result = dateFormatter.date(from: self.picked_up_ts!) } return result } /** * Returns formated modified date as string */ public func GetFormatedModifiedDate() -> String? { var result: String? = nil if(self.modified != nil) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy HH:mm:ss" result = dateFormatter.string(from: self.GetModified()!) } return result } /** * Returns formated created date as string */ public func GetFormatedCreatedDate() -> String? { var result: String? = nil if(self.created != nil) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy HH:mm:ss" result = dateFormatter.string(from: self.GetCreated()!) } return result } /** * Returns formated available date as string */ public func GetFormatedAvailableTSDate() -> String? { var result: String? = nil if(self.available_ts != nil) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy HH:mm:ss" result = dateFormatter.string(from: self.GetAvailableTS()!) } return result } /** * Returns formated picked up date as string */ public func GetFormatedPickedUpTSDate() -> String? { var result: String? = nil if(self.picked_up_ts != nil) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy HH:mm:ss" result = dateFormatter.string(from: self.GetPickedUpTS()!) } return result } } } }