Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

Rev 16 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16 Rev 17
Línea 3... Línea 3...
3
//  twogetskills
3
//  twogetskills
4
//
4
//
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
6
//
6
//
Línea 7... Línea 7...
7
 
7
 
8
import UIKit
8
import SwiftUI
Línea 9... Línea 9...
9
import SQLite3
9
import SQLite3
-
 
10
 
10
 
11
class ProgressDao {
11
class ProgressDao {
-
 
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
12
    private var database = Environment(\.database).wrappedValue
-
 
13
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private var db : Database.sharedInstance.open()
14
    
14
 
-
 
-
 
15
    
15
    func selectByTopicUuid(topicUuid: String)-> ProgressModel {
16
    func selectByTopicUuid(topicUuid: String)-> ProgressModel {
16
        
17
        let db = database.open()
17
        //var records = [ProgressModel]()
18
        //var records = [ProgressModel]()
18
        var model = ProgressModel()
19
        var model = ProgressModel()
19
        var query = "SELECT "
20
        var query = "SELECT "
Línea 63... Línea 64...
63
        return model
64
        return model
64
    }
65
    }
Línea 65... Línea 66...
65
    
66
    
66
    
-
 
-
 
67
    
67
    func selectByTopicUuidAndUserUuid(topicUuid: String, userUuid : String)-> ProgressModel {
68
    func selectByTopicUuidAndUserUuid(topicUuid: String, userUuid : String)-> ProgressModel {
68
        
69
        let db = database.open()
69
        //var records = [ProgressModel]()
70
        //var records = [ProgressModel]()
70
        var model = ProgressModel()
71
        var model = ProgressModel()
71
        var query = "SELECT "
72
        var query = "SELECT "
Línea 115... Línea 116...
115
        sqlite3_finalize(statement)
116
        sqlite3_finalize(statement)
116
        return model
117
        return model
117
    }
118
    }
Línea 118... Línea 119...
118
    
119
    
119
    func selectByCapsuleUuid(capsuleUuid: String)-> ProgressModel {
-
 
-
 
120
    func selectByCapsuleUuid(capsuleUuid: String)-> ProgressModel {
120
        
121
        let db = database.open()
121
        //var records = [ProgressModel]()
122
        //var records = [ProgressModel]()
122
        var model = ProgressModel()
123
        var model = ProgressModel()
123
        var query = "SELECT "
124
        var query = "SELECT "
124
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
125
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
Línea 170... Línea 171...
170
        return model
171
        return model
Línea 171... Línea 172...
171
        
172
        
Línea 172... Línea 173...
172
    }
173
    }
173
    
-
 
-
 
174
    
174
    func selectByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid : String)-> ProgressModel {
175
    func selectByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid : String)-> ProgressModel {
175
        
176
        let db = database.open()
176
        //var records = [ProgressModel]()
177
        //var records = [ProgressModel]()
177
        var model = ProgressModel()
178
        var model = ProgressModel()
178
        var query  = "SELECT "
179
        var query  = "SELECT "
Línea 225... Línea 226...
225
        return model
226
        return model
Línea 226... Línea 227...
226
        
227
        
Línea 227... Línea 228...
227
    }
228
    }
228
 
-
 
-
 
229
 
229
    func selectBySlideUuid(slideUuid: String)-> ProgressModel {
230
    func selectBySlideUuid(slideUuid: String)-> ProgressModel {
230
        
231
        let db = database.open()
231
        //var records = [ProgressModel]()
232
        //var records = [ProgressModel]()
232
        var model = ProgressModel()
233
        var model = ProgressModel()
233
        var query = "SELECT "
234
        var query = "SELECT "
Línea 278... Línea 279...
278
        return model
279
        return model
279
    }
280
    }
Línea 280... Línea 281...
280
    
281
    
281
    
-
 
-
 
282
    
282
    func selectBySlideUuidAndUserUuid(slideUuid: String, userUuid : String)-> ProgressModel {
283
    func selectBySlideUuidAndUserUuid(slideUuid: String, userUuid : String)-> ProgressModel {
283
        
284
        let db = database.open()
284
        //var records = [ProgressModel]()
285
        //var records = [ProgressModel]()
285
        var model = ProgressModel()
286
        var model = ProgressModel()
286
        var query = "SELECT "
287
        var query = "SELECT "
Línea 331... Línea 332...
331
        sqlite3_finalize(statement)
332
        sqlite3_finalize(statement)
332
        return model
333
        return model
333
    }
334
    }
Línea 334... Línea 335...
334
 
335
 
335
    func getCountSlideCompletedByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid: String) -> Int {
-
 
-
 
336
    func getCountSlideCompletedByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid: String) -> Int {
336
        
337
        let db = database.open()
337
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
338
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
338
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' "  +
339
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' "  +
339
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
340
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
340
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
341
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
Línea 356... Línea 357...
356
        sqlite3_finalize(statement)
357
        sqlite3_finalize(statement)
357
        return count;
358
        return count;
358
    }
359
    }
Línea 359... Línea 360...
359
    
360
    
360
    func getCountSlideCompletedByTopicUuidAndUserUuid(topicUuid: String, userUuid: String) -> Int {
-
 
-
 
361
    func getCountSlideCompletedByTopicUuidAndUserUuid(topicUuid: String, userUuid: String) -> Int {
361
        
362
        let db = database.open()
362
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
363
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
363
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' "  +
364
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' "  +
364
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
365
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
365
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
366
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
Línea 381... Línea 382...
381
        sqlite3_finalize(statement)
382
        sqlite3_finalize(statement)
382
        return count;
383
        return count;
383
    }
384
    }
Línea 384... Línea 385...
384
    
385
    
385
    func getCountCapsulesCompletedByUserUuid(userUuid : String) -> Int {
-
 
-
 
386
    func getCountCapsulesCompletedByUserUuid(userUuid : String) -> Int {
386
        
387
        let db = database.open()
387
        var count = 0
388
        var count = 0
388
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
389
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
389
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
390
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
390
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
391
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 404... Línea 405...
404
        sqlite3_finalize(statement)
405
        sqlite3_finalize(statement)
405
        return count
406
        return count
406
    }
407
    }
Línea 407... Línea 408...
407
    
408
    
408
    func getCountCapsulesIncompletedByUserUuid(userUuid : String) -> Int {
-
 
-
 
409
    func getCountCapsulesIncompletedByUserUuid(userUuid : String) -> Int {
409
        
410
        let db = database.open()
410
        var count = 0
411
        var count = 0
411
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
412
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
412
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
413
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
413
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
414
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 427... Línea 428...
427
        sqlite3_finalize(statement)
428
        sqlite3_finalize(statement)
428
        return count
429
        return count
429
    }
430
    }
Línea 430... Línea 431...
430
    
431
    
431
    func getCountCapsulesCompletedByTopicUuid(topicUuid : String) -> Int {
-
 
-
 
432
    func getCountCapsulesCompletedByTopicUuid(topicUuid : String) -> Int {
432
        
433
        let db = database.open()
433
        var count = 0
434
        var count = 0
434
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
435
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
435
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
436
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
436
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
437
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 450... Línea 451...
450
        sqlite3_finalize(statement)
451
        sqlite3_finalize(statement)
451
        return count
452
        return count
452
    }
453
    }
Línea 453... Línea 454...
453
    
454
    
454
    func getCountCapsulesCompletedWithReturningByUserUuid(userUuid : String) -> Int {
-
 
-
 
455
    func getCountCapsulesCompletedWithReturningByUserUuid(userUuid : String) -> Int {
455
        
456
        let db = database.open()
456
        var count = 0
457
        var count = 0
457
        let query = "SELECT SUM(" +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + ") AS total FROM " +  Constants.TABLE_PROGRESS
458
        let query = "SELECT SUM(" +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + ") AS total FROM " +  Constants.TABLE_PROGRESS
458
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
459
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
459
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
460
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 474... Línea 475...
474
        sqlite3_finalize(statement)
475
        sqlite3_finalize(statement)
475
        return count
476
        return count
476
    }
477
    }
Línea 477... Línea 478...
477
    
478
    
478
    func getCountCapsulesCompletedWithoutReturningByUserUuid(userUuid : String) -> Int {
-
 
-
 
479
    func getCountCapsulesCompletedWithoutReturningByUserUuid(userUuid : String) -> Int {
479
        
480
        let db = database.open()
480
        var count = 0
481
        var count = 0
481
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
482
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
482
            +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
483
            +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
483
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
484
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 498... Línea 499...
498
        sqlite3_finalize(statement)
499
        sqlite3_finalize(statement)
499
        return count
500
        return count
500
    }
501
    }
