Advertisement
Guest User

SALIR BUM BUM

a guest
Oct 20th, 2016
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  ViewController.m
  3. //  ons.kg
  4. //
  5. //  Created by Umar_Energizer on 11.09.16.
  6. //  Copyright © 2016 ons.kg. All rights reserved.
  7. //
  8.  
  9. @import FirebaseInstanceID;
  10. @import FirebaseMessaging;
  11.  
  12. #import "ONSLoginViewController.h"
  13. #import "ONSAPIClient.h"
  14. #import "ONSUser.h"
  15. #import <SDWebImage/UIImageView+WebCache.h>
  16. //#import "KeychainItemWrapper.h"
  17. #import "ONSLoginViewController.h"
  18.  
  19. @interface ONSLoginViewController ()
  20.  
  21. {
  22.     NSMutableArray *tbViewControllersFull;
  23.     BOOL isExited;
  24.     NSString* switchIsOn;
  25.     NSString* topicID;
  26. }
  27.  
  28. @property (assign, nonatomic, getter=isKeyboardVisible) BOOL keyboardVisible;
  29.  
  30. @property (nonatomic, strong) IBOutlet UIButton *loginButton;
  31. @property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
  32.  
  33. @property (strong, nonatomic) IBOutlet UISwitch *switchButton;
  34. @property (nonatomic, strong) IBOutlet UITextField *emailTextField;
  35. @property (nonatomic, strong) IBOutlet UITextField *passwordTextField;
  36. @property(nonatomic, strong) NSMutableData* receivedData;
  37.  
  38. - (IBAction)hideKeyboard:(id)sender;
  39.  
  40. @property (nonatomic, strong) ONSAPIClient* apiClient;
  41. @property (nonatomic, strong) NSString* login;
  42. @property (nonatomic, strong) NSString* password;
  43.  
  44. // Личный кабинет
  45. @property (strong, nonatomic) IBOutlet UIView *selfCabinet;
  46.  
  47. @property (strong, nonatomic) IBOutlet UILabel *familya;
  48. @property (strong, nonatomic) IBOutlet UILabel *name;
  49. @property (strong, nonatomic) IBOutlet UILabel *otchestvo;
  50. @property (strong, nonatomic) IBOutlet UIImageView *avatar;
  51. @property (strong, nonatomic) IBOutlet UILabel *userInfo;
  52. @property (strong, nonatomic) IBOutlet UILabel *os;
  53. @property (strong, nonatomic) IBOutlet UILabel *mail;
  54. @property (strong, nonatomic) IBOutlet UIButton *exitButtonOutlet;
  55.  
  56.  
  57.  
  58. @end
  59.  
  60. @implementation ONSLoginViewController
  61. @synthesize loginScrollView;
  62. @synthesize scrollView;
  63.  
  64. - (void)viewDidLoad
  65. {
  66.     [super viewDidLoad];
  67.    
  68.     self.apiClient = [ONSAPIClient new];
  69.     self.receivedData = [NSMutableData new];
  70.     self.loginButton.layer.cornerRadius = 5.f;
  71.     self.exitButtonOutlet.layer.cornerRadius = 5.f;
  72.    
  73.     UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dissmissKeyboard)];
  74.     [self.view addGestureRecognizer:tap];
  75.    
  76.    
  77. }
  78.  
  79. - (void)viewWillAppear:(BOOL)animated
  80. {
  81.     [super viewWillAppear:animated];
  82.    
  83.     if ([ONSLoginViewController getToken])
  84.     {
  85.         self.navigationItem.title = @"Персональные данные";
  86.         self.selfCabinet.hidden = NO;
  87.         //        [[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:TRUE];
  88.         //        [[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:TRUE];
  89.        
  90.         [self loadSelfCabinet];
  91.        
  92.         if([self.switchButton isOn]){
  93.             switchIsOn = @"YES";
  94.             [[NSUserDefaults standardUserDefaults] setObject:switchIsOn forKey:@"switchIsOn"];
  95.         }
  96.         else{
  97.             switchIsOn = @"NO";
  98.             [[NSUserDefaults standardUserDefaults] setObject:switchIsOn forKey:@"switchIsOn"];
  99.         }
  100.         [self setSwitch];
  101.     }
  102.     else
  103.     {
  104.         self.selfCabinet.hidden = YES;
  105.         self.navigationItem.title = @"Вход пользователя";
  106.        
  107.         [[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
  108.         [[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:FALSE];
  109.     }
  110.    
  111.     self.keyboardVisible = NO;
  112.    
  113.    
  114. }
  115.  
  116.  
  117. - (void)postSendingMethodLogin
  118. {
  119.    
  120.     NSMutableData *data = [[NSMutableData alloc] init];
  121.     self.receivedData = data;
  122.    
  123.     _login = self.emailTextField.text;
  124.     _password = self.passwordTextField.text;
  125.    
  126.     if (_login && _password) {
  127.        
  128.         NSString * param = [NSString stringWithFormat:@"action=auth.php&login=%@&password=%@", _login, _password];
  129.        
  130.         NSData *postData = [param dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
  131.         NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
  132.        
  133.         NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init];
  134.        
  135.         [request setURL:[NSURL URLWithString:@"http://ons.kg/json/auth.php"]];
  136.         [request setHTTPMethod:@"POST"];
  137.         [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
  138.         [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
  139.         [request setHTTPBody:postData];
  140.        
  141.        
  142.         NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
  143.        
  144.         //start the connection
  145.         [connection start];
  146.        
  147.         if (connection)
  148.         {
  149.             NSLog(@"Connected! URA!!!");
  150.         }
  151.         else
  152.             NSLog(@"ERROR!!!");
  153.     }
  154.     else
  155.     {
  156.         UIAlertView *errorAlert = [[UIAlertView alloc]
  157.                                    initWithTitle:@"Ошибка"
  158.                                    message:@"Пожалуйста, заполните все поля и повторите попытку!"
  159.                                    delegate:nil
  160.                                    cancelButtonTitle:@"OK"
  161.                                    otherButtonTitles:nil];
  162.         [errorAlert show];
  163.        
  164.     }
  165.    
  166. }
  167.  
  168. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
  169. {
  170.     [_receivedData setLength:0];
  171.     NSHTTPURLResponse *resp = (NSHTTPURLResponse *) response;
  172.     NSLog(@"got response with status @push %ld",(long)[resp statusCode]);
  173. }
  174.  
  175. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  176. {
  177.     [_receivedData appendData:data];
  178.     NSLog(@"recieved data @push %@", _receivedData);
  179. }
  180.  
  181. - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
  182. {
  183.     UIAlertView *errorAlert = [[UIAlertView alloc]
  184.                                initWithTitle:@"Ошибка"
  185.                                message:@"Пожалуйста, проверьте соединение с Интернетом."
  186.                                delegate:nil
  187.                                cancelButtonTitle:@"OK"
  188.                                otherButtonTitles:nil];
  189.     NSLog(@"Error is %@", error);
  190.     [errorAlert show];
  191. }
  192.  
  193.  
  194. - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
  195.    
  196.     NSData *responseTextData = [[NSData alloc] init];
  197.    
  198.     responseTextData = _receivedData;
  199.    
  200.     NSDictionary *dicObject=[NSJSONSerialization
  201.                              JSONObjectWithData:responseTextData
  202.                              options:NSJSONReadingMutableLeaves
  203.                              error:nil];
  204.     NSLog(@"didfinishLoading%@",dicObject);
  205.    
  206.     if ([[dicObject objectForKey:@"success"] isEqualToString:@"true"])
  207.     {
  208.         NSString* auth_token = [dicObject objectForKey:@"auth_token"];
  209.        
  210.         [self saveToken:auth_token];
  211.        
  212.         [self loadDataUsers];
  213.        
  214.     }
  215.    
  216.     else
  217.     {
  218.         UIAlertView *Alert = [[UIAlertView alloc]
  219.                               initWithTitle:@"Ошибка"
  220.                               message:@"Вы неправильно ввели логин или пароль!"
  221.                               delegate:nil
  222.                               cancelButtonTitle:@"OK"
  223.                               otherButtonTitles:nil];
  224.        
  225.         [Alert show];
  226.     }
  227.    
  228. }
  229.  
  230. - (void)saveToken:(NSString*)token
  231. {
  232.     [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"token"];
  233.     [[NSUserDefaults standardUserDefaults] synchronize];
  234.    
  235. }
  236.  
  237. + (NSString *)getToken
  238. {
  239.     NSLog(@"TOKEN IS: %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"token"]);
  240.     return [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
  241.    
  242. }
  243.  
  244. - (void)delTokenWithUser
  245. {
  246.     NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
  247.     NSDictionary * dict = [defs dictionaryRepresentation];
  248.     for (id key in dict)
  249.     {
  250.         if ([key isEqualToString:@"token"]
  251.             || [key isEqualToString:@"user_name"]
  252.             || [key isEqualToString:@"user_last_name"]
  253.             || [key isEqualToString:@"user_first_name"]
  254.             || [key isEqualToString:@"user_email"]
  255.             || [key isEqualToString:@"user_OS"]
  256.             || [key isEqualToString:@"os_id"]
  257.             || [key isEqualToString:@"user_info"]
  258.             || [key isEqualToString:@"user_avatar"]
  259.             || [key isEqualToString:@"user_id"])
  260.         {
  261.             [defs removeObjectForKey:key];
  262.         }
  263.        
  264.        
  265.     }
  266.     [defs synchronize];
  267.    
  268. }
  269.  
  270. - (void) loadDataUsers
  271. {
  272.     [self.apiClient browseUsersWithCompletion:^(NSArray<ONSUser*> *users)
  273.      {
  274.          dispatch_async(dispatch_get_main_queue(), ^
  275.                         {
  276.                             for (int i = 0; i < users.count; i++)
  277.                             {
  278.                                 if ([_login isEqualToString:[users objectAtIndex:i].userEmail])
  279.                                 {
  280.                                     self.user = [ONSUser new];
  281.                                     self.user = [users objectAtIndex:i];
  282.                                    
  283.                                 }
  284.                                
  285.                             }
  286.                             [self getUser];
  287.                            
  288.                         });
  289.          
  290.          
  291.      }
  292.                                         error:^(NSError *error)
  293.      {
  294.          NSLog(@"Error is: %@", error);
  295.      }];
  296.    
  297. }
  298.  
  299.  
  300. -(void) getUser
  301. {
  302.     if (self.user)
  303.     {
  304.        
  305.         isExited = NO;
  306.         [UIView transitionWithView:_selfCabinet
  307.                           duration:0.4
  308.                            options:UIViewAnimationOptionTransitionFlipFromBottom
  309.                         animations:^{
  310.                             _selfCabinet.hidden = NO;
  311.                         }
  312.                         completion:NULL];
  313.        
  314.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userName forKey:@"user_name"];
  315.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userLName forKey:@"user_last_name"];
  316.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userFName forKey:@"user_first_name"];
  317.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userEmail forKey:@"user_email"];
  318.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userOs forKey:@"user_OS"];
  319.         [[NSUserDefaults standardUserDefaults] setObject:self.user.os_id forKey:@"os_id"];
  320.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userId forKey:@"user_id"];
  321.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userPhoto forKey:@"user_avatar"];
  322.         [[NSUserDefaults standardUserDefaults] setObject:self.user.userProfessiya forKey:@"user_info"];
  323.         [[NSUserDefaults standardUserDefaults] synchronize];
  324.        
  325.         topicID = [[NSUserDefaults standardUserDefaults] objectForKey:@"os_id"];
  326.        
  327.         [self loadSelfCabinet];
  328.         self.navigationItem.title = @"Персональные данные";
  329.        
  330.     }
  331.    
  332. }
  333. - (IBAction)LoginButton:(id)sender
  334. {
  335.    
  336.     [self hideKeyboard:sender];
  337.     [self postSendingMethodLogin];
  338.    
  339. }
  340.  
  341.  
  342. //- (BOOL)textFieldShouldReturn:(UITextField *)textField
  343. //{
  344. //    [textField resignFirstResponder];
  345. //    return YES;
  346. //}
  347.  
  348.  
  349. - (IBAction)hideKeyboard:(id)sender
  350. {
  351.     [self dissmissKeyboard];
  352. }
  353.  
  354. - (BOOL)prefersStatusBarHidden
  355. {
  356.     return NO;
  357. }
  358.  
  359.  
  360. - (void) loadSelfCabinet
  361. {
  362.    
  363.     self.familya.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_first_name"]; //self.user.userFName;
  364.     self.name.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_name"];
  365.     self.otchestvo.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_last_name"];
  366.     self.userInfo.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_info"];
  367.     self.os.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_OS"];
  368.     self.mail.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_email"];
  369.    
  370.     NSURL* imageURL =[NSURL URLWithString:[[NSUserDefaults standardUserDefaults] objectForKey:@"user_avatar"]];
  371.    
  372.     [self.avatar sd_setImageWithURL:imageURL];
  373.    
  374.     [[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:TRUE];
  375.     [[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:TRUE];
  376.    
  377.     NSString *token = [[FIRInstanceID instanceID] token];
  378.     NSLog(@"InstanceID token: %@", token);
  379.     NSString* topic = @"/topics";
  380.     NSString* topicFullPath = [topic stringByAppendingPathComponent:topicID];
  381.     [[FIRMessaging messaging] subscribeToTopic:topicFullPath];
  382.     NSLog(@"Subscribed to news topic");
  383.    
  384. }
  385.  
  386. - (IBAction)exitButton:(UIButton *)sender {
  387.    
  388.     NSString* topic = @"/topics";
  389.     NSString* topicFullPath = [topic stringByAppendingPathComponent:topicID];
  390.     [[FIRMessaging messaging] unsubscribeFromTopic:topicFullPath];
  391.    
  392.     self.user = nil;
  393.     isExited = YES;
  394.    
  395.     [UIView transitionWithView:_selfCabinet
  396.                       duration:0.5
  397.                        options:UIViewAnimationOptionTransitionFlipFromTop
  398.                     animations:^{
  399.                         _selfCabinet.hidden = YES;
  400.                     }
  401.                     completion:NULL];
  402.     self.navigationItem.title = @"Вход пользователя";
  403.    
  404.    
  405.     [self delTokenWithUser];
  406.     self.familya.text = @"";
  407.     self.name.text = @"";
  408.     self.otchestvo.text = @"";
  409.     self.userInfo.text = @"";
  410.     self.os.text = @"";
  411.     self.mail.text = @"";
  412.     self.avatar.image = nil;
  413.    
  414.     self.passwordTextField.text = @"";
  415.    
  416.    
  417.    
  418.     [[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
  419.     [[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:FALSE];
  420.    
  421.    
  422. }
  423.  
  424.  
  425.  
  426. - (void) viewWillDisappear:(BOOL)animated{
  427.     [super viewWillDisappear:animated];
  428.    
  429. }
  430.  
  431.  
  432. -(BOOL)textFieldShouldReturn:(UITextField *)textField {
  433.     if (textField == _emailTextField) {
  434.         [textField resignFirstResponder];
  435.         [_passwordTextField becomeFirstResponder];
  436.     }
  437.     else if (textField == _passwordTextField)
  438.     {
  439.         [_passwordTextField resignFirstResponder];
  440.         [_loginButton becomeFirstResponder];
  441.         [self postSendingMethodLogin];
  442.        
  443.     }
  444.     return YES;
  445. }
  446.  
  447. -(void)textFieldDidBeginEditing:(UITextField*)textField
  448. {
  449.     CGPoint scrollPoint = CGPointMake(0, 50);
  450.     [loginScrollView setContentOffset:scrollPoint animated:YES];
  451. }
  452.  
  453. -(void)textFieldDidEndingEditing;
  454. {
  455.     [loginScrollView setContentOffset:CGPointMake(0, -60) animated:YES];
  456. }
  457.  
  458. -(void)dissmissKeyboard
  459. {
  460.    
  461.     [_emailTextField resignFirstResponder];
  462.     [_passwordTextField resignFirstResponder];
  463.     [self textFieldDidEndingEditing];
  464. }
  465.  
  466. - (void) setSwitch
  467. {
  468.     NSString* switchIsOnOff;
  469.     switchIsOnOff = @"YES"; //[[NSUserDefaults standardUserDefaults] objectForKey:@"switchIsOn"];
  470.    
  471.     if([switchIsOnOff isEqualToString:@"YES"])
  472.     {
  473.         // [START subscribe_topic];
  474.         // [END subscribe_topics
  475.        
  476.         //        if ([[UIApplication sharedApplication]respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
  477.         //        {
  478.         //            // For iOS 8 and above
  479.         //            [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
  480.         //
  481.         //            [[UIApplication sharedApplication] registerForRemoteNotifications];
  482.         //        }
  483.         //        else
  484.         //        {
  485.         //            // For iOS < 8
  486.         //            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
  487.         //             (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
  488.         //        }
  489.     }
  490.     // if off
  491.     else if([switchIsOnOff isEqualToString:@"NO"])
  492.        
  493.     {
  494.         [[FIRMessaging messaging] unsubscribeFromTopic:topicID];
  495.         //[[UIApplication sharedApplication] unregisterForRemoteNotifications];
  496.     }
  497.    
  498.    
  499. }
  500.  
  501. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement