Rev 15 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// ProgressDao.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/21/22.//import UIKitimport SQLite3class ProgressDao {private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)private var database = Database.sharedInstancestatic let sharedInstance: ProgressDao = {let instance = ProgressDao()// setup codereturn instance}()func selectByTopicUuid(topicUuid: String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_TOPIC)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func selectByTopicUuidAndUserUuid(topicUuid: String, userUuid : String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_TOPIC)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func selectByCapsuleUuid(capsuleUuid: String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_CAPSULE)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func selectByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid : String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_CAPSULE)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func selectBySlideUuid(slideUuid: String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " = '\(slideUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_SLIDE)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func selectBySlideUuidAndUserUuid(slideUuid: String, userUuid : String)-> ProgressModel {let db = database.open()//var records = [ProgressModel]()var model = ProgressModel()var query = "SELECT "query = query + Constants.TABLE_PROGRESS_FIELD_ID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ONquery = query + " FROM " + Constants.TABLE_PROGRESSquery = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " = '\(slideUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' "query = query + " AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_SLIDE)' LIMIT 1 ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if (sqlite3_step(statement) == SQLITE_ROW) {model.id = Int(sqlite3_column_int(statement, 0))model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))model.totalSlides = Int(sqlite3_column_int(statement, 6))model.viewSlides = Int(sqlite3_column_int(statement, 7))model.progress = Double(sqlite3_column_double(statement, 8))model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))model.returning = Int(sqlite3_column_int(statement, 10))model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))model.completed = Int(sqlite3_column_int(statement, 12))model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))}} else {database.printError()}sqlite3_finalize(statement)return model}func getCountSlideCompletedByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid: String) -> Int {let db = database.open()let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " = 1 "var statement : OpaquePointer? = nilvar count = 0;if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))}} else {database.printError()}sqlite3_finalize(statement)return count;}func getCountSlideCompletedByTopicUuidAndUserUuid(topicUuid: String, userUuid: String) -> Int {let db = database.open()let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " = 1 "var statement : OpaquePointer? = nilvar count = 0;if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))}} else {database.printError()}sqlite3_finalize(statement)return count;}func getCountCapsulesCompletedByUserUuid(userUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesIncompletedByUserUuid(userUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 0 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesCompletedByTopicUuid(topicUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesCompletedWithReturningByUserUuid(userUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT SUM(" + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + ") AS total FROM " + Constants.TABLE_PROGRESS+ " WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +" AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesCompletedWithoutReturningByUserUuid(userUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS + " WHERE "+ Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +" AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesCompletedWithReturningByTopicUuid(topicUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS+ " WHERE " + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +" AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func getCountCapsulesCompletedWithoutReturningByTopicUuid(topicUuid : String) -> Int {let db = database.open()var count = 0let query = "SELECT COUNT(*) AS total FROM " + Constants.TABLE_PROGRESS + " WHERE "+ Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +" AND " + Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +" AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 LIMIT 1"var statement : OpaquePointer? = nilif (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {if(sqlite3_step(statement) == SQLITE_ROW){count = Int(sqlite3_column_int(statement, 0))//print("\(count)")}} else {database.printError()}sqlite3_finalize(statement)return count}func insert( record : ProgressModel) {let db = database.open()var query = "INSERT INTO " + Constants.TABLE_PROGRESS + " ( "query = query + Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + ", "query = query + Constants.TABLE_PROGRESS_FIELD_USER_UUID + ", "query = query + Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + ", "query = query + Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + ", "query = query + Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + ", "query = query + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + ", "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + ", "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + ", "query = query + Constants.TABLE_PROGRESS_FIELD_TYPE + ", "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + ", "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + ", "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "query = query + Constants.TABLE_PROGRESS_FIELD_ADDED_ON + ", "query = query + Constants.TABLE_PROGRESS_FIELD_UPDATED_ON + " )"query = query + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"var statement : OpaquePointer?if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK {sqlite3_bind_text(statement, 1, record.companyUuid, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 2, record.userUuid, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 3, record.topicUuid, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 4, record.capsuleUuid, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 5, record.slideUuid, -1, SQLITE_TRANSIENT)sqlite3_bind_int(statement, 6, Int32(record.totalSlides))sqlite3_bind_int(statement, 7, Int32(record.viewSlides))sqlite3_bind_double(statement, 8, Double(record.progress))sqlite3_bind_text(statement, 9, record.type , -1, SQLITE_TRANSIENT)sqlite3_bind_int(statement, 10, Int32(record.returning))sqlite3_bind_int(statement, 11, Int32(record.returningAfterCompleted))sqlite3_bind_int(statement, 12, Int32(record.completed))sqlite3_bind_text(statement, 13, record.addedOn, -1, SQLITE_TRANSIENT)sqlite3_bind_text(statement, 14, record.updatedOn, -1, SQLITE_TRANSIENT)if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()} else {print("insertamos un registro de progreso")}} else {print("No se pudo preparar insertar un registro en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}sqlite3_finalize(statement)}func update(record : ProgressModel) {let db = database.open()var query = "UPDATE " + Constants.TABLE_PROGRESSquery = query + " SET " + Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " = '\(record.totalSlides)', "query = query + Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " = '\(record.viewSlides)', "query = query + Constants.TABLE_PROGRESS_FIELD_PROGRESS + " = '\(record.progress)', "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING + " = '\(record.returning)', "query = query + Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = '\(record.returningAfterCompleted)', "query = query + Constants.TABLE_PROGRESS_FIELD_COMPLETED + " = '\(record.completed)' "query = query + " WHERE " + Constants.TABLE_PROGRESS_FIELD_ID + " = \(record.id);"//print("capsuleUpdate : \(query)")var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}} else {print("Fallo la preparación de actualizar un registro en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}sqlite3_finalize(statement)}func remove(id: Int) {let db = database.open()let query = "DELETE FROM " + Constants.TABLE_PROGRESS + " WHERE " + Constants.TABLE_PROGRESS_FIELD_ID + " = " + "\(id) ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo borrar un registro con el id: \(id) en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}} else {print("Fallo la preparación de borrar un registro con el id: \(id) en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}sqlite3_finalize(statement)}func removeAll() {let db = database.open()let query = "DELETE FROM " + Constants.TABLE_PROGRESS + ";"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}} else {print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)")database.printError()}sqlite3_finalize(statement)}func removeAllUserUuidNotEqual(userUuid : String){let db = database.open()let query = "DELETE FROM " + Constants.TABLE_PROGRESS +" WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " <> '\(userUuid)' ;"var statement : OpaquePointer? = nilif (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {if sqlite3_step(statement) != SQLITE_DONE {print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)" +" de los usuarios diferentes de : \(userUuid)" )database.printError()}} else {print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS) de los usuarios diferentes de : \(userUuid) ")database.printError()}sqlite3_finalize(statement)}}