Proyectos de Subversion Iphone Microlearning

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  UserLogDao.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 UserLogDao {
12
    let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
13
    var db = Database().open()
14
 
15
 
16
    func selectByUserUuidAndActivityAndAddedOn(userUuid: String, activity : String, addedOn : String)-> UserLogModel {
17
        var model = UserLogModel()
18
        var sql = "SELECT "
19
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_ID + " , "
20
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_USER_UUID + " , "
21
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_COMPANY_UUID + " , "
22
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_TOPIC_UUID + " , "
23
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_CAPSULE_UUID + " , "
24
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_SLIDE_UUID + " , "
25
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " , "
26
        sql = sql +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON
27
        sql = sql +  " FROM " +  Constants.TABLE_USER_LOG
28
        sql = sql +  " WHERE " +  Constants.TABLE_USER_LOG_FIELD_USER_UUID + " = '\(userUuid)'  "
29
        sql = sql +  " AND " +  Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " = '\(activity)'  "
30
        sql = sql +  " AND " +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " = '\(addedOn)'  "
31
        sql = sql +  " LIMIT 1 ;"
32
        let query = sql
33
 
34
        var statement : OpaquePointer? = nil
35
 
36
 
37
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
38
            if (sqlite3_step(statement) == SQLITE_ROW) {
39
                model.id = Int(sqlite3_column_int(statement, 0))
40
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
41
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
42
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
43
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
44
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement,5)))
45
                model.activity = String(describing: String(cString: sqlite3_column_text(statement, 6)))
46
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
47
 
48
            }
49
        }
50
        sqlite3_finalize(statement)
51
        return model
52
    }
53
 
54
 
55
 
56
    func selectAll()-> [UserLogModel] {
57
        var records = [UserLogModel]()
58
        var query = "SELECT "
59
        query = query +  Constants.TABLE_USER_LOG_FIELD_ID + " , "
60
        query = query +  Constants.TABLE_USER_LOG_FIELD_USER_UUID + " , "
61
        query = query +  Constants.TABLE_USER_LOG_FIELD_COMPANY_UUID + " , "
62
        query = query +  Constants.TABLE_USER_LOG_FIELD_TOPIC_UUID + " , "
63
        query = query +  Constants.TABLE_USER_LOG_FIELD_CAPSULE_UUID + " , "
64
        query = query +  Constants.TABLE_USER_LOG_FIELD_SLIDE_UUID + " , "
65
        query = query +  Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " , "
66
        query = query +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON
67
        query = query + " FROM " + Constants.TABLE_USER_LOG
68
        query = query + " ORDER BY " + Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " DESC, " + Constants.TABLE_USER_LOG_FIELD_ID + " DESC;"
69
 
70
        var statement : OpaquePointer? = nil
71
 
72
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
73
            while (sqlite3_step(statement) == SQLITE_ROW) {
74
                var model = UserLogModel()
75
                model.id = Int(sqlite3_column_int(statement, 0))
76
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
77
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
78
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
79
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
80
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement, 5)))
81
                model.activity = String(describing: String(cString: sqlite3_column_text(statement, 6)))
82
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
83
 
84
                records.append(model)
85
            }
86
        }
87
        sqlite3_finalize(statement)
88
        return records
89
    }
90
 
91
    func selectAllByUserUuid(userUuid : String)-> [UserLogModel] {
92
        var records = [UserLogModel]()
93
        var query = "SELECT "
94
        query = query +  Constants.TABLE_USER_LOG_FIELD_ID + " , "
95
        query = query +  Constants.TABLE_USER_LOG_FIELD_USER_UUID + " , "
96
        query = query +  Constants.TABLE_USER_LOG_FIELD_COMPANY_UUID + " , "
97
        query = query +  Constants.TABLE_USER_LOG_FIELD_TOPIC_UUID + " , "
98
        query = query +  Constants.TABLE_USER_LOG_FIELD_CAPSULE_UUID + " , "
99
        query = query +  Constants.TABLE_USER_LOG_FIELD_SLIDE_UUID + " , "
100
        query = query +  Constants.TABLE_USER_LOG_FIELD_ACTIVITY + " , "
101
        query = query +  Constants.TABLE_USER_LOG_FIELD_ADDED_ON
102
        query = query + " FROM " + Constants.TABLE_USER_LOG
103
        query = query + " WHERE " + Constants.TABLE_USER_LOG_FIELD_USER_UUID  + " = '\(userUuid)' "
104
        query = query + " ORDER BY " + Constants.TABLE_USER_LOG_FIELD_ID + " DESC, "
105
        query = query + Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " DESC; "
106
 
107
        var statement : OpaquePointer? = nil
108
 
109
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
110
            while (sqlite3_step(statement) == SQLITE_ROW) {
111
                var model = UserLogModel()
112
                model.id = Int(sqlite3_column_int(statement, 0))
113
                model.userUuid = String(describing: String(cString: sqlite3_column_text(statement, 1)))
114
                model.companyUuid = String(describing: String(cString: sqlite3_column_text(statement, 2)))
115
                model.topicUuid = String(describing: String(cString: sqlite3_column_text(statement, 3)))
116
                model.capsuleUuid = String(describing: String(cString: sqlite3_column_text(statement, 4)))
117
                model.slideUuid = String(describing: String(cString: sqlite3_column_text(statement, 5)))
118
                model.activity = String(describing: String(cString: sqlite3_column_text(statement, 6)))
119
                model.addedOn = String(describing: String(cString: sqlite3_column_text(statement, 7)))
120
 
121
                records.append(model)
122
            }
123
        }
124
        sqlite3_finalize(statement)
125
        return records
126
    }
127
 
128
    func insert(record : UserLogModel) {
129
        var query = "INSERT INTO " + Constants.TABLE_USER_LOG + " ( "
130
        query = query + Constants.TABLE_USER_LOG_FIELD_COMPANY_UUID + " , "
131
        query = query + Constants.TABLE_USER_LOG_FIELD_USER_UUID + " , "
132
        query = query + Constants.TABLE_USER_LOG_FIELD_TOPIC_UUID + ", "
133
        query = query + Constants.TABLE_USER_LOG_FIELD_CAPSULE_UUID + ", "
134
        query = query + Constants.TABLE_USER_LOG_FIELD_SLIDE_UUID + ", "
135
        query = query + Constants.TABLE_USER_LOG_FIELD_ACTIVITY + ", "
136
        query = query + Constants.TABLE_USER_LOG_FIELD_ADDED_ON + " ) "
137
        query = query + " VALUES (?, ?, ?, ?, ?, ?, ?);"
138
 
139
        var statement : OpaquePointer?
140
 
141
 
142
        if (sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK) {
143
 
144
            sqlite3_bind_text(statement, 1, record.companyUuid, -1, SQLITE_TRANSIENT )
145
            sqlite3_bind_text(statement, 2, record.userUuid, -1, SQLITE_TRANSIENT )
146
            sqlite3_bind_text(statement, 3, record.topicUuid, -1, SQLITE_TRANSIENT )
147
            sqlite3_bind_text(statement, 4, record.capsuleUuid, -1, SQLITE_TRANSIENT)
148
            sqlite3_bind_text(statement, 5, record.slideUuid, -1, SQLITE_TRANSIENT)
149
            sqlite3_bind_text(statement, 6, record.activity , -1, SQLITE_TRANSIENT)
150
            sqlite3_bind_text(statement, 7, record.addedOn , -1, SQLITE_TRANSIENT)
151
 
152
            if (sqlite3_step(statement) != SQLITE_DONE) {
153
                print("No se pudo insertar un registro en la tabla: \(Constants.TABLE_USER_LOG)")
154
            } else {
155
                print("Insertamos un registo de log")
156
            }
157
        } else {
158
            print("Fallo la preparación en el insertar un registro en la tabla: \(Constants.TABLE_USER_LOG)")
159
        }
160
 
161
        sqlite3_finalize(statement)
162
    }
163
 
164
    func remove(id: Int) {
165
        let query = "DELETE FROM " + Constants.TABLE_USER_LOG + " WHERE " + Constants.TABLE_USER_LOG_FIELD_ID + " = " + "\(id) ;"
166
        var statement : OpaquePointer? = nil
167
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
168
            if sqlite3_step(statement) != SQLITE_DONE {
169
                print("No se pudo borrar el registro con el id: \(id) en la tabla: \(Constants.TABLE_USER_LOG)")
170
            }
171
        } else {
172
            print("No se pudo borrar el registro con id: \(id) en la tabla: \(Constants.TABLE_USER_LOG)")
173
        }
174
        sqlite3_finalize(statement)
175
    }
176
 
177
    func removeAll() {
178
        let query = "DELETE FROM " + Constants.TABLE_USER_LOG + ";"
179
        var statement : OpaquePointer? = nil
180
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
181
            if sqlite3_step(statement) != SQLITE_DONE {
182
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_USER_LOG)")            }
183
        } else {
184
            print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_USER_LOG)")
185
        }
186
        sqlite3_finalize(statement)
187
    }
188
 
189
    func removeAllUserUuidNotEqual(userUuid : String) {
190
        let query = "DELETE FROM " + Constants.TABLE_USER_LOG
191
            + " WHERE " + Constants.TABLE_USER_LOG_FIELD_USER_UUID + " <> '" + userUuid + "' ";
192
 
193
        var statement : OpaquePointer? = nil
194
        if sqlite3_prepare_v2(db, query, -1, &statement, nil) == SQLITE_OK{
195
            if sqlite3_step(statement) != SQLITE_DONE {
196
                print("No se pudo borrar todos los registros en la tabla: \(Constants.TABLE_USER_LOG) " +
197
                        " de usuarios diferents a : \(userUuid) ")
198
 
199
            } else {
200
                print("Se borraron todos los registros en la tabla: \(Constants.TABLE_USER_LOG) " +
201
                        " de usuarios diferents a : \(userUuid) ")
202
            }
203
        } else {
204
            print("Fallo la preparación de borrar todos los registros en la tabla: \(Constants.TABLE_USER_LOG) de los usuarios diferentes a : \(userUuid)")
205
        }
206
        sqlite3_finalize(statement)
207
    }
208
 
209
 
210
}