Línea 501... Línea 502...
501
    
502
    
502
    func getCountCapsulesCompletedWithReturningByTopicUuid(topicUuid : String) -> Int {
-
 
-
 
503
    func getCountCapsulesCompletedWithReturningByTopicUuid(topicUuid : String) -> Int {
503
        
504
        let db = database.open()
504
        var count = 0
505
        var count = 0
505
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS
506
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS
506
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
507
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
507
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
508
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 522... Línea 523...
522
        sqlite3_finalize(statement)
523
        sqlite3_finalize(statement)
523
        return count
524
        return count
524
    }
525
    }
Línea 525... Línea 526...
525
    
526
    
526
    func getCountCapsulesCompletedWithoutReturningByTopicUuid(topicUuid : String) -> Int {
-
 
-
 
527
    func getCountCapsulesCompletedWithoutReturningByTopicUuid(topicUuid : String) -> Int {
527
        
528
        let db = database.open()
528
        var count = 0
529
        var count = 0
529
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
530
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
530
            +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
531
            +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
531
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
532
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
Línea 547... Línea 548...
547
        return count
548
        return count
548
    }
549
    }
Línea 549... Línea 550...
549
        
550
        
550
        
-
 
-
 
551
        
551
    func insert( record : ProgressModel) {
552
    func insert( record : ProgressModel) {
552
        
553
        let db = database.open()
553
        var query = "INSERT INTO " +  Constants.TABLE_PROGRESS + " ( "
554
        var query = "INSERT INTO " +  Constants.TABLE_PROGRESS + " ( "
554
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + ", "
555
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + ", "
555
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + ", "
556
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + ", "
Línea 601... Línea 602...
601
       
602
       
602
        sqlite3_finalize(statement)
603
        sqlite3_finalize(statement)
Línea 603... Línea 604...
603
    }
604
    }
604
 
-
 
-
 
605
 
605
    func update(record : ProgressModel) {
606
    func update(record : ProgressModel) {
606
        
607
        let db = database.open()
607
        var query = "UPDATE " +  Constants.TABLE_PROGRESS
608
        var query = "UPDATE " +  Constants.TABLE_PROGRESS
608
        query = query + " SET " +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " = '\(record.totalSlides)', "
609
        query = query + " SET " +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " = '\(record.totalSlides)', "
609
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " = '\(record.viewSlides)', "
610
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " = '\(record.viewSlides)', "
Línea 627... Línea 628...
627
        }
628
        }
628
        sqlite3_finalize(statement)
629
        sqlite3_finalize(statement)
629
    }
630
    }
Línea 630... Línea 631...
630
 
631
 
631
    func remove(id: Int) {
-
 
-
 
632
    func remove(id: Int) {
632
        
633
        let db = database.open()
633
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_ID + " = " + "\(id) ;"
634
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_ID + " = " + "\(id) ;"
634
        var statement : OpaquePointer? = nil
635
        var statement : OpaquePointer? = nil
635
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
636
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
636
            if sqlite3_step(statement) != SQLITE_DONE {
637
            if sqlite3_step(statement) != SQLITE_DONE {
Línea 643... Línea 644...
643
        }
644
        }
644
        sqlite3_finalize(statement)
645
        sqlite3_finalize(statement)
645
    }
646
    }
Línea 646... Línea 647...
646
 
647
 
647
    func removeAll() {
-
 
-
 
648
    func removeAll() {
648
        
649
        let db = database.open()
649
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + ";"
650
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + ";"
650
        var statement : OpaquePointer? = nil
651
        var statement : OpaquePointer? = nil
651
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
652
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
652
            if sqlite3_step(statement) != SQLITE_DONE {
653
            if sqlite3_step(statement) != SQLITE_DONE {
Línea 660... Línea 661...
660
        sqlite3_finalize(statement)
661
        sqlite3_finalize(statement)
661
    }
662
    }
Línea 662... Línea 663...
662
    
663
    
663
    func removeAllUserUuidNotEqual(userUuid : String)
664
    func removeAllUserUuidNotEqual(userUuid : String)
664
    {
-
 
-
 
665
    {
665
        
666
        let db = database.open()
666
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS +
667
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS +
667
            " WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " <> '\(userUuid)' ;"
668
            " WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " <> '\(userUuid)' ;"
668
        var statement : OpaquePointer? = nil
669
        var statement : OpaquePointer? = nil
669
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
670
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {