118 lines
3.1 KiB
Swift
118 lines
3.1 KiB
Swift
import Foundation
|
|
|
|
enum AppLanguage: String, CaseIterable {
|
|
case pl, en
|
|
|
|
static var initial: AppLanguage {
|
|
if let saved = UserDefaults.standard.string(forKey: "language"), let language = AppLanguage(rawValue: saved) {
|
|
return language
|
|
}
|
|
return Locale.current.language.languageCode?.identifier == "pl" ? .pl : .en
|
|
}
|
|
}
|
|
|
|
struct UserProfile: Codable, Equatable {
|
|
var id: Int?
|
|
var username: String?
|
|
var email: String?
|
|
var firstName: String?
|
|
var lastName: String?
|
|
var displayName: String?
|
|
var mobile: String?
|
|
var postcode: String?
|
|
var dob: String?
|
|
var cardNumber: String?
|
|
var cardAssigned: Bool?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id, username, email, mobile, dob
|
|
case firstName = "first_name"
|
|
case lastName = "last_name"
|
|
case displayName = "display_name"
|
|
case postcode = "kod_pocztowy"
|
|
case cardNumber = "numer_karty"
|
|
case cardAssigned = "card_assigned"
|
|
}
|
|
}
|
|
|
|
struct Loyalty: Codable, Equatable {
|
|
var points: FlexibleText?
|
|
var transactionsValue: FlexibleText?
|
|
var discountValue: FlexibleText?
|
|
var cardNumber: FlexibleText?
|
|
var savings: FlexibleText?
|
|
var firstName: FlexibleText?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case points, savings
|
|
case transactionsValue = "transactions_value"
|
|
case discountValue = "discount_value"
|
|
case cardNumber = "card_number"
|
|
case firstName = "first_name"
|
|
}
|
|
}
|
|
|
|
struct FlexibleText: Codable, Equatable {
|
|
let value: String
|
|
|
|
init(from decoder: Decoder) throws {
|
|
let container = try decoder.singleValueContainer()
|
|
if let string = try? container.decode(String.self) { value = string }
|
|
else if let integer = try? container.decode(Int.self) { value = String(integer) }
|
|
else if let decimal = try? container.decode(Double.self) { value = String(decimal) }
|
|
else { value = "" }
|
|
}
|
|
}
|
|
|
|
struct KasztelanMessage: Codable, Identifiable, Equatable {
|
|
let id: Int
|
|
let title: String
|
|
let text: String
|
|
let sentAt: Int
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id, title, text
|
|
case sentAt = "sent_at"
|
|
}
|
|
}
|
|
|
|
struct APIEnvelope: Codable {
|
|
var success: Bool? = nil
|
|
var token: String? = nil
|
|
var user: UserProfile? = nil
|
|
var loyalty: Loyalty? = nil
|
|
var notifications: [KasztelanMessage]? = nil
|
|
var notification: KasztelanMessage? = nil
|
|
var key: String? = nil
|
|
var payload: String? = nil
|
|
var updatedAt: Int? = nil
|
|
var code: String? = nil
|
|
var message: String? = nil
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case success, token, user, loyalty, notifications, notification, key, payload, code, message
|
|
case updatedAt = "updated_at"
|
|
}
|
|
}
|
|
|
|
struct RegistrationForm {
|
|
var firstName = ""
|
|
var lastName = ""
|
|
var email = ""
|
|
var password = ""
|
|
var mobile = ""
|
|
var postcode = ""
|
|
var dob = ""
|
|
var cardNumber = ""
|
|
var acceptsTerms = false
|
|
}
|
|
|
|
struct ProfileForm {
|
|
var firstName = ""
|
|
var lastName = ""
|
|
var email = ""
|
|
var mobile = ""
|
|
var postcode = ""
|
|
var dob = ""
|
|
}
|