Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 11 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  ProgressDao.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/21/22.
6
//
7
 
8
import UIKit
9
import SQLite3
10
 
11
class ProgressDao {
12
    private let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    private var db : OpaquePointer?
14
 
15
    static let sharedInstance: ProgressDao = {
16
           let instance = ProgressDao()
17
 
18
           // setup code
19
           return instance
20
    }()
21
 
22
    init() {
23
        self.db = Database.sharedInstance.open()
24
    }
25
 
26
    func selectByTopicUuid(topicUuid: String)-> ProgressModel {
27
        //var records = [ProgressModel]()
28
        var model = ProgressModel()
29
        var query = "SELECT "
30
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
31
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
32
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
33
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
34
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
35
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
36
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
37
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
38
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
39
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
40
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
41
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
42
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
43
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
44
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
45
        query = query +  " FROM " +  Constants.TABLE_PROGRESS
46
        query = query +  " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)'  "
47
        query = query +  " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_TOPIC)' LIMIT 1 ;"
48
 
49
        var statement : OpaquePointer? = nil
50
 
51
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
52
            if (sqlite3_step(statement) == SQLITE_ROW) {
53
                model.id = Int(sqlite3_column_int(statement, 0))
54
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
55
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
56
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
57
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
58
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
59
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
60
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
61
                model.progress = Double(sqlite3_column_double(statement, 8))
62
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
63
                model.returning = Int(sqlite3_column_int(statement, 10))
64
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
65
                model.completed = Int(sqlite3_column_int(statement, 12))
66
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
67
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))
68
            }
69
        }
70
        sqlite3_finalize(statement)
71
        return model
72
    }
73
 
74
 
75
    func selectByTopicUuidAndUserUuid(topicUuid: String, userUuid : String)-> ProgressModel {
76
        //var records = [ProgressModel]()
77
        var model = ProgressModel()
78
        var query = "SELECT "
79
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
80
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
81
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
82
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
83
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
84
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
85
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
86
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
87
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
88
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
89
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
90
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
91
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
92
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
93
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
94
        query = query +  " FROM " +  Constants.TABLE_PROGRESS
95
        query = query +  " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)'  "
96
        query = query +  " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)'  "
97
        query = query +  " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_TOPIC)' LIMIT 1 ;"
98
 
99
        var statement : OpaquePointer? = nil
100
 
101
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
102
            if (sqlite3_step(statement) == SQLITE_ROW) {
103
                model.id = Int(sqlite3_column_int(statement, 0))
104
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
105
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
106
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
107
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
108
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
109
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
110
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
111
                model.progress = Double(sqlite3_column_double(statement, 8))
112
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
113
                model.returning = Int(sqlite3_column_int(statement, 10))
114
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
115
                model.completed = Int(sqlite3_column_int(statement, 12))
116
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
117
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))
118
            }
119
        }
120
        sqlite3_finalize(statement)
121
        return model
122
    }
123
 
124
    func selectByCapsuleUuid(capsuleUuid: String)-> ProgressModel {
125
        //var records = [ProgressModel]()
126
        var model = ProgressModel()
127
        var query = "SELECT "
128
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
129
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
130
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
131
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
132
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
133
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
134
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
135
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
136
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
137
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
138
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
139
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
140
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
141
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
142
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
143
        query = query +  " FROM " +  Constants.TABLE_PROGRESS
144
        query = query +  " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)'  "
145
        query = query +  " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_CAPSULE)' LIMIT 1 ;"
146
 
147
 
148
        var statement : OpaquePointer? = nil
149
 
150
 
151
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
152
            if (sqlite3_step(statement) == SQLITE_ROW) {
153
                model.id = Int(sqlite3_column_int(statement, 0))
154
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
155
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
156
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
157
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
158
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
159
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
160
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
161
                model.progress = Double(sqlite3_column_double(statement, 8))
162
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
163
                model.returning = Int(sqlite3_column_int(statement, 10))
164
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
165
                model.completed = Int(sqlite3_column_int(statement, 12))
166
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
167
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))            }
168
        }
169
        sqlite3_finalize(statement)
170
        return model
171
 
172
    }
173
 
174
    func selectByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid : String)-> ProgressModel {
175
        //var records = [ProgressModel]()
176
        var model = ProgressModel()
177
        var query  = "SELECT "
178
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
179
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
180
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
181
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
182
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
183
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
184
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
185
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
186
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
187
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
188
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
189
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
190
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
191
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
192
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
193
        query = query +  " FROM " +  Constants.TABLE_PROGRESS
194
        query = query +  " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)'  "
195
        query = query +  " AND " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' "
196
        query = query +  " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_CAPSULE)' LIMIT 1 ;"
197
 
198
        var statement : OpaquePointer? = nil
199
 
200
 
201
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
202
            if (sqlite3_step(statement) == SQLITE_ROW) {
203
                model.id = Int(sqlite3_column_int(statement, 0))
204
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
205
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
206
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
207
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
208
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
209
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
210
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
211
                model.progress = Double(sqlite3_column_double(statement, 8))
212
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
213
                model.returning = Int(sqlite3_column_int(statement, 10))
214
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
215
                model.completed = Int(sqlite3_column_int(statement, 12))
216
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
217
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))            }
218
        }
219
        sqlite3_finalize(statement)
220
        return model
221
 
222
    }
223
 
224
    func selectBySlideUuid(slideUuid: String)-> ProgressModel {
225
        //var records = [ProgressModel]()
226
        var model = ProgressModel()
227
        var query = "SELECT "
228
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
229
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
230
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
231
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
232
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
233
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
234
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
235
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
236
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
237
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
238
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
239
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
240
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
241
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
242
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
243
        query = query + " FROM " +  Constants.TABLE_PROGRESS
244
        query = query  + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " = '\(slideUuid)'  "
245
        query = query  + " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_SLIDE)' LIMIT 1 ;"
246
 
247
        var statement : OpaquePointer? = nil
248
 
249
 
250
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
251
            if (sqlite3_step(statement) == SQLITE_ROW) {
252
                model.id = Int(sqlite3_column_int(statement, 0))
253
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
254
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
255
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
256
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
257
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
258
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
259
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
260
                model.progress = Double(sqlite3_column_double(statement, 8))
261
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
262
                model.returning = Int(sqlite3_column_int(statement, 10))
263
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
264
                model.completed = Int(sqlite3_column_int(statement, 12))
265
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
266
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))
267
            }
268
        }
269
        sqlite3_finalize(statement)
270
        return model
271
    }
272
 
273
 
274
    func selectBySlideUuidAndUserUuid(slideUuid: String, userUuid : String)-> ProgressModel {
275
        //var records = [ProgressModel]()
276
        var model = ProgressModel()
277
        var query = "SELECT "
278
        query = query +  Constants.TABLE_PROGRESS_FIELD_ID + " , "
279
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + " , "
280
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " , "
281
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " , "
282
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " , "
283
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " , "
284
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " , "
285
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " , "
286
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " , "
287
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + " , "
288
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " , "
289
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " , "
290
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
291
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + " , "
292
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON
293
        query = query + " FROM " +  Constants.TABLE_PROGRESS
294
        query = query  + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + " = '\(slideUuid)'  "
295
        query = query  + " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)'  "
296
        query = query  + " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + " = '\( Constants.PROGRESS_TYPE_SLIDE)' LIMIT 1 ;"
297
 
298
        var statement : OpaquePointer? = nil
299
 
300
 
301
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
302
            if (sqlite3_step(statement) == SQLITE_ROW) {
303
                model.id = Int(sqlite3_column_int(statement, 0))
304
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
305
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
306
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
307
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
308
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
309
                model.totalSlides = Int(sqlite3_column_int(statement, 6))
310
                model.viewSlides = Int(sqlite3_column_int(statement, 7))
311
                model.progress = Double(sqlite3_column_double(statement, 8))
312
                model.type = String(describing: String(cString: sqlite3_column_text(statement, 9)))
313
                model.returning = Int(sqlite3_column_int(statement, 10))
314
                model.returningAfterCompleted = Int(sqlite3_column_int(statement, 11))
315
                model.completed = Int(sqlite3_column_int(statement, 12))
316
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 13)))
317
                model.updatedOn = String(describing: String(cString: sqlite3_column_text(statement, 14)))
318
            }
319
        }
320
        sqlite3_finalize(statement)
321
        return model
322
    }
323
 
324
    /*
325
    func getCountBycapsuleUuid(capsuleUuid: String) -> Int {
326
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
327
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
328
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'"
329
 
330
        var statement : OpaquePointer? = nil
331
        var count = 0;
332
 
333
 
334
 
335
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
336
            if(sqlite3_step(statement) == SQLITE_ROW){
337
                count = Int(sqlite3_column_int(statement, 0))
338
 
339
            }
340
         }
341
        sqlite3_finalize(statement)
342
        return count;
343
    }
344
 
345
    func getCountWithoutBycapsuleUuid(capsuleUuid: String) -> Int {
346
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
347
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
348
            " AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING + " = 0 " +
349
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'"
350
 
351
        var statement : OpaquePointer? = nil
352
        var count = 0;
353
 
354
 
355
 
356
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
357
            if(sqlite3_step(statement) == SQLITE_ROW){
358
                count = Int(sqlite3_column_int(statement, 0))
359
 
360
            }
361
         }
362
        sqlite3_finalize(statement)
363
        return count;
364
    }
365
 
366
    func getCountWithReturningBycapsuleUuid(capsuleUuid: String) -> Int {
367
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
368
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
369
        " AND " + Constants.TABLE_PROGRESS_FIELD_RETURNING + " > 0 " +
370
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'"
371
 
372
        var statement : OpaquePointer? = nil
373
        var count = 0;
374
 
375
 
376
 
377
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
378
            if(sqlite3_step(statement) == SQLITE_ROW){
379
                count = Int(sqlite3_column_int(statement, 0))
380
 
381
            }
382
         }
383
        sqlite3_finalize(statement)
384
        return count;
385
    }
386
 
387
    func getCountCompletedBycapsuleUuid(capsuleUuid: String) -> Int {
388
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
389
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
390
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'" +
391
        " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "  =  1 "
392
 
393
        var statement : OpaquePointer? = nil
394
        var count = 0;
395
 
396
 
397
 
398
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
399
            if(sqlite3_step(statement) == SQLITE_ROW){
400
                count = Int(sqlite3_column_int(statement, 0))
401
 
402
            }
403
         }
404
        sqlite3_finalize(statement)
405
        return count;
406
    }
407
 
408
    func getCountCompletedWithReturningBycapsuleUuid(capsuleUuid: String) -> Int {
409
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
410
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
411
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'" +
412
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 " +
413
        " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "  =  1 "
414
 
415
        var statement : OpaquePointer? = nil
416
        var count = 0;
417
 
418
 
419
 
420
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
421
            if(sqlite3_step(statement) == SQLITE_ROW){
422
                count = Int(sqlite3_column_int(statement, 0))
423
 
424
            }
425
         }
426
        sqlite3_finalize(statement)
427
        return count;
428
    }
429
 
430
    func getCountCompletedWithoutReturningBycapsuleUuid(capsuleUuid: String) -> Int {
431
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
432
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_ID + " = '\(capsuleUuid)' "  +
433
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)'" +
434
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 " +
435
        " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "  =  1 "
436
 
437
        var statement : OpaquePointer? = nil
438
        var count = 0;
439
 
440
 
441
 
442
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
443
            if(sqlite3_step(statement) == SQLITE_ROW){
444
                count = Int(sqlite3_column_int(statement, 0))
445
 
446
            }
447
         }
448
        sqlite3_finalize(statement)
449
        return count;
450
    }
451
 
452
    func getCountBytopicUuidWithReturning(topicUuid: String) -> Int {
453
        var count = 0
454
        var query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS
455
            query = query + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_ID + " = \(topicUuid) AND "
456
        +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)' AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " > 1 LIMIT 1"
457
 
458
        var statement : OpaquePointer? = nil
459
 
460
 
461
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK){
462
            if(sqlite3_step(statement) == SQLITE_ROW){
463
                count = Int(sqlite3_column_int(statement, 0))
464
                print("\(count)")
465
            }
466
        }
467
        sqlite3_finalize(statement)
468
        return count
469
    }
470
 
471
    func getCountBytopicUuidWithoutReturning(topicUuid: String) -> Int{
472
 
473
        var count = 0
474
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_ID + " = \(topicUuid) AND "
475
        +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)' AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " = 0 LIMIT 1"
476
 
477
        var statement : OpaquePointer? = nil
478
 
479
 
480
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
481
            if(sqlite3_step(statement) == SQLITE_ROW){
482
                count = Int(sqlite3_column_int(statement, 0))
483
                print("\(count)")
484
            }
485
        }
486
        sqlite3_finalize(statement)
487
        return count
488
    }
489
 
490
    func getCountCompletedBytopicUuidWithoutReturning(topicUuid: String) -> Int{
491
 
492
        var count = 0
493
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_ID + " = \(topicUuid) " +
494
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)' " +
495
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "=  1 " +
496
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 LIMIT 1"
497
 
498
        var statement : OpaquePointer? = nil
499
 
500
 
501
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
502
            if(sqlite3_step(statement) == SQLITE_ROW){
503
                count = Int(sqlite3_column_int(statement, 0))
504
                print("\(count)")
505
            }
506
        }
507
        sqlite3_finalize(statement)
508
        return count
509
    }
510
 
511
    func getCountCompletedBytopicUuidWithReturning(topicUuid: String) -> Int{
512
 
513
        var count = 0
514
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_ID + " = \(topicUuid) " +
515
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_SLIDE)' " +
516
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +
517
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 LIMIT 1"
518
 
519
        var statement : OpaquePointer? = nil
520
 
521
 
522
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
523
            if(sqlite3_step(statement) == SQLITE_ROW){
524
                count = Int(sqlite3_column_int(statement, 0))
525
                print("\(count)")
526
            }
527
        }
528
        sqlite3_finalize(statement)
529
        return count
530
    }
531
    */
