Commit b50303b97d2ca5389db38e585f0675f90e7dcaef
1 parent
915e7d0c7a
Exists in
master
and in
1 other branch
update api
Showing 8 changed files with 270 additions and 85 deletions Side-by-side Diff
LifeLog/LifeLog.xcodeproj/project.pbxproj
... | ... | @@ -35,6 +35,8 @@ |
35 | 35 | 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; |
36 | 36 | 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; |
37 | 37 | 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; |
38 | + 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; }; | |
39 | + 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; }; | |
38 | 40 | 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; |
39 | 41 | 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; |
40 | 42 | 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; |
... | ... | @@ -109,6 +111,9 @@ |
109 | 111 | 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; |
110 | 112 | 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; |
111 | 113 | 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; |
114 | + 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; }; | |
115 | + 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; }; | |
116 | + 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; }; | |
112 | 117 | 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; |
113 | 118 | 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; |
114 | 119 | 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; |
... | ... | @@ -153,6 +158,7 @@ |
153 | 158 | 6E18CECF1F2E398C0029891F /* Login */ = { |
154 | 159 | isa = PBXGroup; |
155 | 160 | children = ( |
161 | + 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, | |
156 | 162 | 6E18CED01F2E39DB0029891F /* LoginViewController.h */, |
157 | 163 | 6E18CED11F2E39DB0029891F /* LoginViewController.m */, |
158 | 164 | 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, |
... | ... | @@ -358,6 +364,16 @@ |
358 | 364 | name = Common; |
359 | 365 | sourceTree = "<group>"; |
360 | 366 | }; |
367 | + 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { | |
368 | + isa = PBXGroup; | |
369 | + children = ( | |
370 | + 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, | |
371 | + 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, | |
372 | + 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, | |
373 | + ); | |
374 | + name = ConfirmForgetPass; | |
375 | + sourceTree = "<group>"; | |
376 | + }; | |
361 | 377 | 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { |
362 | 378 | isa = PBXGroup; |
363 | 379 | children = ( |
... | ... | @@ -501,6 +517,7 @@ |
501 | 517 | 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, |
502 | 518 | 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, |
503 | 519 | 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, |
520 | + 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, | |
504 | 521 | 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, |
505 | 522 | 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, |
506 | 523 | 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, |
... | ... | @@ -590,6 +607,7 @@ |
590 | 607 | 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, |
591 | 608 | 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, |
592 | 609 | 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, |
610 | + 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, | |
593 | 611 | 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, |
594 | 612 | 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, |
595 | 613 | 6E18CEDC1F2E40F50029891F /* User.m in Sources */, |
LifeLog/LifeLog/LoginViewController.m
... | ... | @@ -10,6 +10,8 @@ |
10 | 10 | #import "ServerAPI.h" |
11 | 11 | #import "AppDelegate.h" |
12 | 12 | #import "RegisterViewController.h" |
13 | +#import "Utilities.h" | |
14 | +#import "ConfirmForgetPassViewController.h" | |
13 | 15 | |
14 | 16 | @interface LoginViewController () |
15 | 17 | @property (nonatomic, weak) IBOutlet UILabel *lblEmail; |
16 | 18 | |
... | ... | @@ -64,31 +66,35 @@ |
64 | 66 | else { |
65 | 67 | dispatch_async(dispatch_get_main_queue(), ^{ |
66 | 68 | NSString *message = [error.userInfo objectForKey:@"message"]; |
67 | - if (message.length > 0) { | |
68 | - UIAlertController * alert= [UIAlertController | |
69 | - alertControllerWithTitle:@"Error" | |
70 | - message:message | |
71 | - preferredStyle:UIAlertControllerStyleAlert]; | |
72 | - | |
73 | - UIAlertAction* ok = [UIAlertAction | |
74 | - actionWithTitle:@"OK" | |
75 | - style:UIAlertActionStyleDefault | |
76 | - handler:^(UIAlertAction * action) | |
77 | - { | |
78 | - [alert dismissViewControllerAnimated:YES completion:nil]; | |
79 | - | |
80 | - }]; | |
81 | - | |
82 | - [alert addAction:ok]; | |
83 | - | |
84 | - [weakSelf presentViewController:alert animated:YES completion:nil]; | |
85 | - } | |
69 | + [Utilities showErrorMessage:message withViewController:weakSelf]; | |
86 | 70 | }); |
87 | 71 | } |
88 | 72 | }]; |
89 | 73 | } |
90 | 74 | |
91 | 75 | - (IBAction)buttonForgetTouchUpInside:(id)sender { |
76 | + if (_tfEmail.text.length > 0) { | |
77 | + LoginViewController __weak *weakSelf = self; | |
78 | + [[ServerAPI server] forgetPass:_tfEmail.text CompletionHandler:^(NSError *error) { | |
79 | + if (error == nil) { | |
80 | + // goto screen confirm forgetPass | |
81 | + dispatch_async(dispatch_get_main_queue(), ^{ | |
82 | + ConfirmForgetPassViewController *confirmVC = [[ConfirmForgetPassViewController alloc] initWithNibName:@"ConfirmForgetPassViewController" bundle:nil]; | |
83 | + confirmVC.email = weakSelf.tfEmail.text; | |
84 | + [weakSelf.navigationController pushViewController:confirmVC animated:YES]; | |
85 | + }); | |
86 | + } | |
87 | + else { | |
88 | + dispatch_async(dispatch_get_main_queue(), ^{ | |
89 | + NSString *message = [error.userInfo objectForKey:@"message"]; | |
90 | + [Utilities showErrorMessage:message withViewController:weakSelf]; | |
91 | + }); | |
92 | + } | |
93 | + }]; | |
94 | + } | |
95 | + else { | |
96 | + [Utilities showErrorMessage:@"Please input email" withViewController:self]; | |
97 | + } | |
92 | 98 | } |
93 | 99 | |
94 | 100 | - (IBAction)buttonRegisterTouchUpInside:(id)sender { |
LifeLog/LifeLog/RegisterViewController.m
... | ... | @@ -160,8 +160,9 @@ |
160 | 160 | } |
161 | 161 | |
162 | 162 | - (IBAction)registButtonPressed:(id)sender { |
163 | - NSLog(@"registButtonPressed"); | |
164 | - [self registerUser]; | |
163 | + if ([self checkAllowRegister]) { | |
164 | + [self registerUser]; | |
165 | + } | |
165 | 166 | } |
166 | 167 | |
167 | 168 | #pragma mark - UIActionSheetDelegate |
... | ... | @@ -203,7 +204,7 @@ |
203 | 204 | else { |
204 | 205 | dispatch_async(dispatch_get_main_queue(), ^{ |
205 | 206 | NSString *message = [error.userInfo objectForKey:@"message"]; |
206 | - [weakSelf showErrorMessage:message]; | |
207 | + [Utilities showErrorMessage:message withViewController:weakSelf]; | |
207 | 208 | }); |
208 | 209 | } |
209 | 210 | }]; |
... | ... | @@ -413,6 +414,67 @@ |
413 | 414 | return dict; |
414 | 415 | } |
415 | 416 | |
417 | +- (BOOL)checkAllowRegister | |
418 | +{ | |
419 | + NSString *message = @""; | |
420 | + if (_tfUsername.text.length <= 0) { | |
421 | + message = @"Please input username"; | |
422 | + [Utilities showErrorMessage:message withViewController:self]; | |
423 | + return NO; | |
424 | + } | |
425 | + if (_tfName.text.length <= 0) { | |
426 | + message = @"Please input full name"; | |
427 | + [Utilities showErrorMessage:message withViewController:self]; | |
428 | + return NO; | |
429 | + } | |
430 | + if (_tfEmail.text.length <= 0) { | |
431 | + message = @"Please input email"; | |
432 | + [Utilities showErrorMessage:message withViewController:self]; | |
433 | + return NO; | |
434 | + } | |
435 | + if (_tfPassword.text.length <= 0) { | |
436 | + message = @"Please input password"; | |
437 | + [Utilities showErrorMessage:message withViewController:self]; | |
438 | + return NO; | |
439 | + } | |
440 | + if (_tfConfirmPassword.text.length <= 0) { | |
441 | + message = @"Please input confirm password"; | |
442 | + [Utilities showErrorMessage:message withViewController:self]; | |
443 | + return NO; | |
444 | + } | |
445 | + if (_tflblSex.text.length <= 0) { | |
446 | + message = @"Please input gender"; | |
447 | + [Utilities showErrorMessage:message withViewController:self]; | |
448 | + return NO; | |
449 | + } | |
450 | + if (_tfUsername.text.length > 100) { | |
451 | + message = @"Username maximum length 100"; | |
452 | + [Utilities showErrorMessage:message withViewController:self]; | |
453 | + return NO; | |
454 | + } | |
455 | + if (_tfName.text.length > 255) { | |
456 | + message = @"Full name maximum length 255"; | |
457 | + [Utilities showErrorMessage:message withViewController:self]; | |
458 | + return NO; | |
459 | + } | |
460 | + if (_tfEmail.text.length > 255) { | |
461 | + message = @"Email maximum length 255"; | |
462 | + [Utilities showErrorMessage:message withViewController:self]; | |
463 | + return NO; | |
464 | + } | |
465 | + if (_tfPassword.text.length < 6) { | |
466 | + message = @"Password minimum length 6"; | |
467 | + [Utilities showErrorMessage:message withViewController:self]; | |
468 | + return NO; | |
469 | + } | |
470 | + if (![_tfEmail.text containsString:@"@"]) { | |
471 | + message = @"Email invalid"; | |
472 | + [Utilities showErrorMessage:message withViewController:self]; | |
473 | + return NO; | |
474 | + } | |
475 | + return YES; | |
476 | +} | |
477 | + | |
416 | 478 | - (NSDictionary *)createParamsForRegisterUser { |
417 | 479 | NSMutableDictionary *dictResutl = [[NSMutableDictionary alloc] init]; |
418 | 480 | dictResutl = [self addParam:@"username" value:_tfUsername.text withDict:dictResutl]; |
419 | 481 | |
420 | 482 | |
421 | 483 | |
422 | 484 | |
... | ... | @@ -420,20 +482,24 @@ |
420 | 482 | dictResutl = [self addParam:@"nickname" value:_tfNickname.text withDict:dictResutl]; |
421 | 483 | dictResutl = [self addParam:@"email" value:_tfEmail.text withDict:dictResutl]; |
422 | 484 | dictResutl = [self addParam:@"password" value:_tfPassword.text withDict:dictResutl]; |
423 | - //dictResutl = [self addParam:@"confirm_password" value:_tfConfirmPassword.text withDict:dictResutl]; | |
424 | - NSString *valueSex = nil; // 0 - ็ท, 1 - ๅฅณ | |
485 | + dictResutl = [self addParam:@"password_confirmation" value:_tfConfirmPassword.text withDict:dictResutl]; | |
486 | + // 0 - ็ท, 1 - ๅฅณ // NSString *valueSex = nil; | |
425 | 487 | if (_tflblSex.text.length > 0) { |
426 | 488 | if ([_tflblSex.text isEqualToString:@"็ท"]) { |
427 | - valueSex = @"0"; | |
489 | + [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"gender"]; | |
428 | 490 | } |
429 | 491 | else if ([_tflblSex.text isEqualToString:@"ๅฅณ"]) { |
430 | - valueSex = @"1"; | |
492 | + [dictResutl setValue:[NSNumber numberWithInt:1] forKey:@"gender"]; | |
431 | 493 | } |
432 | 494 | } |
433 | - dictResutl = [self addParam:@"gender" value:valueSex withDict:dictResutl]; | |
495 | + //dictResutl = [self addParam:@"gender" value:valueSex withDict:dictResutl]; | |
434 | 496 | NSString *valueBirthDay = nil; |
435 | 497 | if (_tfBirthday.text.length > 0) { |
436 | - valueBirthDay = [NSString stringWithFormat:@"%ld-%ld-%ld", (long)[dateBirthDay getYear], (long)[dateBirthDay getMonth], (long)[dateBirthDay getDay]]; | |
498 | + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; | |
499 | + [dateFormatter setDateFormat:@"yyyy-MM-dd"]; | |
500 | + valueBirthDay = [dateFormatter stringFromDate:dateBirthDay]; | |
501 | + //valueBirthDay = [NSString stringWithFormat:@"%ld-%ld-%ld", (long)[dateBirthDay getYear], (long)[dateBirthDay getMonth], (long)[dateBirthDay getDay]]; | |
502 | + dictResutl = [self addParam:@"birthday" value:valueBirthDay withDict:dictResutl]; | |
437 | 503 | } |
438 | 504 | dictResutl = [self addParam:@"height" value:_tfHeight.text withDict:dictResutl]; |
439 | 505 | dictResutl = [self addParam:@"weight" value:_tfWeight.text withDict:dictResutl]; |
440 | 506 | |
... | ... | @@ -445,13 +511,25 @@ |
445 | 511 | if (![profile_image isEqualToString:@""]) { |
446 | 512 | dictResutl = [self addParam:@"profile_image" value:profile_image withDict:dictResutl]; |
447 | 513 | } |
514 | + // hardcode | |
515 | + // require | |
516 | + [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"receive_notification"]; | |
517 | + // = [self addParam:@"receive_notification" value:@"0" withDict:dictResutl]; | |
518 | + [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"share_data"]; | |
519 | + // dictResutl = [self addParam:@"share_data" value:@"0" withDict:dictResutl]; | |
520 | + | |
521 | + // Option | |
522 | + //dictResutl = [self addParam:@"phone" value:@"01676582596" withDict:dictResutl]; | |
523 | + [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"remember"]; | |
524 | + //dictResutl = [self addParam:@"remember" value:@"0" withDict:dictResutl]; | |
525 | + | |
448 | 526 | return dictResutl; |
449 | 527 | } |
450 | 528 | |
451 | 529 | - (void)registerUser { |
452 | 530 | NSDictionary *paramRegister = [self createParamsForRegisterUser]; |
453 | 531 | RegisterViewController __weak *weakSelf = self; |
454 | - [[ServerAPI server] registerUserWithParams:paramRegister CompletionHandler:^(NSError *error) { | |
532 | + [[ServerAPI server] registerUserWithParams:paramRegister CompletionHandler:^(User *user, NSString *token, NSError *error) { | |
455 | 533 | if (weakSelf == nil) { |
456 | 534 | return ; |
457 | 535 | } |
458 | 536 | |
... | ... | @@ -463,33 +541,10 @@ |
463 | 541 | else { |
464 | 542 | dispatch_async(dispatch_get_main_queue(), ^{ |
465 | 543 | NSString *message = [error.userInfo objectForKey:@"message"]; |
466 | - [weakSelf showErrorMessage:message]; | |
544 | + [Utilities showErrorMessage:message withViewController:weakSelf]; | |
467 | 545 | }); |
468 | 546 | } |
469 | 547 | }]; |
470 | -} | |
471 | - | |
472 | -- (void)showErrorMessage:(NSString *)message | |
473 | -{ | |
474 | - if (message.length > 0) { | |
475 | - UIAlertController * alert= [UIAlertController | |
476 | - alertControllerWithTitle:@"Error" | |
477 | - message:message | |
478 | - preferredStyle:UIAlertControllerStyleAlert]; | |
479 | - | |
480 | - UIAlertAction* ok = [UIAlertAction | |
481 | - actionWithTitle:@"OK" | |
482 | - style:UIAlertActionStyleDefault | |
483 | - handler:^(UIAlertAction * action) | |
484 | - { | |
485 | - [alert dismissViewControllerAnimated:YES completion:nil]; | |
486 | - | |
487 | - }]; | |
488 | - | |
489 | - [alert addAction:ok]; | |
490 | - | |
491 | - [self presentViewController:alert animated:YES completion:nil]; | |
492 | - } | |
493 | 548 | } |
494 | 549 | |
495 | 550 | @end |
LifeLog/LifeLog/ServerAPI.h
... | ... | @@ -13,7 +13,9 @@ |
13 | 13 | + (instancetype) server; |
14 | 14 | @property (nonatomic, assign) NSTimeInterval timeOutInterval; |
15 | 15 | - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; |
16 | -- (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(NSError *)) completion; | |
16 | +- (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; | |
17 | 17 | - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion; |
18 | +- (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion; | |
19 | +- (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion; | |
18 | 20 | @end |
LifeLog/LifeLog/ServerAPI.m
... | ... | @@ -68,8 +68,7 @@ |
68 | 68 | if (error == nil) |
69 | 69 | { |
70 | 70 | NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; |
71 | - | |
72 | - | |
71 | + | |
73 | 72 | int status = [dataResult[@"status"] intValue]; |
74 | 73 | if (status == 1) { // status = 1 success |
75 | 74 | NSString *token = dataResult[@"result"][@"token"]; |
... | ... | @@ -103,7 +102,7 @@ |
103 | 102 | } |
104 | 103 | |
105 | 104 | // Register |
106 | -- (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(NSError *)) completion { | |
105 | +- (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { | |
107 | 106 | [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" paras:params completion:^(NSData *data, NSError *error) { |
108 | 107 | |
109 | 108 | if (completion == NULL) { |
110 | 109 | |
111 | 110 | |
112 | 111 | |
113 | 112 | |
114 | 113 | |
... | ... | @@ -113,29 +112,92 @@ |
113 | 112 | if (error == nil) |
114 | 113 | { |
115 | 114 | NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; |
116 | - completion(nil); | |
117 | - /* | |
115 | + | |
116 | + int status = [dataResult[@"status"] intValue]; | |
117 | + if (status == 1) { // status = 1 success | |
118 | + NSString *token = dataResult[@"result"][@"token"]; | |
119 | + NSDictionary *dictUser = dataResult[@"result"][@"user"]; | |
120 | + User *user = [[User alloc] init]; | |
121 | + user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; | |
122 | + user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; | |
123 | + user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; | |
124 | + user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; | |
125 | + user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; | |
126 | + user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; | |
127 | + user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; | |
128 | + user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; | |
129 | + user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; | |
130 | + user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; | |
131 | + user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; | |
132 | + user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; | |
133 | + completion(user, token, nil); | |
134 | + } | |
135 | + else { // status = 0 error | |
136 | + NSString *message = dataResult[@"message"]; | |
137 | + NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; | |
138 | + completion(nil, nil, loginFaild); | |
139 | + } | |
140 | + } | |
141 | + else | |
142 | + { | |
143 | + completion(nil, nil, error); | |
144 | + } | |
145 | + }]; | |
146 | +} | |
147 | + | |
148 | +- (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { | |
149 | + [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { | |
150 | + | |
151 | + if (completion == NULL) { | |
152 | + return ; | |
153 | + } | |
154 | + | |
155 | + if (error == nil) | |
156 | + { | |
118 | 157 | NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; |
119 | - if (dataResult == nil) { | |
158 | + | |
159 | + int status = [dataResult[@"status"] intValue]; | |
160 | + if (status == 1) { // status = 1 success | |
120 | 161 | completion(nil); |
121 | 162 | } |
122 | - | |
163 | + else { // status = 0 error | |
164 | + NSString *message = dataResult[@"message"]; | |
165 | + NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; | |
166 | + completion(forgetPass); | |
167 | + } | |
168 | + } | |
169 | + else | |
170 | + { | |
171 | + completion(error); | |
172 | + } | |
173 | + }]; | |
174 | +} | |
175 | +- (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { | |
176 | + [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { | |
177 | + | |
178 | + if (completion == NULL) { | |
179 | + return ; | |
180 | + } | |
181 | + | |
182 | + if (error == nil) | |
183 | + { | |
184 | + NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; | |
185 | + | |
123 | 186 | int status = [dataResult[@"status"] intValue]; |
124 | 187 | if (status == 1) { // status = 1 success |
125 | 188 | completion(nil); |
126 | 189 | } |
127 | 190 | else { // status = 0 error |
128 | 191 | NSString *message = dataResult[@"message"]; |
129 | - NSError *registerFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; | |
130 | - completion(registerFaild); | |
192 | + NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; | |
193 | + completion(confirmForgetPass); | |
131 | 194 | } |
132 | - */ | |
133 | 195 | } |
134 | 196 | else |
135 | 197 | { |
136 | 198 | completion(error); |
137 | 199 | } |
138 | - }]; | |
200 | + }]; | |
139 | 201 | } |
140 | 202 | |
141 | 203 | - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { |
LifeLog/LifeLog/User.m
... | ... | @@ -9,25 +9,43 @@ |
9 | 9 | #import "User.h" |
10 | 10 | |
11 | 11 | @implementation User |
12 | -//- (id)initWithCoder:(NSCoder *)decoder { | |
13 | -// self = [super init]; | |
14 | -// if (!self) { | |
15 | -// return nil; | |
16 | -// } | |
17 | -// | |
18 | -// self.user_id = [decoder decodeObjectForKey:@"user_id"]; | |
19 | -// self.access_token = [decoder decodeObjectForKey:@"access_token"]; | |
20 | -// self.full_name = [decoder decodeObjectForKey:@"full_name"]; | |
21 | -// self.picture = [decoder decodeObjectForKey:@"picture"]; | |
22 | -// | |
23 | -// return self; | |
24 | -//} | |
25 | -// | |
26 | -//- (void)encodeWithCoder:(NSCoder *)encoder { | |
27 | -// [encoder encodeObject:self.user_id forKey:@"user_id"]; | |
28 | -// [encoder encodeObject:self.access_token forKey:@"access_token"]; | |
29 | -// [encoder encodeObject:self.full_name forKey:@"full_name"]; | |
30 | -// [encoder encodeObject:self.picture forKey:@"picture"]; | |
31 | -//} | |
12 | +- (id)initWithCoder:(NSCoder *)decoder { | |
13 | + self = [super init]; | |
14 | + if (!self) { | |
15 | + return nil; | |
16 | + } | |
17 | + | |
18 | + self.user_id = [decoder decodeObjectForKey:@"user_id"]; | |
19 | + self.username = [decoder decodeObjectForKey:@"username"]; | |
20 | + self.password = [decoder decodeObjectForKey:@"password"]; | |
21 | + self.full_name = [decoder decodeObjectForKey:@"full_name"]; | |
22 | + self.nickname = [decoder decodeObjectForKey:@"nickname"]; | |
23 | + self.birthday = [decoder decodeObjectForKey:@"birthday"]; | |
24 | + self.height = [decoder decodeFloatForKey:@"height"]; | |
25 | + self.weight = [decoder decodeFloatForKey:@"weight"]; | |
26 | + self.gender = [decoder decodeIntForKey:@"gender"]; | |
27 | + self.address = [decoder decodeObjectForKey:@"address"]; | |
28 | + self.user_description = [decoder decodeObjectForKey:@"user_description"]; | |
29 | + self.email = [decoder decodeObjectForKey:@"email"]; | |
30 | + self.phone = [decoder decodeObjectForKey:@"phone"]; | |
31 | + | |
32 | + return self; | |
33 | +} | |
34 | + | |
35 | +- (void)encodeWithCoder:(NSCoder *)encoder { | |
36 | + [encoder encodeObject:self.user_id forKey:@"user_id"]; | |
37 | + [encoder encodeObject:self.username forKey:@"username"]; | |
38 | + [encoder encodeObject:self.password forKey:@"password"]; | |
39 | + [encoder encodeObject:self.full_name forKey:@"full_name"]; | |
40 | + [encoder encodeObject:self.nickname forKey:@"nickname"]; | |
41 | + [encoder encodeObject:self.birthday forKey:@"birthday"]; | |
42 | + [encoder encodeFloat:self.height forKey:@"height"]; | |
43 | + [encoder encodeFloat:self.weight forKey:@"weight"]; | |
44 | + [encoder encodeInt:self.gender forKey:@"gender"]; | |
45 | + [encoder encodeObject:self.address forKey:@"address"]; | |
46 | + [encoder encodeObject:self.user_description forKey:@"user_description"]; | |
47 | + [encoder encodeObject:self.email forKey:@"email"]; | |
48 | + [encoder encodeObject:self.phone forKey:@"phone"]; | |
49 | +} | |
32 | 50 | @end |
LifeLog/LifeLog/Utilities.h
LifeLog/LifeLog/Utilities.m
... | ... | @@ -25,5 +25,28 @@ |
25 | 25 | blue:((float)(hex & 0xFF))/255.0 alpha:1.0]; |
26 | 26 | } |
27 | 27 | |
28 | ++ (void)showErrorMessage:(NSString *)message withViewController:(UIViewController *)vc | |
29 | +{ | |
30 | + if (message.length > 0) { | |
31 | + UIAlertController * alert= [UIAlertController | |
32 | + alertControllerWithTitle:@"Error" | |
33 | + message:message | |
34 | + preferredStyle:UIAlertControllerStyleAlert]; | |
35 | + | |
36 | + UIAlertAction* ok = [UIAlertAction | |
37 | + actionWithTitle:@"OK" | |
38 | + style:UIAlertActionStyleDefault | |
39 | + handler:^(UIAlertAction * action) | |
40 | + { | |
41 | + [alert dismissViewControllerAnimated:YES completion:nil]; | |
42 | + | |
43 | + }]; | |
44 | + | |
45 | + [alert addAction:ok]; | |
46 | + | |
47 | + [vc presentViewController:alert animated:YES completion:nil]; | |
48 | + } | |
49 | +} | |
50 | + | |
28 | 51 | @end |