78 lines
1.6 KiB
Swift
78 lines
1.6 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
final class Subscription: Identifiable {
|
|
public let id = UUID()
|
|
var name: String
|
|
var payments: [Payment]
|
|
var color: Color
|
|
|
|
init(name: String, payments: [Payment], color: Color) {
|
|
self.name = name
|
|
self.payments = payments
|
|
self.color = color
|
|
}
|
|
|
|
func getMonthlyAmount() -> Float {
|
|
var sum: Float = 0.0
|
|
for payment in payments {
|
|
switch payment.intervall {
|
|
case .weekly:
|
|
sum += payment.amount / 7 * 30
|
|
case .monthly:
|
|
sum += payment.amount
|
|
case .quarter:
|
|
sum += payment.amount / 3
|
|
case .yearly:
|
|
sum += payment.amount / 12
|
|
}
|
|
}
|
|
return sum
|
|
}
|
|
}
|
|
|
|
final class Payment: Identifiable {
|
|
public let id = UUID()
|
|
var amount: Float
|
|
var intervall: PaymentIntervall
|
|
|
|
init(amount: Float, intervall: PaymentIntervall) {
|
|
self.amount = amount
|
|
self.intervall = intervall
|
|
}
|
|
}
|
|
|
|
enum Currency: CustomStringConvertible {
|
|
case euro
|
|
case dollar
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .euro:
|
|
return "€"
|
|
case .dollar:
|
|
return "$"
|
|
}
|
|
}
|
|
}
|
|
|
|
enum PaymentIntervall: CustomStringConvertible {
|
|
case weekly
|
|
case monthly
|
|
case quarter
|
|
case yearly
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .weekly:
|
|
return "week"
|
|
case .monthly:
|
|
return "month"
|
|
case .quarter:
|
|
return "quarter"
|
|
case .yearly:
|
|
return "year"
|
|
}
|
|
}
|
|
}
|