added iOS source code
[wl-app.git] / iOS / WolneLektury / Model / Realm / RLMApplication.swift
diff --git a/iOS/WolneLektury/Model/Realm/RLMApplication.swift b/iOS/WolneLektury/Model/Realm/RLMApplication.swift
new file mode 100644 (file)
index 0000000..e0f436f
--- /dev/null
@@ -0,0 +1,103 @@
+//
+//  RLMApplication.swift
+//  WolneLektury
+//
+//  Created by Pawel Dabrowski on 24/08/2018.
+//  Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved.
+//
+
+import UIKit
+import RealmSwift
+
+class RLMApplication: Object {
+    
+    @objc dynamic var user: RLMUser?
+    var downloadedBooks = List<BookDetailsModel>()
+    @objc dynamic var premium: Bool = false
+
+    
+    func updateUser(usernameModel: UsernameModel?){
+        let realm = try! Realm()
+        
+        if let usernameModel = usernameModel{
+            try! realm.write {
+                let usr = RLMUser()
+                usr.username = usernameModel.username
+                usr.premium = usernameModel.premium
+                self.user = usr
+            }
+        }
+        else {
+            if user != nil {
+                try! realm.write {
+                    realm.delete( user!)
+                    self.user = nil
+                }
+            }
+        }
+    }
+    
+    func addBookToDownloaded(bookDetailsModel: BookDetailsModel){
+        let realm = try! Realm()
+        realm.beginWrite()
+
+        var bookExists = false
+        if let b = getBookFromDownloaded(bookSlug: bookDetailsModel.slug) {
+            bookDetailsModel.currentChapter = b.currentChapter
+            bookDetailsModel.totalChapters = b.totalChapters
+            bookDetailsModel.currentAudioChapter = b.currentAudioChapter
+            bookDetailsModel.totalAudioChapters = b.totalAudioChapters
+            
+            bookDetailsModel.authors = b.authors
+            bookDetailsModel.epochs = b.epochs
+            bookDetailsModel.genres = b.genres
+            bookDetailsModel.kinds = b.kinds
+            bookDetailsModel.media = b.media
+
+            bookExists = true
+        }
+        
+        realm.add(bookDetailsModel, update: true)
+        if !bookExists{
+            self.downloadedBooks.append(bookDetailsModel)
+        }
+        try! realm.commitWrite()
+    }
+    
+    func removeAllBooksFromDownloaded() {
+        
+        guard downloadedBooks.count > 0 else { return }
+        
+        let realm = try! Realm()
+        realm.beginWrite()
+        realm.delete(downloadedBooks)
+        try! realm.commitWrite()
+    }
+    
+    func removeBookFromDownloaded(bookSlug: String) -> Bool {
+        
+        let books = downloadedBooks.filter({$0.slug == bookSlug})
+        
+        if books.count > 0 {
+            let realm = try! Realm()
+            realm.beginWrite()
+            realm.delete(books)
+            try! realm.commitWrite()
+            return true
+        }
+        return false
+    }
+    
+    func getBookFromDownloaded(bookSlug: String) -> BookDetailsModel? {
+        return downloadedBooks.first(where: {$0.slug == bookSlug})
+    }
+    
+    func setUserPermium() {
+        guard let user = user else { return }
+        
+        let realm = try! Realm()
+        realm.beginWrite()
+        user.premium = true
+        try! realm.commitWrite()
+    }
+}