Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- // Observable Object that holds all silo-related data
- class SiloData: ObservableObject {
- // MARK: - Silo Properties
- @Published var id: String = UUID().uuidString
- @Published var siloName: String = ""
- @Published var houseNumber: String = ""
- @Published var postalCode: String = ""
- @Published var street: String = ""
- @Published var city: String = ""
- @Published var selectedMainType: String = "Housing Association"
- @Published var selectedSubType: String = ""
- @Published var isRegisteredWithKvK: Bool = false
- @Published var siloDescription: String = ""
- @Published var kvkNumber: String = ""
- @Published var registeredName: String = ""
- @Published var tradingName: String = ""
- @Published var selectedProvince: Int = 0
- @Published var silos: [Silo] = [] // Array to hold multiple silos
- @Published var currentSiloID: String? // ID of the currently selected silo
- @Published var selectedSilo: Silo? // Holds the currently selected silo
- @Published var selectedRoleId: String? // Track selected role's ID
- @Published var roleName: String = "" // Role name being edited
- @Published var roles: [Role] = [] // List of roles
- func printAllSilos() {
- print("All Silos:")
- for silo in silos {
- print("Silo ID: \(silo.id)")
- print("Silo Name: \(silo.siloName)")
- print("Address: \(silo.street), \(silo.houseNumber), \(silo.postalCode), \(silo.city)")
- print("Main Type: \(silo.selectedMainType), Sub Type: \(silo.selectedSubType)")
- print("Is Registered with KvK: \(silo.isRegisteredWithKvK)")
- print("Roles:")
- for role in silo.roles {
- print(" - Role ID: \(role.id), Name: \(role.name), Is Admin: \(role.isAdmin)")
- }
- print("---")
- }
- }
- // MARK: - Managing Roles
- func updateSelectedRoleId(_ roleId: String?) {
- selectedRoleId = roleId
- }
- func addRoleToSelectedSilo(_ role: Role) {
- guard let currentSiloId = selectedSilo?.id else {
- print("No selected silo to add role")
- return
- }
- if let index = silos.firstIndex(where: { $0.id == currentSiloId }) {
- silos[index].roles.append(role)
- print("Role added to silo '\(silos[index].siloName)': \(role.name)")
- selectedSilo = silos[index] // Update the reference
- } else {
- print("Could not find the selected silo in the list")
- }
- }
- func deleteRoleFromSelectedSilo(role: Role) {
- guard let currentSiloId = selectedSilo?.id else {
- print("No selected silo to delete role from")
- return
- }
- // Find the index of the silo in the array
- if let index = silos.firstIndex(where: { $0.id == currentSiloId }) {
- // Remove the role from the silo's roles
- silos[index].roles.removeAll { $0.id == role.id }
- print("Role deleted from silo '\(silos[index].siloName)': \(role.name)")
- // Update the selectedSilo reference
- selectedSilo = silos[index]
- } else {
- print("Could not find the selected silo in the list")
- }
- }
- func deleteRole(role: Role) {
- if let index = roles.firstIndex(where: { $0.id == role.id }) {
- roles.remove(at: index)
- }
- }
- // MARK: - Subtypes logic
- var subTypesForSelectedMainType: [String] {
- return subTypes[selectedMainType] ?? []
- }
- // MARK: - Initializer
- init(id: String = UUID().uuidString,
- siloName: String = "",
- houseNumber: String = "",
- postalCode: String = "",
- street: String = "",
- city: String = "",
- selectedMainType: String = "Housing Association",
- selectedSubType: String = "",
- isRegisteredWithKvK: Bool = false,
- siloDescription: String = "",
- kvkNumber: String = "",
- registeredName: String = "",
- tradingName: String = "",
- selectedProvince: Int = 0,
- selectedRoleId: String? = nil,
- roles: [Role] = []) {
- self.id = id
- self.siloName = siloName
- self.houseNumber = houseNumber
- self.postalCode = postalCode
- self.street = street
- self.city = city
- self.selectedMainType = selectedMainType
- self.selectedSubType = selectedSubType
- self.isRegisteredWithKvK = isRegisteredWithKvK
- self.siloDescription = siloDescription
- self.kvkNumber = kvkNumber
- self.registeredName = registeredName
- self.tradingName = tradingName
- self.selectedProvince = selectedProvince
- self.selectedRoleId = selectedRoleId
- self.roles = roles
- }
- }
- // MARK: - Silo Struct
- struct Silo {
- var id: String
- var siloName: String
- var houseNumber: String
- var postalCode: String
- var street: String
- var city: String
- var selectedMainType: String
- var selectedSubType: String
- var isRegisteredWithKvK: Bool
- var siloDescription: String
- var kvkNumber: String
- var registeredName: String
- var tradingName: String
- var selectedProvince: Int
- var selectedRoleId: String?
- var roles: [Role]
- init(id: String = UUID().uuidString,
- siloName: String = "",
- houseNumber: String = "",
- postalCode: String = "",
- street: String = "",
- city: String = "",
- selectedMainType: String = "Housing Association",
- selectedSubType: String = "",
- isRegisteredWithKvK: Bool = false,
- siloDescription: String = "",
- kvkNumber: String = "",
- registeredName: String = "",
- tradingName: String = "",
- selectedProvince: Int = 0,
- selectedRoleId: String? = nil,
- roles: [Role] = []) {
- self.id = id
- self.siloName = siloName
- self.houseNumber = houseNumber
- self.postalCode = postalCode
- self.street = street
- self.city = city
- self.selectedMainType = selectedMainType
- self.selectedSubType = selectedSubType
- self.isRegisteredWithKvK = isRegisteredWithKvK
- self.siloDescription = siloDescription
- self.kvkNumber = kvkNumber
- self.registeredName = registeredName
- self.tradingName = tradingName
- self.selectedProvince = selectedProvince
- self.selectedRoleId = selectedRoleId
- self.roles = roles
- }
- }
- // MARK: - Role Struct
- struct Role: Identifiable, Hashable {
- var id: String
- var name: String
- var isAdmin: Bool
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement