Coinly/Coinly/Features/Models/AccountModel.swift
2025-03-03 01:22:28 +00:00

90 lines
3 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Foundation
class AccountModel: ObservableObject, Identifiable, Codable {
let id: String
@Published var name: String
@Published var balance: Double
@Published var type: AccountType
@Published var icon: String
@Published var isDefault: Bool
@Published var currency: AppSettings.Currency
@Published var isActive: Bool
@Published var isArchived: Bool
var balanceInDefaultCurrency: Double {
// TODO: Implement currency conversion
// Пока просто возвращаем баланс без конвертации
balance
}
static let sampleData = AccountModel(
name: "Sample Account",
balance: 1000,
type: .cash,
icon: "creditcard",
isDefault: true,
currency: .usd,
isActive: true,
isArchived: false
)
enum CodingKeys: String, CodingKey {
case id
case name
case balance
case type
case icon
case isDefault
case currency
case isActive
case isArchived
}
init(
id: String = UUID().uuidString,
name: String,
balance: Double = 0,
type: AccountType = .cash,
icon: String = "creditcard",
isDefault: Bool = false,
currency: AppSettings.Currency = .usd,
isActive: Bool = true,
isArchived: Bool = false
) {
self.id = id
self.name = name
self.balance = balance
self.type = type
self.icon = icon
self.isDefault = isDefault
self.currency = currency
self.isActive = isActive
self.isArchived = isArchived
}
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decode(String.self, forKey: .id)
name = try container.decode(String.self, forKey: .name)
balance = try container.decode(Double.self, forKey: .balance)
type = try container.decode(AccountType.self, forKey: .type)
icon = try container.decode(String.self, forKey: .icon)
isDefault = try container.decode(Bool.self, forKey: .isDefault)
currency = try container.decode(AppSettings.Currency.self, forKey: .currency)
isActive = try container.decode(Bool.self, forKey: .isActive)
isArchived = try container.decode(Bool.self, forKey: .isArchived)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(id, forKey: .id)
try container.encode(name, forKey: .name)
try container.encode(balance, forKey: .balance)
try container.encode(type, forKey: .type)
try container.encode(icon, forKey: .icon)
try container.encode(isDefault, forKey: .isDefault)
try container.encode(currency, forKey: .currency)
try container.encode(isActive, forKey: .isActive)
try container.encode(isArchived, forKey: .isArchived)
}
}