Proyectos de Subversion Iphone Microlearning

Rev

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