532
    func getCountSlideCompletedByCapsuleUuidAndUserUuid(capsuleUuid: String, userUuid: String) -> Int {
533
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
534
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + " = '\(capsuleUuid)' "  +
535
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
536
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
537
        " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "  =  1 "
538
 
539
        var statement : OpaquePointer? = nil
540
        var count = 0;
541
 
542
 
543
 
544
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
545
            if(sqlite3_step(statement) == SQLITE_ROW){
546
                count = Int(sqlite3_column_int(statement, 0))
547
 
548
            }
549
         }
550
        sqlite3_finalize(statement)
551
        return count;
552
    }
553
 
554
    func getCountSlideCompletedByTopicUuidAndUserUuid(topicUuid: String, userUuid: String) -> Int {
555
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
556
        " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' "  +
557
        " AND " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + "= '\(userUuid)'" +
558
        " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\(Constants.PROGRESS_TYPE_SLIDE)'" +
559
        " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "  =  1 "
560
 
561
        var statement : OpaquePointer? = nil
562
        var count = 0;
563
 
564
 
565
 
566
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
567
            if(sqlite3_step(statement) == SQLITE_ROW){
568
                count = Int(sqlite3_column_int(statement, 0))
569
 
570
            }
571
         }
572
        sqlite3_finalize(statement)
573
        return count;
574
    }
575
 
576
    func getCountCapsulesCompletedByUserUuid(userUuid : String) -> Int {
577
        var count = 0
578
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
579
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
580
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
581
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 LIMIT 1"
582
 
583
        var statement : OpaquePointer? = nil
584
 
585
 
586
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
587
            if(sqlite3_step(statement) == SQLITE_ROW){
588
                count = Int(sqlite3_column_int(statement, 0))
589
                print("\(count)")
590
            }
591
        }
592
        sqlite3_finalize(statement)
593
        return count
594
    }
595
 
596
    func getCountCapsulesIncompletedByUserUuid(userUuid : String) -> Int {
597
        var count = 0
598
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
599
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
600
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
601
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 0 LIMIT 1"
602
 
603
        var statement : OpaquePointer? = nil
604
 
605
 
606
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
607
            if(sqlite3_step(statement) == SQLITE_ROW){
608
                count = Int(sqlite3_column_int(statement, 0))
609
                print("\(count)")
610
            }
611
        }
612
        sqlite3_finalize(statement)
613
        return count
614
    }
615
 
616
    func getCountCapsulesCompletedByTopicUuid(topicUuid : String) -> Int {
617
        var count = 0
618
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS +
619
            " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
620
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
621
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 LIMIT 1"
622
 
623
        var statement : OpaquePointer? = nil
624
 
625
 
626
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
627
            if(sqlite3_step(statement) == SQLITE_ROW){
628
                count = Int(sqlite3_column_int(statement, 0))
629
                print("\(count)")
630
            }
631
        }
632
        sqlite3_finalize(statement)
633
        return count
634
    }
635
 
636
    func getCountCapsulesCompletedWithReturningByUserUuid(userUuid : String) -> Int {
637
        var count = 0
638
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS
639
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
640
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
641
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +
642
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 LIMIT 1"
643
 
644
        var statement : OpaquePointer? = nil
645
 
646
 
647
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
648
            if(sqlite3_step(statement) == SQLITE_ROW){
649
                count = Int(sqlite3_column_int(statement, 0))
650
                print("\(count)")
651
            }
652
        }
653
        sqlite3_finalize(statement)
654
        return count
655
    }
656
 
657
    func getCountCapsulesCompletedWithoutReturningByUserUuid(userUuid : String) -> Int {
658
        var count = 0
659
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
660
            +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + " = '\(userUuid)' " +
661
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
662
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +
663
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 LIMIT 1"
664
 
665
        var statement : OpaquePointer? = nil
666
 
667
 
668
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
669
            if(sqlite3_step(statement) == SQLITE_ROW){
670
                count = Int(sqlite3_column_int(statement, 0))
671
                print("\(count)")
672
            }
673
        }
674
        sqlite3_finalize(statement)
675
        return count
676
    }
677
 
678
    func getCountCapsulesCompletedWithReturningByTopicUuid(topicUuid : String) -> Int {
679
        var count = 0
680
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS
681
            + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
682
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
683
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +
684
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " > 0 LIMIT 1"
685
 
686
        var statement : OpaquePointer? = nil
687
 
688
 
689
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
690
            if(sqlite3_step(statement) == SQLITE_ROW){
691
                count = Int(sqlite3_column_int(statement, 0))
692
                print("\(count)")
693
            }
694
        }
695
        sqlite3_finalize(statement)
696
        return count
697
    }
698
 
699
    func getCountCapsulesCompletedWithoutReturningByTopicUuid(topicUuid : String) -> Int {
700
        var count = 0
701
        let query = "SELECT COUNT(*) AS total FROM " +  Constants.TABLE_PROGRESS + " WHERE "
702
            +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID + " = '\(topicUuid)' " +
703
            " AND " +  Constants.TABLE_PROGRESS_FIELD_TYPE + "= '\( Constants.PROGRESS_TYPE_CAPSULE)' " +
704
            " AND " +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + "= 1 " +
705
            " AND " +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = 0 LIMIT 1"
706
 
707
        var statement : OpaquePointer? = nil
708
 
709
 
710
        if (sqlite3_prepare(db, query, -1, &statement, nil) == SQLITE_OK) {
711
            if(sqlite3_step(statement) == SQLITE_ROW){
712
                count = Int(sqlite3_column_int(statement, 0))
713
                print("\(count)")
714
            }
715
        }
716
        sqlite3_finalize(statement)
717
        return count
718
    }
719
 
720
 
721
    func insert( record : ProgressModel) {
722
        var query = "INSERT INTO " +  Constants.TABLE_PROGRESS + " ( "
723
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPANY_UUID + ", "
724
        query = query +  Constants.TABLE_PROGRESS_FIELD_USER_UUID + ", "
725
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOPIC_UUID  + ", "
726
        query = query +  Constants.TABLE_PROGRESS_FIELD_CAPSULE_UUID + ", "
727
        query = query +  Constants.TABLE_PROGRESS_FIELD_SLIDE_UUID + ", "
728
        query = query +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + ", "
729
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + ", "
730
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + ", "
731
        query = query +  Constants.TABLE_PROGRESS_FIELD_TYPE + ", "
732
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + ", "
733
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + ", "
734
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " , "
735
        query = query +  Constants.TABLE_PROGRESS_FIELD_ADDED_ON + ", "
736
        query = query +  Constants.TABLE_PROGRESS_FIELD_UPDATED_ON + " )"
737
 
738
        query = query + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
739
        var statement : OpaquePointer?
740
 
741
 
742
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK {
743
 
744
            sqlite3_bind_text(statement, 1, record.companyUuid, -1, SQLITE_TRANSIENT)
745
            sqlite3_bind_text(statement, 2, record.userUuid, -1, SQLITE_TRANSIENT)
746
            sqlite3_bind_text(statement, 3, record.topicUuid, -1, SQLITE_TRANSIENT)
747
            sqlite3_bind_text(statement, 4, record.capsuleUuid, -1, SQLITE_TRANSIENT)
748
            sqlite3_bind_text(statement, 5, record.slideUuid, -1, SQLITE_TRANSIENT)
749
            sqlite3_bind_int(statement, 6, Int32(record.totalSlides))
750
            sqlite3_bind_int(statement, 7, Int32(record.viewSlides))
751
            sqlite3_bind_double(statement, 8, Double(record.progress))
752
            sqlite3_bind_text(statement, 9, record.type , -1, SQLITE_TRANSIENT)
753
            sqlite3_bind_int(statement, 10, Int32(record.returning))
754
            sqlite3_bind_int(statement, 11, Int32(record.returningAfterCompleted))
755
            sqlite3_bind_int(statement, 12, Int32(record.completed))
756
            sqlite3_bind_text(statement, 13, record.addedOn, -1, SQLITE_TRANSIENT)
757
            sqlite3_bind_text(statement, 14, record.updatedOn, -1, SQLITE_TRANSIENT)
758
 
759
           if sqlite3_step(statement) != SQLITE_DONE {
760
            print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_PROGRESS)")
761
 
762
           } else {
763
             print("insertamos un registro de progreso")
764
           }
765
        } else {
766
            print("No se pudo preparar insertar un registro en la tabla: \(Constants.TABLE_PROGRESS)")
767
        }
768
 
769
        sqlite3_finalize(statement)
770
    }
771
 
772
    func update(record : ProgressModel) {
773
        var query = "UPDATE " +  Constants.TABLE_PROGRESS
774
        query = query + " SET " +  Constants.TABLE_PROGRESS_FIELD_TOTAL_SLIDES + " = '\(record.totalSlides)', "
775
        query = query +  Constants.TABLE_PROGRESS_FIELD_VIEW_SLIDES + " = '\(record.viewSlides)', "
776
        query = query +  Constants.TABLE_PROGRESS_FIELD_PROGRESS + " = '\(record.progress)', "
777
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING + " = '\(record.returning)', "
778
        query = query +  Constants.TABLE_PROGRESS_FIELD_RETURNING_AFTER_COMPLETED + " = '\(record.returningAfterCompleted)', "
779
        query = query +  Constants.TABLE_PROGRESS_FIELD_COMPLETED + " = '\(record.completed)' "
780
        query = query + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_ID + " = \(record.id);"
781
 
782
        var statement : OpaquePointer? = nil
783
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
784
            if sqlite3_step(statement) != SQLITE_DONE {
785
                print("No se pudo actualizar un registro en la tabla: \(Constants.TABLE_PROGRESS)")
786
            }
787
        } else {
788
            print("Fallo la preparación de actualizar un registro en la tabla: \(Constants.TABLE_PROGRESS)")
789
        }
790
        sqlite3_finalize(statement)
791
    }
792
 
793
    func remove(id: Int) {
794
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + " WHERE " +  Constants.TABLE_PROGRESS_FIELD_ID + " = " + "\(id) ;"
795
        var statement : OpaquePointer? = nil
796
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
797
            if sqlite3_step(statement) != SQLITE_DONE {
798
                print("No se pudo borrar un registro con el id: \(id) en la tabla: \(Constants.TABLE_PROGRESS)")
799
            }
800
        } else {
801
            print("Fallo la preparación de borrar un registro con el id: \(id) en la tabla: \(Constants.TABLE_PROGRESS)")
802
        }
803
        sqlite3_finalize(statement)
804
    }
805
 
806
    func removeAll() {
807
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS + ";"
808
        var statement : OpaquePointer? = nil
809
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
810
            if sqlite3_step(statement) != SQLITE_DONE {
811
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)")
812
            }
813
        } else {
814
            print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)")
815
        }
816
        sqlite3_finalize(statement)
817
    }
818
 
819
    func removeAllUserUuidNotEqual(userUuid : String)
820
    {
821
        let query = "DELETE FROM " +  Constants.TABLE_PROGRESS +
822
            " WHERE " + Constants.TABLE_PROGRESS_FIELD_USER_UUID + " <> '\(userUuid)' ;"
823
        var statement : OpaquePointer? = nil
824
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
825
            if sqlite3_step(statement) != SQLITE_DONE {
826
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS)" +
827
                " de los usuarios diferentes de : \(userUuid)" )
828
            }
829
        } else {
830
            print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_PROGRESS) de los usuarios diferentes de : \(userUuid) ")
831
        }
832
        sqlite3_finalize(statement)
833
    }
834
 
835
}