Advertisement
axelso

ExpertSettingProfileViewController.m 8 Nov 17 10.50

Nov 7th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  ExpertSettingProfileViewController.m
  3. //  Moselo
  4. //
  5. //  Created by Dominic Vedericho on 5/4/17.
  6. //  Copyright © 2017 Moselo. All rights reserved.
  7. //
  8.  
  9. #import "ExpertSettingProfileViewController.h"
  10. #import "ExpertSettingProfileView.h"
  11. #import "SetProfilePictureViewController.h"
  12. #import "WebViewViewController.h"
  13. #import "CustomNavigationController.h"
  14. #import "ImageSelectCoverViewController.h"
  15. #import "ImagePreviewViewController.h"
  16. #import "NotificationManager.h"
  17. #import "PickerViewController.h"
  18. #import "ChooseCityViewController.h"
  19. #import "Base64.h"
  20. #import "PopupInfoExpertChangeNameViewController.h"
  21. #import "HelpViewController.h"
  22. #import "ImageCoverPreviewViewController.h"
  23.  
  24. @interface ExpertSettingProfileViewController () <UIGestureRecognizerDelegate, MoseloTextFieldDelegate, MoseloCheckerTextFieldDelegate, UIScrollViewDelegate, SetProfilePictureViewControllerDelegate, UITextViewDelegate, MoseloPickerTextFieldDelegate, ChooseCityViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, WebViewViewControllerDelegate, ImageSelectCoverViewControllerDelegate, PopupInfoExpertChangeNameViewControllerDelegate, ImageCoverPreviewViewControllerDelegate>
  25.  
  26. @property (strong, nonatomic) ExpertSettingProfileView *expertSettingProfileView;
  27. @property (strong, nonatomic) PopupInfoExpertChangeNameViewController *popupInfoExpertChangeNameViewController;
  28. @property (strong, nonatomic) PickerViewController *pickerViewController;
  29.  
  30. @property (strong, nonatomic) PhotoPreviewViewController *photoPreviewViewController;
  31. @property (strong, nonatomic) ImageCoverPreviewViewController *imageCoverPreviewViewController;
  32.  
  33. @property (nonatomic) NSInteger buttonTag;
  34. @property (strong, nonatomic) NSMutableArray *cityListDataArray;
  35.  
  36. @property (strong, nonatomic) NSString *existingSelectedCityID;
  37. @property (strong, nonatomic) NSString *existingSelectedCityName;
  38. @property (strong, nonatomic) NSString *existingSelectedRegionID;
  39. @property (strong, nonatomic) NSString *existingSelectedRegionName;
  40. @property (strong, nonatomic) NSString *existingSelectedCountryID;
  41. @property (strong, nonatomic) NSString *existingSelectedCountryName;
  42.  
  43. @property (strong, nonatomic) NSString *selectedCityID;
  44. @property (strong, nonatomic) NSString *selectedCityName;
  45. @property (strong, nonatomic) NSString *selectedRegionID;
  46. @property (strong, nonatomic) NSString *selectedRegionName;
  47. @property (strong, nonatomic) NSString *selectedCountryID;
  48. @property (strong, nonatomic) NSString *selectedCountryName;
  49.  
  50. @property (strong, nonatomic) NSString *expertID;
  51. @property (strong, nonatomic) NSMutableArray *imageDataArray;
  52. @property (nonatomic) NSInteger activeIndex;
  53.  
  54. @property (strong, nonatomic) UIActivityIndicatorView *activityIndicator;
  55. @property (strong, nonatomic) UIButton *saveButton;
  56. @property (strong, nonatomic) NSString *expertDescription;
  57. @property (strong, nonatomic) NSMutableString *appendedCategoryString;
  58. @property (strong, nonatomic) NSMutableString *appendedSubcategoryString;
  59. @property (strong, nonatomic) NSString *facebookUsername;
  60. @property (strong, nonatomic) NSString *twitterUsername;
  61. @property (strong, nonatomic) NSString *instagramUsername;
  62.  
  63. @property (strong, nonatomic) NSString *youtubeUsername;
  64. @property (strong, nonatomic) NSString *profileCoverURLString;
  65. @property (strong, nonatomic) NSString *profilePictureURLString;
  66. @property (strong, nonatomic) NSString *expertExistingName;
  67. @property (strong, nonatomic) NSString *expertExistingUsername;
  68. @property (strong, nonatomic) NSString *expertExistingEmail;
  69. @property (strong, nonatomic) NSString *expertExistingPhoneNumber;
  70. @property (strong, nonatomic) NSString *expertExistingCity;
  71. @property (strong, nonatomic) NSString *expertExistingDescription;
  72. @property (strong, nonatomic) NSString *expertExistingFacebookUsername;
  73. @property (strong, nonatomic) NSString *expertExistingTwitterUsername;
  74. @property (strong, nonatomic) NSString *expertExistingInstagramUsername;
  75. @property (strong, nonatomic) NSString *expertExistingYoutubeUsername;
  76.  
  77. @property (strong, nonatomic) NSString *expertCategory;
  78. @property (strong, nonatomic) NSString *expertSubcategory;
  79.  
  80. @property (strong, nonatomic) NSString *editedExpertName;
  81. @property (strong, nonatomic) NSString *editedExpertUsername;
  82. @property (strong, nonatomic) NSString *editedExpertCityID;
  83. @property (strong, nonatomic) NSString *editedExpertCityName;
  84. @property (strong, nonatomic) NSString *editedExpertRegionID;
  85. @property (strong, nonatomic) NSString *editedExpertRegionName;
  86. @property (strong, nonatomic) NSString *editedExpertCountryID;
  87. @property (strong, nonatomic) NSString *editedExpertCountryName;
  88. @property (strong, nonatomic) NSString *editedExpertProfileDescription;
  89. @property (strong, nonatomic) NSString *editedFacebookUsername;
  90. @property (strong, nonatomic) NSString *editedTwitterUsername;
  91. @property (strong, nonatomic) NSString *editedInstagramUsername;
  92. @property (strong, nonatomic) NSString *editedYoutubeUsername;
  93. @property (strong, nonatomic) NSIndexPath *citySelectedIndexPath;
  94.  
  95. @property (nonatomic) BOOL isDoneLoadData;
  96. @property (nonatomic) BOOL isLoading;
  97. @property (nonatomic) BOOL isLoadingCover;
  98. @property (nonatomic) BOOL isFBShimmeringCover;
  99.  
  100. @property (nonatomic) NSInteger socialMediaCellTag;
  101.  
  102. @property (nonatomic) BOOL isUsernameTaken;
  103. @property (nonatomic) BOOL isUsernameTooShort;
  104.  
  105. - (void)backButtonDidTapped;
  106. - (void)editCoverButtonDidTapped;
  107. - (void)editProfilePictureButtonDidTapped;
  108. - (void)closeEditCoverButtonDidTapped;
  109. - (void)infoButtonDidTapped;
  110. - (void)saveButtonDidTapped;
  111. - (UIImage *)normalizedImage:(UIImage *)image;
  112.  
  113. - (void)setIsLoading:(BOOL)isLoading;
  114. - (void)setIsLoadingCover:(BOOL)isLoadingCover;
  115. - (void)setIsFBShimmeringCover:(BOOL)isFBShimmeringCover;
  116.  
  117. - (void)checkUsername:(NSString *)username;
  118.  
  119. - (void)setIsPlaceholderHidden:(BOOL)isHidden;
  120.  
  121. @end
  122.  
  123. @implementation ExpertSettingProfileViewController
  124.  
  125. #pragma mark - Lifecycle
  126. - (void)loadView {
  127.     [super loadView];
  128.    
  129.     _expertSettingProfileView = [[ExpertSettingProfileView alloc] initWithFrame:[BaseView frameWithNavigationBar]];
  130.     [self.view addSubview:self.expertSettingProfileView];
  131. }
  132.  
  133. - (void)viewDidLoad {
  134.     [super viewDidLoad];
  135.     // Do any additional setup after loading the view.
  136.     _isDoneLoadData = NO;
  137.     _expertID = @"";
  138.    
  139.     self.navigationController.interactivePopGestureRecognizer.delegate = self;
  140.     self.navigationController.interactivePopGestureRecognizer.enabled = YES;
  141.    
  142.     self.title = NSLocalizedString(@"Edit Profile", @"");
  143.    
  144.     if(IS_IPHONE_4_7_INCH_AND_ABOVE) {
  145.         [self.navigationController.navigationBar setTitleTextAttributes:
  146.          @{NSForegroundColorAttributeName:[Util getColor:@"444444"],
  147.            NSFontAttributeName:[UIFont fontWithName:FONT_NAME_BOLD size:20.0f]}];
  148.     }
  149.     else {
  150.         [self.navigationController.navigationBar setTitleTextAttributes:
  151.          @{NSForegroundColorAttributeName:[Util getColor:@"444444"],
  152.            NSFontAttributeName:[UIFont fontWithName:FONT_NAME_BOLD size:17.0f]}];
  153.     }
  154.    
  155.     UIImage *buttonImage = [UIImage imageNamed:@"backOn"];
  156.     UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, buttonImage.size.width, buttonImage.size.height)];
  157.     [button setImage:buttonImage forState:UIControlStateNormal];
  158.     [button addTarget:self action:@selector(backButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  159.     UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
  160.     [self.navigationItem setLeftBarButtonItem:barButtonItem];
  161.    
  162.     UIView *rightBarItemView = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 50.0f, 44.0f)];
  163.    
  164.     _saveButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 50.0f, 44.0f)];
  165.     [self.saveButton setTitle:NSLocalizedString(@"Save", @"") forState:UIControlStateNormal];
  166.     [self.saveButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0f, 0.0f, 5.0f, 0.0f)];
  167.     [self.saveButton.titleLabel setFont:[UIFont fontWithName:FONT_LATO_BOLD size:16.0f]];
  168.     [self.saveButton setTitleColor:[Util getColor:@"2ECCAD"] forState:UIControlStateNormal];
  169.     [self.saveButton addTarget:self action:@selector(saveButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  170.     self.saveButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
  171.     self.saveButton.alpha = 0.0f;
  172.     [rightBarItemView addSubview:self.saveButton];
  173.    
  174.     _activityIndicator = [[UIActivityIndicatorView alloc] init];
  175.     self.activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
  176.     self.activityIndicator.center = self.saveButton.center;
  177.     [self.activityIndicator startAnimating];
  178.     self.activityIndicator.alpha = 0.0f;
  179.     [rightBarItemView addSubview:self.activityIndicator];
  180.    
  181.     UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBarItemView];
  182.     [self.navigationItem setRightBarButtonItem:rightBarButtonItem];
  183.    
  184.     //set text color as disabled
  185.     self.expertSettingProfileView.emailTextField.textField.textColor = [[Util getColor:@"333333"] colorWithAlphaComponent:0.6f];
  186.     self.expertSettingProfileView.phoneNumberTextField.textField.textColor = [[Util getColor:@"333333"] colorWithAlphaComponent:0.6f];
  187.    
  188.     //for edit cover
  189.     [self.expertSettingProfileView.editCoverButton addTarget:self action:@selector(editCoverButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  190.    
  191.     [self.expertSettingProfileView.cameraButton addTarget:self action:@selector(cameraButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  192.     [self.expertSettingProfileView.galleryButton addTarget:self action:@selector(galleryButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  193.     [self.expertSettingProfileView.instagramButton addTarget:self action:@selector(instagramButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  194.    
  195.     //for cancel edit cover
  196.     //[self.expertSettingProfileView.cancelEditCoverButton addTarget:self action:@selector(cancelEditCoverButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  197.    
  198.     [self.expertSettingProfileView.closeEditCoverButton addTarget:self action:@selector(closeEditCoverButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  199.    
  200.     //for edit profile picture
  201.     [self.expertSettingProfileView.editProfilePictureButton addTarget:self action:@selector(editProfilePictureButtonDidTapped) forControlEvents:UIControlEventTouchDown];
  202.    
  203.     //for popupInfoExpertChangeNameViewController
  204.     [self.expertSettingProfileView.iconInfoButton addTarget:self action:@selector(infoButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  205.    
  206.     //register for delegate popUpInfoChangeNameViewController
  207.     _popupInfoExpertChangeNameViewController = [[PopupInfoExpertChangeNameViewController alloc] init];
  208.     self.popupInfoExpertChangeNameViewController.view.frame =CGRectMake(0.0f, 0.0f, CGRectGetWidth([UIScreen mainScreen].bounds), CGRectGetHeight([UIScreen mainScreen].bounds));
  209.     self.popupInfoExpertChangeNameViewController.delegate = self;
  210.     self.popupInfoExpertChangeNameViewController.view.alpha = 0.0f;
  211.     self.popupInfoExpertChangeNameViewController.popupInfoExpertChangeNameView.backgroundView.alpha = 0.6f;
  212.     [self.navigationController.view addSubview:self.popupInfoExpertChangeNameViewController.view];
  213.     [self.navigationController.view bringSubviewToFront:self.popupInfoExpertChangeNameViewController.view];
  214.    
  215.     //for pick city
  216.     [self.expertSettingProfileView.cityPicker.moseloPickerButton addTarget:self action:@selector(cityListButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
  217.    
  218.     //register UITextFieldDelegate
  219.     self.expertSettingProfileView.nameTextField.delegate = self;
  220.     self.expertSettingProfileView.usernameTextField.delegate = self;
  221.     self.expertSettingProfileView.cityTextField.delegate = self;
  222.     self.expertSettingProfileView.cityPicker.delegate = self; //PickerTextFieldDelegate
  223.     self.expertSettingProfileView.textView.delegate = self; //UITextViewDelegate
  224.     self.expertSettingProfileView.socialMediaFacebookTextField.delegate = self;
  225.     self.expertSettingProfileView.socialMediaTwitterTextField.delegate = self;
  226.     self.expertSettingProfileView.socialMediaInstagramTextField.delegate = self;
  227.     self.expertSettingProfileView.socialMediaYoutubeTextField.delegate = self;
  228.     self.expertSettingProfileView.scrollView.delegate = self;
  229.    
  230. //    AS TEMP
  231.     _photoPreviewViewController = [[PhotoPreviewViewController alloc] init];
  232.     if(self.imageCoverPreviewViewControllerType == ImageCoverPreviewViewControllerTypeImageURL) {
  233.         [self.photoPreviewViewController setPhotoPreviewViewControllerType:PhotoPreviewViewControllerTypeImageURL];
  234.     }
  235.     else if(self.imageCoverPreviewViewControllerType == ImageCoverPreviewViewControllerTypeImageData) {
  236.         [self.photoPreviewViewController setPhotoPreviewViewControllerType:PhotoPreviewViewControllerTypeImageData];
  237.     }
  238.    
  239.     self.photoPreviewViewController.delegate = self;
  240.     self.photoPreviewViewController.imageDataArray = self.dataArray;
  241.     self.photoPreviewViewController.view.backgroundColor = [UIColor clearColor];
  242.     self.photoPreviewViewController.view.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth([UIScreen mainScreen].bounds), CGRectGetHeight([UIScreen mainScreen].bounds ) - 64.0f - 48.0f);
  243.     [self.imageCoverPreviewView addSubview:self.photoPreviewViewController.view];
  244.     [self addChildViewController:self.photoPreviewViewController];
  245.     [self.photoPreviewViewController didMoveToParentViewController:self];
  246. //    END AS TEMP
  247.    
  248.    
  249.     NSDictionary *activeUser = [[NSUserDefaults standardUserDefaults] secretObjectForKey:PREFS_ACTIVE_USER];
  250.     //NSString *expertID = [activeUser valueForKeyPath:@"userID"];
  251.     self.expertID = [activeUser valueForKeyPath:@"userID"];
  252.  
  253.     [self setIsFBShimmeringCover:YES];
  254.    
  255.     [DataManager callAPIGetExpertDetailProfileWithExpertID:self.expertID success:^(UserModel *expertDetailData) {
  256.         [self setIsFBShimmeringCover:NO];
  257.    
  258.         AvatarURLModel *coverURL = expertDetailData.coverURL;
  259.         NSString *coverSmall = coverURL.small;
  260.         NSString *coverMedium = coverURL.medium;
  261.         NSString *coverLarge = coverURL.large;
  262.        
  263.         AvatarURLModel *avatarURL = expertDetailData.avatarURL;
  264.         NSString *avatarSmall = avatarURL.small;
  265.         NSString *avatarMedium = avatarURL.medium;
  266.         NSString *avatarLarge = avatarURL.large;
  267.        
  268.         self.expertExistingName = expertDetailData.name;
  269.         self.expertExistingUsername = expertDetailData.username;
  270.         self.expertExistingEmail = expertDetailData.email;
  271.         self.expertExistingPhoneNumber = expertDetailData.phoneNumber;
  272.        
  273.         DomicileModel *domicile = expertDetailData.domicile;
  274.         PlaceModel *city = domicile.city;
  275.         PlaceModel *region = domicile.region;
  276.         PlaceModel *country = domicile.country;
  277.  
  278.         NSString *cityID = city.placeID;
  279.         NSString *cityName = city.placeName;
  280.         NSString *regionID = region.placeID;
  281.         NSString *regionName = region.placeName;
  282.         NSString *countryID = country.placeID;
  283.         NSString *countryName = country.placeName;
  284.        
  285.         //exisiting cityID & cityName
  286.         self.existingSelectedCityID = cityID;
  287.         self.existingSelectedCityName = cityName;
  288.         self.existingSelectedRegionID = regionID;
  289.         self.existingSelectedRegionName = regionName;
  290.         self.existingSelectedCountryID = countryID;
  291.         self.existingSelectedCountryName = countryName;
  292.        
  293.         self.selectedCityID = cityID;
  294.        
  295.         NSString *expertProfileDescription = expertDetailData.profileDescription;
  296.         self.expertExistingDescription = expertDetailData.profileDescription;
  297.    
  298.         NSArray *categoriesArray = expertDetailData.categoryArray;
  299.         _appendedCategoryString = nil;
  300.         _appendedCategoryString = [NSMutableString string];
  301.         for(NSInteger count = 0; count < [categoriesArray count]; count++) {
  302.             CategoryModel *category = [categoriesArray objectAtIndex:count];
  303.             NSString *categoryName = category.categoryName;
  304.             [self.appendedCategoryString appendString:categoryName];
  305.            
  306.             if(count != [categoriesArray count] - 1) {
  307.                 [self.appendedCategoryString appendString:@", "];
  308.             }
  309.         }
  310.        
  311.         NSArray *subcategoriesArray = expertDetailData.subcategories;
  312.         _appendedSubcategoryString = nil;
  313.         _appendedSubcategoryString = [NSMutableString string];
  314.         for(NSInteger count = 0; count < [subcategoriesArray count]; count++) {
  315.             SubcategoryModel *subcategory = [subcategoriesArray objectAtIndex:count];
  316.             NSString *subcategoryName = subcategory.subcategoryName;
  317.             [self.appendedSubcategoryString appendString:subcategoryName];
  318.            
  319.             if(count != [subcategoriesArray count] - 1) {
  320.                 [self.appendedSubcategoryString appendString:@", "];
  321.             }
  322.         }
  323.        
  324.         SocialMediaModel *socialMedia = expertDetailData.socialMedia;
  325.         self.facebookUsername = socialMedia.facebook;
  326.         self.twitterUsername = socialMedia.twitter;
  327.         self.instagramUsername = socialMedia.instagram;
  328.         self.youtubeUsername = socialMedia.youtube;
  329.        
  330.         self.expertExistingFacebookUsername = self.facebookUsername;
  331.         self.expertExistingTwitterUsername = self.twitterUsername;
  332.         self.expertExistingInstagramUsername = self.instagramUsername;
  333.         self.expertExistingYoutubeUsername = self.youtubeUsername;
  334.        
  335.         self.isDoneLoadData = YES;
  336.  
  337.         //code set default cover, if there's no coverURL
  338.         [self.expertSettingProfileView setExpertProfileCoverImageWithData:expertDetailData];
  339.         self.profileCoverURLString = coverLarge;
  340.  
  341.         [self.expertSettingProfileView.profilePictureImageView setImageWithURLString:avatarLarge];
  342.         self.profilePictureURLString = avatarLarge;
  343.        
  344.         self.expertSettingProfileView.nameTextField.textField.text = self.expertExistingName;
  345.         [self.expertSettingProfileView.nameTextField isTextFieldContainData:YES];
  346.        
  347.         self.expertSettingProfileView.usernameTextField.textField.text = self.expertExistingUsername;
  348.         [self.expertSettingProfileView.usernameTextField isTextFieldContainData:YES];
  349.        
  350.         self.expertSettingProfileView.emailTextField.textField.text = self.expertExistingEmail;
  351.         [self.expertSettingProfileView.emailTextField isTextFieldContainData:YES];
  352.        
  353.         NSString *formattedPhoneNumber = [NSString stringWithFormat:@"+%@", self.expertExistingPhoneNumber];
  354.         self.expertSettingProfileView.phoneNumberTextField.textField.text = formattedPhoneNumber;
  355.         [self.expertSettingProfileView.phoneNumberTextField isTextFieldContainData:YES];
  356.        
  357.         self.expertSettingProfileView.expertProfileCategoryTextField.textField.text = self.appendedCategoryString;
  358.         [self.expertSettingProfileView.expertProfileCategoryTextField isTextFieldContainData:YES];
  359.        
  360.         self.expertSettingProfileView.expertProfileSubcategoryTextField.textField.text = self.appendedSubcategoryString;
  361.         [self.expertSettingProfileView.expertProfileSubcategoryTextField isTextFieldContainData:YES];
  362.        
  363.         if([expertDetailData.domicile.city.placeName isEqualToString:@""] || expertDetailData.domicile.city.placeName == nil) {
  364.             [self.expertSettingProfileView.cityPicker isTextFieldContainData:NO];
  365.         }
  366.         else{
  367.            
  368.             [self.expertSettingProfileView.cityPicker setInformationDataWithString:expertDetailData.domicile.city.placeName];
  369.             [self.expertSettingProfileView.cityPicker isTextFieldContainData:YES];
  370.         }
  371.        
  372.         //PROFILE DESCRIPTION
  373.         if([expertDetailData.profileDescription isEqualToString:@""]) {
  374.             self.expertSettingProfileView.descriptionTitleLabel.textColor = [Util getColor:@"CCCCCC"];
  375.             [self setIsPlaceholderHidden:NO];
  376.         }
  377.         else {
  378.             self.expertSettingProfileView.textView.text = expertProfileDescription;
  379.             [self setIsPlaceholderHidden:YES];
  380.         }
  381.        
  382.         //SOCIAL MEDIA
  383.         if(![expertDetailData.socialMedia.facebook isEqualToString:@""] || expertDetailData.socialMedia.facebook == nil)
  384.         {
  385.             self.expertSettingProfileView.socialMediaFacebookTextField.textField.text = self.facebookUsername;
  386.             [self.expertSettingProfileView.socialMediaFacebookTextField isTextFieldContainData:YES];
  387.         }
  388.         else {
  389.             self.expertSettingProfileView.socialMediaFacebookTextField.textField.text = @"";
  390.             [self.expertSettingProfileView.socialMediaFacebookTextField isTextFieldContainData:NO];
  391.         }
  392.        
  393.         if(![expertDetailData.socialMedia.twitter isEqualToString:@""] || expertDetailData.socialMedia.twitter == nil)
  394.         {
  395.             self.expertSettingProfileView.socialMediaTwitterTextField.textField.text = self.twitterUsername;
  396.             [self.expertSettingProfileView.socialMediaTwitterTextField isTextFieldContainData:YES];
  397.         }
  398.         else {
  399.             self.expertSettingProfileView.socialMediaTwitterTextField.textField.text = @"";
  400.             [self.expertSettingProfileView.socialMediaTwitterTextField isTextFieldContainData:NO];
  401.         }
  402.        
  403.         if(![expertDetailData.socialMedia.instagram isEqualToString:@""] || expertDetailData.socialMedia.instagram == nil)
  404.         {
  405.             self.expertSettingProfileView.socialMediaInstagramTextField.textField.text = self.instagramUsername;
  406.             [self.expertSettingProfileView.socialMediaInstagramTextField isTextFieldContainData:YES];
  407.         }
  408.         else {
  409.             self.expertSettingProfileView.socialMediaInstagramTextField.textField.text = @"";
  410.             [self.expertSettingProfileView.socialMediaInstagramTextField isTextFieldContainData:NO];
  411.         }
  412.        
  413.         if(![expertDetailData.socialMedia.youtube isEqualToString:@""] || expertDetailData.socialMedia.youtube == nil)
  414.         {
  415.             self.expertSettingProfileView.socialMediaYoutubeTextField.textField.text = self.youtubeUsername;
  416.             [self.expertSettingProfileView.socialMediaYoutubeTextField isTextFieldContainData:YES];
  417.         }
  418.         else {
  419.             self.expertSettingProfileView.socialMediaYoutubeTextField.textField.text = @"";
  420.             [self.expertSettingProfileView.socialMediaYoutubeTextField isTextFieldContainData:NO];
  421.         }
  422.        
  423.     } failure:^(NSError *error) {
  424.         [self setIsFBShimmeringCover:NO];
  425.        
  426.         if(error.code != 999) {
  427.             UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:error.domain preferredStyle:UIAlertControllerStyleAlert];
  428.            
  429.             UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  430.                
  431.             }];
  432.            
  433.             [alertController addAction:okAction];
  434.            
  435.             [self presentViewController:alertController animated:YES completion:nil];
  436.         }
  437.     }];
  438.    
  439.     _isUsernameTaken = NO;
  440.     _isUsernameTooShort = NO;
  441.    
  442.     //initiate empty string
  443.     _selectedCityID = @"";
  444.     _selectedCityName = @"";
  445.     _selectedRegionID = @"";
  446.     _selectedRegionName = @"";
  447.     _selectedCountryID = @"";
  448.     _selectedCountryName = @"";
  449.     _citySelectedIndexPath = [NSIndexPath new];
  450. }
  451.  
  452. - (void)viewWillAppear:(BOOL)animated {
  453.     [super viewWillAppear:animated];
  454.    
  455.     NSDictionary *activeUser = [[NSUserDefaults standardUserDefaults] secretObjectForKey:PREFS_ACTIVE_USER];
  456.     NSString *userRole = [activeUser valueForKeyPath:@"userRole.roleName"];
  457.    
  458.     if([userRole isEqualToString:@"expert"]) {
  459.         //if Expert Disabled edit Name
  460.         self.expertSettingProfileView.nameTextField.textField.userInteractionEnabled = NO;
  461.         self.expertSettingProfileView.nameTextField.textField.textColor = [[Util getColor:@"333333"] colorWithAlphaComponent:0.6f];
  462.        
  463.         //if Expert Disabled edit Username
  464.         self.expertSettingProfileView.usernameTextField.textField.userInteractionEnabled = NO;
  465.         self.expertSettingProfileView.usernameTextField.textField.textColor = [[Util getColor:@"333333"] colorWithAlphaComponent:0.6f];
  466.     }
  467. }
  468.  
  469. - (void)didReceiveMemoryWarning {
  470.     [super didReceiveMemoryWarning];
  471.     // Dispose of any resources that can be recreated.
  472. }
  473.  
  474. #pragma mark - Delegate
  475. #pragma mark UIScrollView
  476. - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
  477.  
  478. }
  479.  
  480. - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
  481.     [UIView animateWithDuration:0.2f animations:^{
  482.         self.expertSettingProfileView.logoFacebookImageView.image = [UIImage imageNamed:@"facebookIconOff"];
  483.         self.expertSettingProfileView.logoTwitterImageView.image = [UIImage imageNamed:@"twitterIconOff"];
  484.         self.expertSettingProfileView.logoInstagramImageView.image = [UIImage imageNamed:@"instagramIconOff"];
  485.         self.expertSettingProfileView.logoYoutubeImageView.image = [UIImage imageNamed:@"Yt"];
  486.     }];
  487.    
  488.     [self.expertSettingProfileView.nameTextField.textField resignFirstResponder];
  489.     [self.expertSettingProfileView.usernameTextField.textField resignFirstResponder];
  490.     [self.expertSettingProfileView.cityTextField.textField resignFirstResponder];
  491.     [self.expertSettingProfileView.textView resignFirstResponder];
  492.     [self.expertSettingProfileView.socialMediaFacebookTextField.textField resignFirstResponder];
  493.     [self.expertSettingProfileView.socialMediaTwitterTextField.textField resignFirstResponder];
  494.     [self.expertSettingProfileView.socialMediaInstagramTextField.textField resignFirstResponder];
  495.     [self.expertSettingProfileView.socialMediaYoutubeTextField.textField resignFirstResponder];
  496. }
  497.  
  498. #pragma mark MoseloTextField
  499. - (void)moseloTextFieldDelegateTextFieldShouldReturnWithTextField:(UITextField *)textField {
  500.    
  501.    [UIView animateWithDuration:0.2f animations:^{
  502.        self.expertSettingProfileView.logoFacebookImageView.image = [UIImage imageNamed:@"facebookIconOff"];
  503.        self.expertSettingProfileView.logoTwitterImageView.image = [UIImage imageNamed:@"twitterIconOff"];
  504.        self.expertSettingProfileView.logoInstagramImageView.image = [UIImage imageNamed:@"instagramIconOff"];
  505.        self.expertSettingProfileView.logoYoutubeImageView.image = [UIImage imageNamed:@"Yt"];
  506.    }];
  507.    
  508.     if(textField == self.expertSettingProfileView.nameTextField.textField) {
  509.         [self.expertSettingProfileView.usernameTextField.textField becomeFirstResponder];
  510.     }
  511.     else if(textField == self.expertSettingProfileView.usernameTextField.textField) {
  512.         [self.expertSettingProfileView.cityTextField.textField becomeFirstResponder];
  513.     }
  514.     else if(textField == self.expertSettingProfileView.cityTextField.textField) {
  515.         //self.expertSettingProfileView.textView.returnKeyType = UIReturnKeyDone;
  516.         [self.expertSettingProfileView.textView becomeFirstResponder];
  517.     }
  518.     else if(textField == self.expertSettingProfileView.socialMediaFacebookTextField.textField) {
  519.         [self.expertSettingProfileView.socialMediaTwitterTextField.textField becomeFirstResponder];
  520.     }
  521.     else if(textField == self.expertSettingProfileView.socialMediaTwitterTextField.textField) {
  522.         [self.expertSettingProfileView.socialMediaInstagramTextField.textField becomeFirstResponder];
  523.     }
  524.     else if(textField == self.expertSettingProfileView.socialMediaInstagramTextField.textField) {
  525.         [self.expertSettingProfileView.socialMediaYoutubeTextField.textField becomeFirstResponder];
  526.     }
  527.     else if(textField == self.expertSettingProfileView.socialMediaYoutubeTextField.textField) {
  528.         self.expertSettingProfileView.socialMediaYoutubeTextField.textField.returnKeyType = UIReturnKeyDone;
  529.         [self.expertSettingProfileView.socialMediaYoutubeTextField.textField resignFirstResponder];
  530.     }
  531. }
  532.  
  533. - (BOOL)moseloTextFieldDelegateTextFieldShouldBeginEditingWithTextField:(UITextField *)textField {
  534.     [UIView animateWithDuration:0.2f animations:^{
  535.    
  536.         self.expertSettingProfileView.logoFacebookImageView.image = [UIImage imageNamed:@"facebookIconOff"];
  537.         self.expertSettingProfileView.logoTwitterImageView.image = [UIImage imageNamed:@"twitterIconOff"];
  538.         self.expertSettingProfileView.logoInstagramImageView.image = [UIImage imageNamed:@"instagramIconOff"];
  539.         self.expertSettingProfileView.logoYoutubeImageView.image = [UIImage imageNamed:@"Yt"];
  540.    
  541.         if(textField == self.expertSettingProfileView.socialMediaFacebookTextField.textField) {
  542.             self.expertSettingProfileView.logoFacebookImageView.image = [UIImage imageNamed:@"facebookIcon"];
  543.         }
  544.         else if(textField == self.expertSettingProfileView.socialMediaTwitterTextField.textField) {
  545.             self.expertSettingProfileView.logoTwitterImageView.image = [UIImage imageNamed:@"twitterIcon"];
  546.         }
  547.         else if(textField == self.expertSettingProfileView.socialMediaInstagramTextField.textField) {
  548.             self.expertSettingProfileView.logoInstagramImageView.image = [UIImage imageNamed:@"instagramIcon"];
  549.         }
  550.         else if(textField == self.expertSettingProfileView.socialMediaYoutubeTextField.textField) {
  551.             self.expertSettingProfileView.logoYoutubeImageView.image = [UIImage imageNamed:@"Yt-active"];
  552.         }
  553.        
  554.     }];
  555.     return YES;
  556. }
  557.  
  558. - (void)moseloTextFieldDelegateTextFieldDidEndEditing:(UITextField *)textField {
  559.  
  560. }
  561.  
  562. #pragma mark MoseloCheckerTextField
  563. - (void)moseloCheckerTextFieldDelegateTextFieldShouldReturnWithTextField:(UITextField *)textField {
  564.     if(textField == self.expertSettingProfileView.usernameTextField.textField) {
  565.         [self.expertSettingProfileView.cityTextField.textField becomeFirstResponder];
  566.     }
  567.     else {
  568.         [textField resignFirstResponder];
  569.     }
  570. }
  571.  
  572. - (void)moseloCheckerTextFieldDelegateTextFieldShouldBeginEditingWithTextField:(UITextField *)textField {
  573.    
  574. }
  575.  
  576. - (void)moseloCheckerTextFieldDelegateTextFieldShouldChangeCharactersInRange:(NSRange)range
  577.                                                            replacementString:(NSString *)string
  578.                                                                    textField:(UITextField *)textField {
  579.    
  580.     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
  581.    
  582.     if(textField == self.expertSettingProfileView.usernameTextField.textField) {
  583.         if(newString.length < 5 ) {
  584.             [self.expertSettingProfileView.usernameTextField setErrorMessageInformationWithString:NSLocalizedString(@"Too Short", @"")];
  585.             [self.expertSettingProfileView.usernameTextField setShowErrorMessage:YES];
  586.             _isUsernameTooShort = YES;
  587.             _isUsernameTaken = NO;
  588.             return;
  589.         }
  590.         else {
  591.             [self.expertSettingProfileView.usernameTextField setErrorMessageInformationWithString:@""];
  592.             [self.expertSettingProfileView.usernameTextField setShowErrorMessage:NO];
  593.            
  594.             if(![newString isEqualToString:self.expertExistingUsername]) {
  595.                 [self performSelector:@selector(checkUsername:) withObject:newString afterDelay:0.1f];
  596.             }
  597.         }
  598.  
  599.         _isUsernameTooShort = NO;
  600.         _isUsernameTaken = NO;
  601.     }
  602. }
  603.  
  604. #pragma mark UITextView
  605. - (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
  606.    
  607.     [self.expertSettingProfileView.scrollView setContentOffset:CGPointMake(0.0f, textView.frame.origin.y - 50.0f - 64.0f) animated:YES];
  608.    
  609.     [UIView animateWithDuration:0.2f animations:^{
  610.         self.expertSettingProfileView.descriptionTitleLabel.textColor = [Util getColor:@"2ECCAD"];
  611.         [self setIsPlaceholderHidden:YES];
  612.        
  613.         [UIView animateWithDuration:0.2f animations:^{
  614.             self.expertSettingProfileView.logoFacebookImageView.image = [UIImage imageNamed:@"facebookIconOff"];
  615.             self.expertSettingProfileView.logoTwitterImageView.image = [UIImage imageNamed:@"twitterIconOff"];
  616.             self.expertSettingProfileView.logoInstagramImageView.image = [UIImage imageNamed:@"instagramIconOff"];
  617.             self.expertSettingProfileView.logoYoutubeImageView.image = [UIImage imageNamed:@"Yt"];
  618.         }];
  619.        
  620.     }];
  621.     return YES;
  622. }
  623.  
  624. - (void)textViewDidEndEditing:(UITextView *)textView {
  625.     [UIView animateWithDuration:0.2f animations:^{
  626.        
  627.         if(![self.expertSettingProfileView.textView.text isEqualToString:@""]) {
  628.             [self setIsPlaceholderHidden:YES];
  629.         }
  630.         else {
  631.             [self setIsPlaceholderHidden:NO];
  632.         }
  633.        
  634.         self.expertSettingProfileView.descriptionTitleLabel.textColor = [Util getColor:@"CCCCCC"];
  635.     }];
  636. }
  637.  
  638.  
  639. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
  640.  replacementText:(NSString *)text {
  641.  
  642.     NSString *newText = [textView.text stringByReplacingCharactersInRange:range withString:text];
  643.    
  644.     if([newText isEqualToString:@""]) {
  645.         [self setIsPlaceholderHidden:NO];
  646.     }
  647.     else {
  648.         [self setIsPlaceholderHidden:YES];
  649.     }
  650.    
  651.     if ([text isEqualToString:@"\n"]) {
  652.  
  653.         //[textView resignFirstResponder];
  654.         [self.expertSettingProfileView.socialMediaFacebookTextField.textField becomeFirstResponder];
  655.         // Return FALSE so that the final '\n' character doesn't get added
  656.         return NO;
  657.     }
  658.     // For any other character return TRUE so that the text gets added to the view
  659.     return YES;
  660. }
  661.  
  662. #pragma mark MoseloPickerTextField
  663. - (void)moseloPickerTextFieldDelegateButtonDidTapped:(UIButton *)button {
  664.    
  665. }
  666.  
  667. #pragma mark SetProfilePictureViewControllerDelegate
  668. - (void)isDoneSetProfilePictureWithUserData:(UserModel *)userData {
  669.     NSString *profilePictString = userData.avatarURL.large;
  670.    
  671.     self.profilePictureURLString = profilePictString;
  672.     [self.expertSettingProfileView.profilePictureImageView setImageWithURLString:profilePictString];
  673. }
  674. #pragma mark Choose City
  675. -(void)chooseCityViewControllerDelegateDidSelectDataWithData:(DomicileModel *)domicile indexPath:(NSIndexPath *)indexPath{
  676.     NSLog(@"%@",domicile.city);
  677.    
  678.     self.selectedCityID = domicile.city.placeID;
  679.     self.selectedCityName = domicile.city.placeName;
  680.     self.selectedRegionID = domicile.region.placeID;
  681.     self.selectedRegionName = domicile.region.placeName;
  682.     self.selectedCountryID = domicile.country.placeID;
  683.     self.selectedCountryName = domicile.country.placeName;
  684.  
  685.     self.selectedCityID = [Util nullToEmptyString:self.selectedCityID];
  686.     self.selectedCityName = [Util nullToEmptyString:self.selectedCityName];
  687.     self.selectedRegionID = [Util nullToEmptyString:self.selectedRegionID];
  688.     self.selectedRegionName = [Util nullToEmptyString:self.selectedRegionName];
  689.     self.selectedCountryID = [Util nullToEmptyString:self.selectedCountryID];
  690.     self.selectedCountryName = [Util nullToEmptyString:self.selectedCountryName];
  691.  
  692.     [self.expertSettingProfileView.cityPicker setInformationDataWithString:self.selectedCityName];
  693.     [self.expertSettingProfileView.cityPicker isTextFieldContainData:YES];
  694.    
  695.     self.citySelectedIndexPath = indexPath;
  696.    
  697.     [self dismissViewControllerAnimated:YES completion:nil];
  698. }
  699.  
  700. #pragma mark UIImagePickerController
  701. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  702.     //Output image
  703.     UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
  704.     chosenImage = [self normalizedImage:chosenImage];
  705.    
  706.     [picker dismissViewControllerAnimated:NO completion:nil];
  707.    
  708.     ImageCoverPreviewViewController *imageCoverPreviewViewController  = [[ImageCoverPreviewViewController alloc] init];
  709.     imageCoverPreviewViewController.delegate = self;
  710.     [imageCoverPreviewViewController setImageCoverPreviewViewControllerType:ImageCoverPreviewViewControllerTypeImageData];
  711.    
  712.     imageCoverPreviewViewController.dataArray = @[chosenImage];
  713.    
  714.     [self.navigationController pushViewController:imageCoverPreviewViewController animated:YES];
  715. }
  716.  
  717. #pragma mark - ImageCoverPreviewViewController
  718. - (void)ImageCoverPreviewViewControllerDidTappedUploadButtonWithDataArray:(NSArray *)dataArray {
  719.     if ([self.delegate respondsToSelector:@selector(ImageCoverPreviewViewControllerDidTappedUploadButtonWithDataArray:)]) {
  720.         [self.delegate ImageCoverPreviewViewControllerDidTappedUploadButtonWithDataArray:self.dataArray];
  721.     }
  722. }
  723.  
  724. - (void)ImageCoverPreviewViewControllerDidTappedBackButton {
  725.    
  726. }
  727.  
  728. #pragma mark ImageSelectCoverViewController
  729. - (void)imageSelectCoverViewControllerDidTappedContinueButtonWithDataArray:(NSArray *)dataArray firstLoginInstagram:(BOOL)isFirstLogin {
  730.     id firstObject = [dataArray firstObject];
  731.    
  732.     NSLog(@"This is ExpertSettingProfileViewController");
  733.    
  734.     NSString *imageURLString = [NSString string];
  735.     UIImage *image;
  736.     BOOL isUploadImageURL;
  737.    
  738.     if([firstObject isKindOfClass:[UIImage class]]) {
  739.         image = [dataArray firstObject];
  740.         self.expertSettingProfileView.coverImage.image = image;
  741.     }
  742.     else {
  743.         AvatarURLModel *avatarURL = [dataArray firstObject];
  744.         imageURLString = avatarURL.large;
  745.         [self.expertSettingProfileView.coverImage setImageWithURLString:imageURLString];
  746.     }
  747.    
  748.     if(imageURLString != nil && image == nil) {
  749.         //instagram
  750.         isUploadImageURL = YES;
  751.     }
  752.    
  753.     if(imageURLString == nil && image != nil) {
  754.         //camera or gallery
  755.         isUploadImageURL = NO;
  756.     }
  757.    
  758.     NSLog(@"------------------------------ BEFORE DISMISS");
  759.    
  760.     //back to ExpertSettingProfileViewController
  761.     [self dismissViewControllerAnimated:YES completion:nil];
  762.    
  763.     //SET loadingCover YES
  764.     [self setIsLoadingCover:YES];
  765.    
  766.     NSLog(@"------------------------------ BEFORE CALL API");
  767.     [DataManager callAPIEditExpertCoverWithImageURL:imageURLString imageData:image isUploadURLData:isUploadImageURL success:^(AvatarURLModel *imageUrl) {
  768.        
  769.         //set loadingCover NO
  770.         [self setIsLoadingCover:NO];
  771.        
  772.     } failure:^(NSError *error) {
  773.        
  774.         if(error.code != 999) {
  775.             UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:error.domain preferredStyle:UIAlertControllerStyleAlert];
  776.            
  777.             UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  778.                
  779.             }];
  780.            
  781.             [alertController addAction:okAction];
  782.            
  783.             [self presentViewController:alertController animated:YES completion:nil];
  784.         }
  785.        
  786.         //set loadingCover NO
  787.         [self setIsLoadingCover:NO];
  788.     }];
  789. }
  790.  
  791. #pragma mark WebViewViewController
  792. - (void)webViewViewControllerDidFinishRetrieveInstagramToken {
  793.     [self dismissViewControllerAnimated:NO completion:nil];
  794.     ImageSelectCoverViewController *imageSelectCoverViewController = [[ImageSelectCoverViewController alloc] init];
  795.     imageSelectCoverViewController.delegate = self;
  796.     imageSelectCoverViewController.isFirstLoginInstagram = YES;
  797.     [imageSelectCoverViewController setImageSelectCoverViewControllerType:ImageSelectViewCoverControllerTypeInstagram];
  798.     [imageSelectCoverViewController setImageSelectCoverViewControllerNavigateType:ImageSelectCoverViewControllerNavigateTypePush];
  799.     [self.navigationController pushViewController:imageSelectCoverViewController animated:YES];
  800. }
  801.  
  802. //- (void)imageSelectCoverViewControllerDidTappedBackButton {
  803. //
  804. //}
  805.  
  806. #pragma mark - Custom Method
  807. - (void)backButtonDidTapped {
  808.     if(!self.isLoadingCover)
  809.     {
  810.         [self.navigationController popViewControllerAnimated:YES];
  811.     }
  812. }
  813.  
  814. - (void)editCoverButtonDidTapped {
  815.     [UIView animateWithDuration:0.3f animations:^{
  816.         self.expertSettingProfileView.editCoverButton.alpha = 0.0f;
  817.         self.expertSettingProfileView.editCoverIconImage.alpha = 0.0f;
  818.         self.expertSettingProfileView.coverView.alpha = 0.5f;
  819.    
  820.         self.expertSettingProfileView.closeEditCoverButton.alpha = 1.0f;
  821.         self.expertSettingProfileView.closeEditCoverIconImage .alpha = 1.0f;
  822.        
  823.         self.expertSettingProfileView.optionsView.alpha = 1.0f;
  824.     }];
  825.    
  826.     //1. Camera
  827.     [UIView animateWithDuration:0.1f animations:^{
  828.         [UIView animateWithDuration:0.1f animations:^{
  829.             self.expertSettingProfileView.cameraView.alpha = 1.0f;
  830.             self.expertSettingProfileView.cameraButton.alpha = 1.0f;
  831.         } completion:nil];
  832.     } completion:^(BOOL finished) {
  833.         //2.left separator
  834.         [UIView animateWithDuration:0.1f animations:^{
  835.             self.expertSettingProfileView.leftSeparatorView.alpha = 0.35f;
  836.         } completion:^(BOOL finished) {
  837.             //3. Gallery
  838.             [UIView animateWithDuration:0.1f animations:^{
  839.                 [UIView animateWithDuration:0.1f animations:^{
  840.                     self.expertSettingProfileView.galleryView.alpha = 1.0f;
  841.                     self.expertSettingProfileView.galleryButton.alpha = 1.0f;
  842.                 } completion:nil];
  843.             } completion:^(BOOL finished) {
  844.                 //4.right separator
  845.                 [UIView animateWithDuration:0.1f animations:^{
  846.                     self.expertSettingProfileView.rightSeparatorView.alpha = 0.35f;
  847.                 } completion:^(BOOL finished) {
  848.                     //5.Instagram
  849.                     [UIView animateWithDuration:0.1f animations:^{
  850.                         [UIView animateWithDuration:0.1f animations:^{
  851.                             self.expertSettingProfileView.instagramView.alpha = 1.0f;
  852.                             self.expertSettingProfileView.instagramButton.alpha = 1.0f;
  853.                         } completion:nil];
  854.                     } completion:nil];
  855.                 }];
  856.             }];
  857.         }];
  858.     }];
  859. }
  860.  
  861. - (void)cameraButtonDidTapped {
  862.     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
  863.     picker.sourceType = UIImagePickerControllerSourceTypeCamera;
  864.     picker.delegate = self;
  865.     picker.allowsEditing = NO;
  866.     [self presentViewController:picker animated:YES completion:nil];
  867. }
  868.  
  869. - (void)galleryButtonDidTapped {
  870.     ImageSelectCoverViewController *imageSelectCoverViewController = [[ImageSelectCoverViewController alloc] init];
  871.     imageSelectCoverViewController.delegate = self;
  872.     imageSelectCoverViewController.isFirstLoginInstagram = NO;
  873.     [imageSelectCoverViewController setImageSelectCoverViewControllerType:ImageSelectViewCoverControllerTypeCoverGallery];
  874.     [imageSelectCoverViewController setImageSelectCoverViewControllerNavigateType:ImageSelectCoverViewControllerNavigateTypePresent];
  875.    
  876.     CustomNavigationController *imageSelectCoverNavigationController = [[CustomNavigationController alloc] initWithRootViewController:imageSelectCoverViewController];
  877.     [self presentViewController:imageSelectCoverNavigationController animated:YES completion:nil];
  878. }
  879.  
  880. - (void)instagramButtonDidTapped {
  881.     NSString *accessToken = [[NSUserDefaults standardUserDefaults] secretObjectForKey:PREFS_INSTAGRAM_ACCESS_TOKEN];
  882.     if(accessToken == nil || [accessToken isEqualToString:@""]) {
  883.         WebViewViewController *webViewViewController = [[WebViewViewController alloc] init];
  884.         webViewViewController.delegate = self;
  885.         [webViewViewController setWebViewViewControllerType:WebViewViewControllerTypeLoginInstagram];
  886.         [webViewViewController setWebViewViewControllerHeightType:WebViewViewControllerTypeWithNavigation];
  887.        
  888.         CustomNavigationController *webViewNavigationController = [[CustomNavigationController alloc] initWithRootViewController:webViewViewController];
  889.         [self presentViewController:webViewNavigationController animated:YES completion:nil];
  890.     }
  891.     else {
  892.         ImageSelectCoverViewController *imageSelectCoverViewController = [[ImageSelectCoverViewController alloc] init];
  893.         imageSelectCoverViewController.delegate = self;
  894.         imageSelectCoverViewController.isFirstLoginInstagram = NO;
  895.         [imageSelectCoverViewController setImageSelectCoverViewControllerType:ImageSelectViewCoverControllerTypeInstagram];
  896.         [imageSelectCoverViewController setImageSelectCoverViewControllerNavigateType:ImageSelectCoverViewControllerNavigateTypePresent];
  897.        
  898.         CustomNavigationController *imageSelectCoverNavigationController = [[CustomNavigationController alloc] initWithRootViewController:imageSelectCoverViewController];
  899.         [self presentViewController:imageSelectCoverNavigationController animated:YES completion:nil];
  900.     }
  901. }
  902.  
  903. - (void)closeEditCoverButtonDidTapped {
  904.     NSLog(@"CLOSE edit cover button pressed");
  905.    
  906.     [UIView animateWithDuration:0.2f animations:^{
  907.         self.expertSettingProfileView.closeEditCoverButton.alpha = 0.0f;
  908.         self.expertSettingProfileView.closeEditCoverIconImage .alpha = 0.0f;
  909.     }];
  910.    
  911.     //5.Instagram
  912.     [UIView animateWithDuration:0.1f animations:^{
  913.         [UIView animateWithDuration:0.1f animations:^{
  914.             self.expertSettingProfileView.instagramView.alpha = 0.0f;
  915.             self.expertSettingProfileView.instagramButton.alpha = 0.0f;
  916.         } completion:nil];
  917.     } completion:^(BOOL finished) {
  918.         //4.right separator
  919.         [UIView animateWithDuration:0.1f animations:^{
  920.             self.expertSettingProfileView.rightSeparatorView.alpha = 0.0f;
  921.         } completion:^(BOOL finished) {
  922.             //3. Gallery
  923.             [UIView animateWithDuration:0.1f animations:^{
  924.                 [UIView animateWithDuration:0.1f animations:^{
  925.                     self.expertSettingProfileView.galleryView.alpha = 0.0f;
  926.                     self.expertSettingProfileView.galleryButton.alpha = 0.0f;
  927.                 } completion:nil];
  928.             } completion:^(BOOL finished) {
  929.                 //2.left separator
  930.                 [UIView animateWithDuration:0.1f animations:^{
  931.                     self.expertSettingProfileView.leftSeparatorView.alpha = 0.0f;
  932.                 } completion:^(BOOL finished) {
  933.                     //1. Camera
  934.                     [UIView animateWithDuration:0.1f animations:^{
  935.                         [UIView animateWithDuration:0.1f animations:^{
  936.                             self.expertSettingProfileView.cameraView.alpha = 0.0f;
  937.                             self.expertSettingProfileView.cameraButton.alpha = 0.0f;
  938.                         } completion:nil];
  939.                     } completion:^(BOOL finished) {
  940.                         [UIView animateWithDuration:0.3f animations:^{
  941.                             self.expertSettingProfileView.optionsView.alpha = 0.0f;
  942.                             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  943.                            
  944.                             self.expertSettingProfileView.coverView.alpha = 0.0f;
  945.                            
  946.                             self.expertSettingProfileView.editCoverIconImage.alpha = 1.0f;
  947.                             self.expertSettingProfileView.editCoverButton.alpha = 1.0f;
  948.                         }];
  949.                     }];
  950.                 }];
  951.             }];
  952.         }];
  953.     }];
  954. }
  955.  
  956. - (void)cancelEditCoverButtonDidTapped {
  957.     NSLog(@"edit cover button pressed");
  958.    
  959.     //5.Instagram
  960.     [UIView animateWithDuration:0.1f animations:^{
  961.         [UIView animateWithDuration:0.1f animations:^{
  962.             self.expertSettingProfileView.instagramView.alpha = 0.0f;
  963.             self.expertSettingProfileView.instagramButton.alpha = 0.0f;
  964.         } completion:nil];
  965.     } completion:^(BOOL finished) {
  966.         //4.right separator
  967.         [UIView animateWithDuration:0.1f animations:^{
  968.             self.expertSettingProfileView.rightSeparatorView.alpha = 0.0f;
  969.         } completion:^(BOOL finished) {
  970.             //3. Gallery
  971.             [UIView animateWithDuration:0.1f animations:^{
  972.                 [UIView animateWithDuration:0.1f animations:^{
  973.                     self.expertSettingProfileView.galleryView.alpha = 0.0f;
  974.                     self.expertSettingProfileView.galleryButton.alpha = 0.0f;
  975.                 } completion:nil];
  976.             } completion:^(BOOL finished) {
  977.                 //2.left separator
  978.                 [UIView animateWithDuration:0.1f animations:^{
  979.                     self.expertSettingProfileView.leftSeparatorView.alpha = 0.0f;
  980.                 } completion:^(BOOL finished) {
  981.                     //1. Camera
  982.                     [UIView animateWithDuration:0.1f animations:^{
  983.                         [UIView animateWithDuration:0.1f animations:^{
  984.                             self.expertSettingProfileView.cameraView.alpha = 0.0f;
  985.                             self.expertSettingProfileView.cameraButton.alpha = 0.0f;
  986.                         } completion:nil];
  987.                     } completion:^(BOOL finished) {
  988.                         [UIView animateWithDuration:0.3f animations:^{
  989.                             self.expertSettingProfileView.optionsView.alpha = 0.0f;
  990.                             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  991.                             self.expertSettingProfileView.coverView.alpha = 0.0f;
  992.                            
  993.                             self.expertSettingProfileView.editCoverIconImage.alpha = 1.0f;
  994.                             self.expertSettingProfileView.editCoverButton.alpha = 1.0f;
  995.                         }];
  996.                     }];
  997.                 }];
  998.             }];
  999.         }];
  1000.     }];
  1001. }
  1002.  
  1003. - (void)editProfilePictureButtonDidTapped {
  1004.     SetProfilePictureViewController *setProfilePictureViewController = [[SetProfilePictureViewController alloc] init];
  1005.     setProfilePictureViewController.delegate = self;
  1006.     setProfilePictureViewController.previousPictureImageString = self.profilePictureURLString;
  1007.     [setProfilePictureViewController setSetProfilePictureViewControllerType:SetProfilePictureViewControllerTypeEdit];
  1008.     [self presentViewController:setProfilePictureViewController animated:YES completion:nil];
  1009. }
  1010.  
  1011. - (void)infoButtonDidTapped {
  1012.     NSLog(@"infoButtonDidTapped Pressed");
  1013.  
  1014.     [UIView animateWithDuration:0.2f animations:^{
  1015.         self.popupInfoExpertChangeNameViewController.view.alpha = 1.0f;
  1016.     }];
  1017.    
  1018.     //AS TEMP DEFAULT ALERT
  1019. //    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Changing Your Name", @"") message:NSLocalizedString(@"Moselo requires experts to send\na request to change profile name", @"") preferredStyle:UIAlertControllerStyleAlert];
  1020. //    
  1021. //    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1022. //        NSLog(@"FALSE");
  1023. //    }];
  1024. //    
  1025. //    UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Contact Us", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1026. //        NSLog(@"TRUE");
  1027. //        
  1028. //        HelpViewController *helpViewController = [[HelpViewController alloc] init];
  1029. //        [self.navigationController pushViewController:helpViewController animated:YES];
  1030. //        
  1031. //    }];
  1032. //    
  1033. //    [alertController addAction:cancelAction];
  1034. //    [alertController addAction:okAction];
  1035. //    
  1036. //    [self presentViewController:alertController animated:YES completion:nil];
  1037.     //END AS TEMP
  1038. }
  1039.  
  1040.  
  1041. - (void)cityListButtonDidTapped {
  1042.     NSLog(@"City List Picker Pressed");
  1043.    
  1044.     ChooseCityViewController *chooseCityViewController = [[ChooseCityViewController alloc] init];
  1045.     chooseCityViewController.selectedCityID = self.selectedCityID;
  1046.     chooseCityViewController.delegate = self;
  1047.     CustomNavigationController *chooseCityNavigationController = [[CustomNavigationController alloc] initWithRootViewController:chooseCityViewController];
  1048.    
  1049.     [self presentViewController:chooseCityNavigationController animated:YES completion:nil];
  1050. }
  1051.  
  1052. - (void)saveButtonDidTapped {
  1053.    
  1054.     [self setIsLoading:YES];
  1055.    
  1056.     if([self.expertSettingProfileView.nameTextField.textField.text isEqualToString:@""]) {
  1057.         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:NSLocalizedString(@"Please fill your name...", @"") preferredStyle:UIAlertControllerStyleAlert];
  1058.        
  1059.         UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1060.            
  1061.         }];
  1062.        
  1063.         [alertController addAction:okAction];
  1064.         [self presentViewController:alertController animated:YES completion:nil];
  1065.         return;
  1066.     }
  1067.    
  1068.     if([self.expertSettingProfileView.usernameTextField.textField.text isEqualToString:@""]) {
  1069.         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:NSLocalizedString(@"Please fill your username...", @"") preferredStyle:UIAlertControllerStyleAlert];
  1070.        
  1071.         UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1072.            
  1073.         }];
  1074.        
  1075.         [alertController addAction:okAction];
  1076.         [self presentViewController:alertController animated:YES completion:nil];
  1077.         return;
  1078.     }
  1079.    
  1080.     if(self.isUsernameTaken) {
  1081.         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:NSLocalizedString(@"Username already exist, please select another username", @"") preferredStyle:UIAlertControllerStyleAlert];
  1082.        
  1083.         UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1084.            
  1085.         }];
  1086.        
  1087.         [alertController addAction:okAction];
  1088.         [self presentViewController:alertController animated:YES completion:nil];
  1089.         return;
  1090.     }
  1091.    
  1092.     if(self.isUsernameTooShort) {
  1093.         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:NSLocalizedString(@"Username should contain more than 5 characters...", @"") preferredStyle:UIAlertControllerStyleAlert];
  1094.        
  1095.         UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1096.            
  1097.         }];
  1098.        
  1099.         [alertController addAction:okAction];
  1100.         [self presentViewController:alertController animated:YES completion:nil];
  1101.         return;
  1102.     }
  1103.    
  1104.     UserModel *editedExpertData = [UserModel new];
  1105.     self.editedExpertName = self.expertSettingProfileView.nameTextField.textField.text;
  1106.     self.editedExpertUsername = self.expertSettingProfileView.usernameTextField.textField.text;
  1107.     self.editedExpertCityID = self.selectedCityID;
  1108.     self.editedExpertCityName = self.selectedCityName;
  1109.     self.editedExpertRegionID = self.selectedRegionID;
  1110.     self.editedExpertRegionName = self.selectedRegionName;
  1111.     self.editedExpertCountryID = self.selectedCountryID;
  1112.     self.editedExpertCountryName = self.selectedCountryName;
  1113.     self.editedExpertProfileDescription = self.expertSettingProfileView.textView.text;
  1114.     self.editedFacebookUsername = self.expertSettingProfileView.socialMediaFacebookTextField.textField.text;
  1115.     self.editedTwitterUsername = self.expertSettingProfileView.socialMediaTwitterTextField.textField.text;
  1116.     self.editedInstagramUsername = self.expertSettingProfileView.socialMediaInstagramTextField.textField.text;
  1117.     self.editedYoutubeUsername = self.expertSettingProfileView.socialMediaYoutubeTextField.textField.text;
  1118.  
  1119. //    CHECKING IF THERES NO CHANGES
  1120. //    if([self.editedExpertUsername isEqualToString:self.expertExistingUsername] && [self.editedExpertName isEqualToString:self.expertExistingName] && [self.editedExpertProfileDescription isEqualToString:self.expertExistingDescription] && [self.editedFacebookUsername isEqualToString:self.expertExistingFacebookUsername] && [self.editedTwitterUsername isEqualToString:self.expertExistingTwitterUsername] && [self.editedInstagramUsername isEqualToString:self.expertExistingInstagramUsername] && [self.editedYoutubeUsername isEqualToString:self.expertExistingYoutubeUsername]) {
  1121. //        [self.navigationController popViewControllerAnimated:YES];
  1122. //        return;
  1123. //    }
  1124.    
  1125.     if(![self.editedExpertUsername isEqualToString:self.expertExistingUsername]) {
  1126.         editedExpertData.username = self.editedExpertUsername;
  1127.     }
  1128.     else {
  1129.         editedExpertData.username = self.expertExistingUsername;
  1130.     }
  1131.    
  1132.     if(![self.editedExpertName isEqualToString:self.expertExistingName]) {
  1133.         editedExpertData.name = self.expertExistingName;
  1134.     }
  1135.     else {
  1136.         editedExpertData.name = self.expertExistingName;
  1137.     }
  1138.    
  1139.     DomicileModel *editedDomicileModel = [DomicileModel new];
  1140.    
  1141.     PlaceModel *cityPlaceModel = [PlaceModel new];
  1142.     cityPlaceModel.placeID = self.selectedCityID;
  1143.     cityPlaceModel.placeName = self.selectedCityName;
  1144.    
  1145.     PlaceModel *regionPlaceModel = [PlaceModel new];
  1146.     regionPlaceModel.placeID = self.selectedRegionID;
  1147.     regionPlaceModel.placeName= self.selectedRegionName;
  1148.    
  1149.     PlaceModel *countryPlaceModel = [PlaceModel new];
  1150.     countryPlaceModel.placeID = self.selectedCountryID;
  1151.     countryPlaceModel.placeName= self.selectedCountryName;
  1152.    
  1153.    
  1154.     editedDomicileModel.city = cityPlaceModel;
  1155.     editedDomicileModel.region = regionPlaceModel;
  1156.     editedDomicileModel.country = countryPlaceModel;
  1157.    
  1158.     if(self.selectedCityID != self.existingSelectedCityID) {
  1159.         editedDomicileModel.city = cityPlaceModel;
  1160.         editedDomicileModel.region = regionPlaceModel;
  1161.         editedDomicileModel.country = countryPlaceModel;
  1162.         editedExpertData.domicile = editedDomicileModel;
  1163.     }
  1164.     else {
  1165.         editedDomicileModel.city = cityPlaceModel;
  1166.         editedDomicileModel.region = regionPlaceModel;
  1167.         editedDomicileModel.country = countryPlaceModel;
  1168.         editedExpertData.domicile = editedDomicileModel;
  1169.     }
  1170.    
  1171.     if(![self.editedExpertProfileDescription isEqualToString:self.expertExistingDescription]) {
  1172.         editedExpertData.profileDescription = self.editedExpertProfileDescription;
  1173.     }
  1174.     else {
  1175.         editedExpertData.profileDescription = self.expertExistingDescription;
  1176.     }
  1177.    
  1178.     SocialMediaModel *editedSocialMedia = [SocialMediaModel new];
  1179.    
  1180.     if(![self.editedFacebookUsername isEqualToString:self.expertExistingFacebookUsername]) {
  1181.         editedSocialMedia.facebook = self.editedFacebookUsername;
  1182.     }
  1183.     else {
  1184.         editedSocialMedia.facebook = self.expertExistingFacebookUsername;
  1185.     }
  1186.    
  1187.     if(![self.editedTwitterUsername isEqualToString:self.expertExistingTwitterUsername]) {
  1188.         editedSocialMedia.twitter = self.editedTwitterUsername;
  1189.     }
  1190.     else {
  1191.         editedSocialMedia.twitter = self.expertExistingTwitterUsername;
  1192.     }
  1193.    
  1194.     if(![self.editedInstagramUsername isEqualToString:self.expertExistingInstagramUsername]) {
  1195.         editedSocialMedia.instagram = self.editedInstagramUsername;
  1196.     }
  1197.     else {
  1198.         editedSocialMedia.instagram = self.expertExistingInstagramUsername;
  1199.     }
  1200.    
  1201.     if(![self.editedYoutubeUsername isEqualToString:self.expertExistingYoutubeUsername]) {
  1202.         editedSocialMedia.youtube = self.editedYoutubeUsername;
  1203.     }
  1204.     else {
  1205.         editedSocialMedia.youtube = self.expertExistingYoutubeUsername;
  1206.     }
  1207.    
  1208.     editedExpertData.socialMedia = editedSocialMedia;
  1209.    
  1210.    
  1211.     [DataManager callAPIEditExpertProfileWithUserData:editedExpertData success:^{
  1212.         [self setIsLoading:NO];
  1213.        
  1214.         NSDictionary *activeUser = [[NSUserDefaults standardUserDefaults] secretObjectForKey:PREFS_ACTIVE_USER];
  1215.        
  1216.         NSMutableDictionary *editedActiveUser = [activeUser mutableCopy];
  1217.         [editedActiveUser setObject:self.editedExpertName forKey:@"name"];
  1218.         [editedActiveUser setObject:self.editedExpertUsername forKey:@"username"];
  1219.         [editedActiveUser setObject:self.selectedCityID forKey:@"city_id"];
  1220.         [editedActiveUser setObject:self.editedExpertProfileDescription forKey:@"description"];
  1221.         [editedActiveUser setObject:self.editedFacebookUsername forKey:@"facebook"];
  1222.         [editedActiveUser setObject:self.editedTwitterUsername forKey:@"twitter"];
  1223.         [editedActiveUser setObject:self.editedInstagramUsername forKey:@"instagram"];
  1224.         [editedActiveUser setObject:self.editedYoutubeUsername forKey:@"youtube"];
  1225.        
  1226.         [[NSUserDefaults standardUserDefaults] setSecretObject:editedActiveUser forKey:PREFS_ACTIVE_USER];
  1227.         [[NSUserDefaults standardUserDefaults] synchronize];
  1228.        
  1229.         [[NotificationManager sharedManager] syncTokenToServer];
  1230.        
  1231.         [self.navigationController popViewControllerAnimated:YES];
  1232.     } failure:^(NSError *error) {
  1233.         [self setIsLoading:NO];
  1234.        
  1235.         if(error.code != 999) {
  1236.             UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:error.domain preferredStyle:UIAlertControllerStyleAlert];
  1237.            
  1238.             UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1239.                
  1240.             }];
  1241.            
  1242.             [alertController addAction:okAction];
  1243.            
  1244.             [self presentViewController:alertController animated:YES completion:nil];
  1245.         }
  1246.     }];
  1247. }
  1248.  
  1249. - (void)keyboardWillShowWithHeight:(CGFloat)keyboardHeight {
  1250. //    [UIView animateWithDuration:0.2f animations:^{
  1251. ////        self.expertSettingProfileView.tableView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.tableView.frame), CGRectGetMinY(self.expertSettingProfileView.tableView.frame), CGRectGetWidth(self.expertSettingProfileView.tableView.frame), CGRectGetHeight(self.expertSettingProfileView.frame) - keyboardHeight);
  1252. ////
  1253. ////        self.expertSettingProfileView.tableView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, keyboardHeight, 0.0f);
  1254. //
  1255. //
  1256. //        self.expertSettingProfileView.scrollView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.scrollView.frame), CGRectGetMinY(self.expertSettingProfileView.scrollView.frame), CGRectGetWidth(self.expertSettingProfileView.scrollView.frame), CGRectGetHeight(self.expertSettingProfileView.frame) - keyboardHeight);
  1257. //
  1258. //        self.expertSettingProfileView.scrollView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, keyboardHeight, 0.0f);
  1259. //
  1260. //    }];
  1261.    
  1262.     [UIView animateWithDuration:0.2f animations:^{
  1263.         self.expertSettingProfileView.scrollView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.scrollView.frame), CGRectGetMinY(self.expertSettingProfileView.scrollView.frame), CGRectGetWidth(self.expertSettingProfileView.scrollView.frame), CGRectGetHeight(self.expertSettingProfileView.frame) - keyboardHeight);
  1264. //        self.expertSettingProfileView.scrollView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, keyboardHeight, 0.0f);
  1265.     }];
  1266. }
  1267.  
  1268. - (void)keyboardWillHideWithHeight:(CGFloat)keyboardHeight {
  1269. //    [UIView animateWithDuration:0.2f animations:^{
  1270. //        self.expertSettingProfileView.tableView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.tableView.frame), CGRectGetMinY(self.expertSettingProfileView.tableView.frame), CGRectGetWidth(self.expertSettingProfileView.tableView.frame), CGRectGetHeight(self.expertSettingProfileView.frame));
  1271. //
  1272. //        self.expertSettingProfileView.tableView.contentInset = UIEdgeInsetsZero;
  1273. //    }];
  1274.    
  1275. //    [UIView animateWithDuration:0.2f animations:^{
  1276. //        self.expertSettingProfileView.scrollView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.scrollView.frame), CGRectGetMinY(self.expertSettingProfileView.scrollView.frame), CGRectGetWidth(self.expertSettingProfileView.scrollView.frame), CGRectGetHeight(self.expertSettingProfileView.frame));
  1277. //
  1278. //        self.expertSettingProfileView.scrollView.contentInset = UIEdgeInsetsZero;
  1279. //    }];
  1280.    
  1281.     [UIView animateWithDuration:0.2f animations:^{
  1282.         self.expertSettingProfileView.scrollView.frame = CGRectMake(CGRectGetMinX(self.expertSettingProfileView.scrollView.frame), CGRectGetMinY(self.expertSettingProfileView.scrollView.frame), CGRectGetWidth(self.expertSettingProfileView.scrollView.frame), CGRectGetHeight(self.expertSettingProfileView.frame));
  1283. //        self.expertSettingProfileView.scrollView.contentInset = UIEdgeInsetsZero;
  1284.     }];
  1285. }
  1286.  
  1287. - (void)setIsLoading:(BOOL)isLoading {
  1288.     _isLoading = isLoading;
  1289.    
  1290.     if(isLoading) {
  1291.        
  1292.         [self.saveButton setTitle:NSLocalizedString(@"", @"") forState:UIControlStateNormal];
  1293.         self.saveButton.enabled = NO;
  1294.         self.activityIndicator.alpha = 1.0f;
  1295.     }
  1296.     else {
  1297.        
  1298.         [self.saveButton setTitle:NSLocalizedString(@"Save", @"") forState:UIControlStateNormal];
  1299.         self.saveButton.enabled = YES;
  1300.         self.activityIndicator.alpha = 0.0f;
  1301.     }
  1302. }
  1303.  
  1304. - (void)checkUsername:(NSString *)username {
  1305.     [NSObject cancelPreviousPerformRequestsWithTarget:self];
  1306.    
  1307.     [DataManager callAPICheckUsername:username success:^(APIUserAvailabilityResponseType userAvailabilityResponseType, NSString *requestedUsername) {
  1308.         if(![requestedUsername isEqualToString:self.expertSettingProfileView.usernameTextField.textField.text]) {
  1309.             //Request response is not the latest one
  1310.             return ;
  1311.         }
  1312.        
  1313.         if(userAvailabilityResponseType == APIUserAvailabilityResponseTypeNotAvailable) {
  1314.             [self.expertSettingProfileView.usernameTextField setErrorMessageInformationWithString:NSLocalizedString(@"Already Taken", @"")];
  1315.             [self.expertSettingProfileView.usernameTextField setShowErrorMessage:YES];
  1316.             _isUsernameTaken = YES;
  1317.             _isUsernameTooShort = NO;
  1318.             return ;
  1319.         }
  1320.        
  1321.         [self.expertSettingProfileView.usernameTextField setErrorMessageInformationWithString:@""];
  1322.         [self.expertSettingProfileView.usernameTextField setShowErrorMessage:NO];
  1323.         [self.expertSettingProfileView.usernameTextField setIsSuccessValidating:YES];
  1324.     } failure:^(NSError *error) {
  1325.         if(error.code != 999) {
  1326.             UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Failed", @"") message:error.domain preferredStyle:UIAlertControllerStyleAlert];
  1327.            
  1328.             UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  1329.                
  1330.             }];
  1331.            
  1332.             [alertController addAction:okAction];
  1333.            
  1334.             [self presentViewController:alertController animated:YES completion:nil];
  1335.         }
  1336.     }];
  1337. }
  1338.  
  1339. - (void)setIsPlaceholderHidden:(BOOL)isHidden {
  1340.     if(isHidden) {
  1341.         [UIView animateWithDuration:0.2f animations:^{
  1342.             self.expertSettingProfileView.descriptionPlaceholderLabel.alpha = 0.0f;
  1343.         }];
  1344.     }
  1345.     else {
  1346.         [UIView animateWithDuration:0.2f animations:^{
  1347.             self.expertSettingProfileView.descriptionPlaceholderLabel.alpha = 1.0f;
  1348.         }];
  1349.     }
  1350. }
  1351.  
  1352. - (void)setIsLoadingCover:(BOOL)isLoadingCover {
  1353.     _isLoadingCover = isLoadingCover;
  1354.     if(isLoadingCover) {
  1355.        
  1356.         [UIView animateWithDuration:0.3f animations:^{
  1357.            
  1358.             self.expertSettingProfileView.optionsView.alpha = 0.0f; //remove option view Camera/Gallery/Instagram
  1359.             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  1360.             self.expertSettingProfileView.editCoverIconImage.alpha = 0.0f; //remove editCoverIcon
  1361.             self.expertSettingProfileView.editCoverButton.alpha = 0.0f; //remove editCoverButton
  1362.            
  1363.             self.expertSettingProfileView.closeEditCoverButton.alpha = 0.0f; //remove closeEditCoverButton
  1364.             self.expertSettingProfileView.closeEditCoverIconImage.alpha = 0.0f; //remove closeEditCoverImage
  1365.            
  1366.             self.saveButton.userInteractionEnabled = NO; //disabled save button
  1367.             self.expertSettingProfileView.iconInfoButton.userInteractionEnabled = NO;
  1368.             self.expertSettingProfileView.cityPicker.userInteractionEnabled = NO;
  1369.            
  1370.             self.expertSettingProfileView.editProfilePictureButton.userInteractionEnabled = NO; //disabled editProfilePictureButton
  1371.             self.expertSettingProfileView.activityIndicator.alpha = 1.0f; //show activity indicator
  1372.             [self.expertSettingProfileView.activityIndicator startAnimating];
  1373.         }];
  1374.        
  1375.     }
  1376.     else {
  1377.         [UIView animateWithDuration:0.3f animations:^{
  1378.            
  1379.             self.expertSettingProfileView.activityIndicator.alpha = 0.0f;
  1380.             self.expertSettingProfileView.optionsView.alpha = 0.0f;
  1381.             self.expertSettingProfileView.coverView.alpha = 0.0f;
  1382.             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  1383.  
  1384.             self.expertSettingProfileView.closeEditCoverButton.alpha = 0.0f; //remove closeEditCoverButton
  1385.             self.expertSettingProfileView.closeEditCoverIconImage.alpha = 0.0f; //remove closeEditCoverImage
  1386.            
  1387.             self.expertSettingProfileView.editCoverIconImage.alpha = 1.0f;
  1388.             self.expertSettingProfileView.editCoverButton.alpha = 1.0f;
  1389.             self.saveButton.userInteractionEnabled = YES;
  1390.             self.expertSettingProfileView.editProfilePictureButton.userInteractionEnabled = YES;
  1391.             self.expertSettingProfileView.iconInfoButton.userInteractionEnabled = YES;
  1392.             self.expertSettingProfileView.cityPicker.userInteractionEnabled = YES;
  1393.             [self.expertSettingProfileView.activityIndicator stopAnimating];
  1394.         }];
  1395.     }
  1396. }
  1397.  
  1398. - (void)setIsFBShimmeringCover:(BOOL)isFBShimmeringCover {
  1399.     _isFBShimmeringCover = isFBShimmeringCover;
  1400.     if(isFBShimmeringCover) {
  1401.         [UIView animateWithDuration:0.2f delay:0.5f options:UIViewAnimationOptionTransitionNone animations:^{
  1402.            
  1403.             self.expertSettingProfileView.coverImage.alpha = 0.0f;
  1404.             self.expertSettingProfileView.optionsView.alpha = 0.0f; //remove option view Camera/Gallery/Instagram
  1405.             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  1406.             self.expertSettingProfileView.editCoverIconImage.alpha = 0.0f; //remove editCoverIcon
  1407.             self.expertSettingProfileView.editCoverButton.alpha = 0.0f; //remove editCoverButton
  1408.            
  1409.             self.saveButton.alpha = 0.0f;
  1410.            
  1411.             self.expertSettingProfileView.loadingCoverImageView.alpha = 1.0f;
  1412.             self.expertSettingProfileView.coverImageShimmeringView.alpha = 1.0f;
  1413.             self.expertSettingProfileView.fbShimmeringCoverImage.alpha = 1.0f;
  1414.            
  1415.             self.expertSettingProfileView.fbShimmeringCoverImage.shimmering = YES;
  1416.         }completion:nil];
  1417.     }
  1418.     else {
  1419.         [UIView animateWithDuration:0.2f delay:0.5f options:UIViewAnimationOptionTransitionNone animations:^{
  1420.            
  1421.             self.expertSettingProfileView.coverImage.alpha = 1.0f;
  1422.             self.expertSettingProfileView.optionsView.alpha = 0.0f;
  1423.             self.expertSettingProfileView.coverView.alpha = 0.0f;
  1424.             self.expertSettingProfileView.cancelEditCoverButton.alpha = 0.0f;
  1425.             self.expertSettingProfileView.editCoverIconImage.alpha = 1.0f;
  1426.             self.expertSettingProfileView.editCoverButton.alpha = 1.0f;
  1427.            
  1428.             self.expertSettingProfileView.coverImageShimmeringView.alpha = 0.0f;
  1429.             self.expertSettingProfileView.fbShimmeringCoverImage.alpha = 0.0f;
  1430.             self.expertSettingProfileView.loadingCoverImageView.alpha = 0.0f;
  1431.            
  1432.             self.saveButton.alpha = 1.0f;
  1433.            
  1434.             self.expertSettingProfileView.fbShimmeringCoverImage.shimmering = NO;
  1435.         }completion:nil];
  1436.     }
  1437. }
  1438.  
  1439. - (void)popupInfoExpertChangeNameViewDidTappedCancelButton {
  1440.    
  1441.     NSLog(@"cancel expertsetting");
  1442.     [UIView animateWithDuration:0.2f animations:^{
  1443.         self.popupInfoExpertChangeNameViewController.view.alpha = 0.0f;
  1444.     }];
  1445. }
  1446. - (void)popupInfoExpertChangeNameViewDidTappedContactUsButton{
  1447.    
  1448.     NSLog(@"contact us expertsetting");
  1449. //    [UIView animateWithDuration:0.2f animations:^{
  1450.         self.popupInfoExpertChangeNameViewController.view.alpha = 0.0f;
  1451. //    }];
  1452.    
  1453.     HelpViewController *helpViewController = [[HelpViewController alloc] init];
  1454.     [self.navigationController pushViewController:helpViewController animated:YES];
  1455. }
  1456.  
  1457. - (void)PopupInfoExpertChangeNameViewDidTappedBackgroundButton {
  1458.    
  1459.     NSLog(@"background expertsetting");
  1460.     [UIView animateWithDuration:0.2f animations:^{
  1461.         self.popupInfoExpertChangeNameViewController.view.alpha = 0.0f;
  1462.     }];
  1463. }
  1464.  
  1465. - (UIImage *)normalizedImage:(UIImage *)image {
  1466.     if (image.imageOrientation == UIImageOrientationUp) {
  1467.         return image;
  1468.     }
  1469.    
  1470.     UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
  1471.     [image drawInRect:(CGRect){0, 0, image.size}];
  1472.     UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
  1473.     UIGraphicsEndImageContext();
  1474.    
  1475.     return normalizedImage;
  1476. }
  1477.  
  1478. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement