|
| 1 | +// |
| 2 | +// Connection.m |
| 3 | +// Hackaton |
| 4 | +// |
| 5 | +// Created by Jorge Raul Ovalle Zuleta on 3/29/14. |
| 6 | +// Copyright (c) 2014 jomobile.co. All rights reserved. |
| 7 | +// |
| 8 | + |
| 9 | +#import "Connection.h" |
| 10 | +#import "Answer.h" |
| 11 | +#import "Question.h" |
| 12 | +#import "Score.h" |
| 13 | + |
| 14 | +@implementation Connection |
| 15 | +@synthesize returnList; |
| 16 | + |
| 17 | +-(id)init{ |
| 18 | + self = [super init]; |
| 19 | + if (self) { |
| 20 | + returnList = [[NSMutableArray alloc] init]; |
| 21 | + } |
| 22 | + return self; |
| 23 | +} |
| 24 | + |
| 25 | +-(NSString *) filePath{ |
| 26 | + return [[NSBundle bundleForClass:[self class]] pathForResource:@"Hackaton" ofType:@"sqlite"]; |
| 27 | +} |
| 28 | + |
| 29 | +//open the db |
| 30 | +-(void)openDB { |
| 31 | + if(sqlite3_open([[self filePath] UTF8String], &db)!= SQLITE_OK){ |
| 32 | + sqlite3_close(db); |
| 33 | + NSAssert(0,@"Database failed to open"); |
| 34 | + }else{ |
| 35 | + // NSLog(@"database opened"); |
| 36 | + } |
| 37 | +} |
| 38 | + |
| 39 | +//Method to get All Answers by random |
| 40 | +-(NSMutableArray*) getRandomQuestions{ |
| 41 | + returnList = [[NSMutableArray alloc] init]; |
| 42 | + NSString *sql = [NSString stringWithFormat:@"SELECT * FROM QUESTION ORDER BY RANDOM();"]; |
| 43 | + sqlite3_stmt *statement; |
| 44 | + if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK) |
| 45 | + { |
| 46 | + while (sqlite3_step(statement)==SQLITE_ROW) { |
| 47 | + Question *queObj = [[Question alloc] init]; |
| 48 | + char *field1 = (char *) sqlite3_column_text(statement, 0); |
| 49 | + NSString *field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 50 | + [queObj setIdQuestion: field1str.intValue]; |
| 51 | + field1 = (char *) sqlite3_column_text(statement, 1); |
| 52 | + [queObj setTxtQuestion: [[NSString alloc]initWithUTF8String:field1]]; |
| 53 | + field1 = (char *) sqlite3_column_text(statement, 2); |
| 54 | + [queObj setImgQuestion:[[NSString alloc]initWithUTF8String:field1]]; |
| 55 | + [returnList addObject:queObj]; |
| 56 | + } |
| 57 | + } |
| 58 | + return returnList; |
| 59 | +} |
| 60 | +//Get 4 Answers randomly |
| 61 | +-(NSMutableArray*)getRandomAnswers:(int)id_question{ |
| 62 | + returnList = [[NSMutableArray alloc] init]; |
| 63 | + NSString *sql = [NSString stringWithFormat:@"SELECT id_answer,text_answer,is_answer FROM ANSWER WHERE id_question = %d ORDER BY RANDOM();", id_question]; |
| 64 | + sqlite3_stmt *statement; |
| 65 | + if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK) |
| 66 | + { |
| 67 | + while (sqlite3_step(statement)==SQLITE_ROW) { |
| 68 | + Answer *ansObj = [[Answer alloc] init]; |
| 69 | + char *field1 = (char *) sqlite3_column_text(statement, 0); |
| 70 | + NSString *field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 71 | + [ansObj setIdAnswer: field1str.intValue]; |
| 72 | + field1 = (char *) sqlite3_column_text(statement, 1); |
| 73 | + [ansObj setTxtAnswer:[[NSString alloc]initWithUTF8String:field1]]; |
| 74 | + field1 = (char *) sqlite3_column_text(statement, 2); |
| 75 | + [ansObj setIsTrue:[[NSString alloc]initWithUTF8String:field1]]; |
| 76 | + [returnList addObject:ansObj]; |
| 77 | + } |
| 78 | + } |
| 79 | + return returnList; |
| 80 | +} |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +//Get All Scores |
| 85 | +-(NSMutableArray*)getAllRanking{ |
| 86 | + returnList = [[NSMutableArray alloc] init]; |
| 87 | + NSString *sql = [NSString stringWithFormat:@"SELECT * FROM SCORE ORDER BY total_score DESC; "]; |
| 88 | + sqlite3_stmt *statement; |
| 89 | + if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK) |
| 90 | + { |
| 91 | + while (sqlite3_step(statement)==SQLITE_ROW) { |
| 92 | + Score *scoObj = [[Score alloc] init]; |
| 93 | + char *field1 = (char *) sqlite3_column_text(statement, 0); |
| 94 | + NSString *field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 95 | + [scoObj setIdScore:field1str.intValue]; |
| 96 | + field1 = (char *) sqlite3_column_text(statement, 1); |
| 97 | + [scoObj setNomUser:[[NSString alloc]initWithUTF8String:field1]]; |
| 98 | + field1 = (char *) sqlite3_column_text(statement, 2); |
| 99 | + field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 100 | + [scoObj setFinalScore:field1str.intValue]; |
| 101 | + [returnList addObject:scoObj]; |
| 102 | + } |
| 103 | + } |
| 104 | + return returnList; |
| 105 | +} |
| 106 | + |
| 107 | + |
| 108 | +//Save new score |
| 109 | +-(void)insertScore:(NSString*)namUser :(int)scoreTotal { |
| 110 | + /* NSString *sql = [NSString stringWithFormat:@"INSERT INTO SCORE (nom_user, total_score) VALUES ('%@',%d);",namUser,scoreTotal]; |
| 111 | + NSLog(@"%@",sql); |
| 112 | + sqlite3_stmt *statement; |
| 113 | + |
| 114 | + if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, NULL) == SQLITE_OK) { |
| 115 | + |
| 116 | + sqlite3_step(statement); //Aquí se ejecuta tu consulta |
| 117 | + NSLog(@"Se ejecuto"); |
| 118 | + |
| 119 | + }else{ |
| 120 | + NSLog(@"Error en la consulta a la base de datos"); |
| 121 | + } |
| 122 | + |
| 123 | + sqlite3_finalize(statement); |
| 124 | + */ |
| 125 | + sqlite3_stmt *statement; |
| 126 | + /*const char *sql = [[NSString stringWithFormat:@"INSERT INTO SCORE (nom_user, total_score) VALUES ('%@',%d);",namUser,scoreTotal] UTF8String];*/ |
| 127 | + |
| 128 | + |
| 129 | + if (statement == nil) { |
| 130 | +// [NSString stringWithFormat:@"INSERT INTO SCORE (nom_user, total_score) VALUES VALUES(%@,%@)", namUser,scoreTotal]; |
| 131 | + const char *sql = [[NSString stringWithFormat:@"INSERT INTO SCORE (nom_user, total_score) VALUES ('%@',%d);",namUser,scoreTotal] UTF8String]; |
| 132 | + if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) != SQLITE_OK) { |
| 133 | + NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(db)); |
| 134 | + } |
| 135 | + |
| 136 | + // sqlite3_bind_text(statement, 2, [namUser UTF8String], -1, SQLITE_TRANSIENT ); |
| 137 | + // sqlite3_bind_text(statement, 3, [[NSString stringWithFormat:@"%d",scoreTotal] UTF8String], -1, SQLITE_TRANSIENT ); |
| 138 | + } |
| 139 | + sqlite3_step(statement); |
| 140 | + |
| 141 | + sqlite3_reset(statement); |
| 142 | + /*if (success != SQLITE_ERROR) { |
| 143 | + NSLog(@"error"); |
| 144 | + }*/ |
| 145 | + sqlite3_finalize(statement); |
| 146 | + sqlite3_close(db); |
| 147 | + |
| 148 | + |
| 149 | + |
| 150 | +} |
| 151 | + |
| 152 | +//Select Max Score |
| 153 | +-(int)selectMaxScore{ |
| 154 | + NSString *sql = [NSString stringWithFormat:@"SELECT MAX(total_score) FROM SCORE;"]; |
| 155 | + sqlite3_stmt *statement; |
| 156 | + int max; |
| 157 | + if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK) |
| 158 | + { |
| 159 | + while (sqlite3_step(statement)==SQLITE_ROW) { |
| 160 | + char *field1 = (char *) sqlite3_column_text(statement, 0); |
| 161 | + NSString *field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 162 | + max = field1str.intValue; |
| 163 | + } |
| 164 | + }else{ |
| 165 | + NSLog(@"Holy crap, an Error!"); |
| 166 | + } |
| 167 | + return max; |
| 168 | +} |
| 169 | + |
| 170 | +//Select Advice |
| 171 | + |
| 172 | +-(NSString*)getAdvice:(int)id_question{ |
| 173 | + |
| 174 | + NSString *sql = [NSString stringWithFormat:@"SELECT txt_advice FROM ADVICE WHERE id_question = %d;",id_question]; |
| 175 | + sqlite3_stmt *statement; |
| 176 | + NSString *advice = [[NSString alloc]init]; |
| 177 | + if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)==SQLITE_OK) |
| 178 | + { |
| 179 | + while (sqlite3_step(statement)==SQLITE_ROW) { |
| 180 | + char *field1 = (char *) sqlite3_column_text(statement, 0); |
| 181 | + NSString *field1str = [[NSString alloc]initWithUTF8String:field1]; |
| 182 | + advice = field1str; |
| 183 | + } |
| 184 | + }else{ |
| 185 | + NSLog(@"Holy crap, an Error!"); |
| 186 | + } |
| 187 | + return advice; |
| 188 | +} |
| 189 | + |
| 190 | +@end |
| 191 | + |
| 192 | + |
| 193 | + |
0 commit comments