NCManageDatabase.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. //
  2. // NCManageDatabase.swift
  3. // Nextcloud
  4. //
  5. // Created by Marino Faggiana on 06/05/17.
  6. // Copyright © 2017 TWS. All rights reserved.
  7. //
  8. import RealmSwift
  9. class NCManageDatabase: NSObject {
  10. static let sharedInstance: NCManageDatabase = {
  11. let instance = NCManageDatabase()
  12. return instance
  13. }()
  14. override init() {
  15. let dirGroup = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: k_capabilitiesGroups)
  16. var config = Realm.Configuration()
  17. config.fileURL = dirGroup?.appendingPathComponent("\(appDatabaseNextcloud)/\(k_databaseDefault)")
  18. Realm.Configuration.defaultConfiguration = config
  19. }
  20. //MARK: -
  21. //MARK: Utility Database
  22. func clearDB(_ table : Object.Type, account: String?) {
  23. let results : Results<Object>
  24. let realm = try! Realm()
  25. if (account != nil) {
  26. results = realm.objects(table).filter("account = '\(account!)'")
  27. } else {
  28. results = realm.objects(table)
  29. }
  30. try! realm.write {
  31. realm.delete(results)
  32. }
  33. }
  34. //MARK: -
  35. //MARK: Table Activity
  36. func addActivityServer(_ listOfActivity: [OCActivity], account: String) {
  37. let realm = try! Realm()
  38. try! realm.write {
  39. for activity in listOfActivity {
  40. // Verify
  41. let results = realm.objects(tableActivity.self).filter("idActivity = \(activity.idActivity)")
  42. if (results.count > 0) {
  43. continue
  44. }
  45. // Add new Activity
  46. let addActivity = tableActivity()
  47. addActivity.account = account
  48. addActivity.date = activity.date
  49. addActivity.idActivity = Double(activity.idActivity)
  50. addActivity.link = activity.link
  51. addActivity.note = activity.subject
  52. addActivity.type = k_activityTypeInfo
  53. realm.add(addActivity)
  54. }
  55. }
  56. }
  57. func addActivityClient(_ file: String, fileID: String, action: String, selector: String, note: String, type: String, verbose: Bool, account: String?, activeUrl: String?) {
  58. var noteReplacing : String = ""
  59. if (activeUrl != nil) {
  60. noteReplacing = note.replacingOccurrences(of: "\(activeUrl!)\(webDAV)", with: "")
  61. }
  62. noteReplacing = note.replacingOccurrences(of: "\(k_domain_session_queue).", with: "")
  63. let realm = try! Realm()
  64. try! realm.write {
  65. // Add new Activity
  66. let addActivity = tableActivity()
  67. if (account != nil) {
  68. addActivity.account = account!
  69. }
  70. addActivity.action = action
  71. addActivity.file = file
  72. addActivity.fileID = fileID
  73. addActivity.note = noteReplacing
  74. addActivity.selector = selector
  75. addActivity.type = type
  76. addActivity.verbose = verbose
  77. realm.add(addActivity)
  78. }
  79. }
  80. func getAllTableActivityWithPredicate(_ predicate: NSPredicate) -> [tableActivity] {
  81. let realm = try! Realm()
  82. let results = realm.objects(tableActivity.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)
  83. return Array(results)
  84. }
  85. //MARK: -
  86. //MARK: Table GPS
  87. func addGeocoderLocation(_ location: String, placemarkAdministrativeArea: String, placemarkCountry: String, placemarkLocality: String, placemarkPostalCode: String, placemarkThoroughfare: String, latitude: String, longitude: String) {
  88. let realm = try! Realm()
  89. // Verify if exists
  90. let results = realm.objects(tableGPS.self).filter("latitude = '\(latitude)' AND longitude = '\(longitude)'")
  91. if (results.count > 0) {
  92. return
  93. }
  94. try! realm.write {
  95. // Add new GPS
  96. let addGPS = tableGPS()
  97. addGPS.location = location
  98. addGPS.placemarkAdministrativeArea = placemarkAdministrativeArea
  99. addGPS.placemarkCountry = placemarkCountry
  100. addGPS.placemarkLocality = placemarkLocality
  101. addGPS.placemarkPostalCode = placemarkPostalCode
  102. addGPS.placemarkThoroughfare = placemarkThoroughfare
  103. addGPS.latitude = latitude
  104. addGPS.longitude = longitude
  105. realm.add(addGPS)
  106. }
  107. }
  108. func getLocationFromGeoLatitude(_ latitude: String, longitude: String) -> String? {
  109. let realm = try! Realm()
  110. let results = realm.objects(tableGPS.self).filter("latitude = '\(latitude)' AND longitude = '\(longitude)'")
  111. if (results.count == 0) {
  112. return nil
  113. } else {
  114. return results[0].location
  115. }
  116. }
  117. //MARK: -
  118. }