Files
AboTracker/AboTracker/Subscription.swift
2024-06-28 17:07:29 +02:00

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"
}
}
}