// // ASInfomationSetController.m // Asteria // // Created by iOS on 2023/7/5. // #import "ASInfomationSetController.h" #import "KWTextField.h" #import #import "ASHomeAlertWindow.h" @interface ASInfomationSetController () /// 0: 只有邮箱 1: 邮箱加密码 2: 邮箱+验证码+密码 3 邮箱+验证码 @property (nonatomic,assign) NSInteger showType; @property (nonatomic, strong) UIScrollView *scrollV; @property (nonatomic, strong) UIStackView *totalStackV; @property (nonatomic, strong) KWTextField *lastNTf; @property (nonatomic, strong) KWTextField *nameTf; @property (nonatomic, strong) KWTextField *birthTf; @property (nonatomic, strong) UIStackView *passStackV; @property (nonatomic, strong) UIButton *changePassBt; @property (nonatomic, strong) KWTextField *emailTf; @property (nonatomic, strong) KWTextField *oldPassTf; @property (nonatomic, strong) KWTextField *nPassTf; @property (nonatomic, strong) UIButton *bottomBt; @property (nonatomic, strong) NSDate *currentDate; //@property (nonatomic, strong) KWInfoSettingViewModel *vm; @end @implementation ASInfomationSetController - (void)viewDidLoad { [super viewDidLoad]; // self.vm = [KWInfoSettingViewModel new]; self.titleStr = @"Information"; [self setNavRightSearch:^{ }]; self.statusBgV.backgroundColor = Col_FFF; self.customNavBar.backgroundColor = Col_FFF; [self loadSubVs]; [self setData]; } - (void)setData { ASUserModel *m = ASUserInfoManager.shared.userInfo; NSString *bob = ASUserInfoManager.shared.birthDay; self.lastNTf.text = m.lastname; self.nameTf.text = m.firstname; self.currentDate = [NSDate dateWithString:bob format:@"MM dd, yyyy"]; self.birthTf.text = [self.currentDate stringWithFormat:@"MM/dd/yyyy"]; self.showType = 0; self.emailTf.text = m.email; [self configViewsByShowType]; } - (void)loadSubVs { [self.view addSubview:self.scrollV]; UIStackView *tStackV = [[UIStackView alloc] init]; tStackV.axis = UILayoutConstraintAxisVertical; tStackV.alignment = UIStackViewAlignmentFill; tStackV.distribution = UIStackViewDistributionFill; tStackV.spacing = 20; self.totalStackV = tStackV; UIStackView *topStackV = [[UIStackView alloc] init]; topStackV.axis = UILayoutConstraintAxisHorizontal; topStackV.alignment = UIStackViewAlignmentFill; topStackV.distribution = UIStackViewDistributionFillEqually; topStackV.spacing = 20; [self.totalStackV addArrangedSubview:topStackV]; NSArray *titles = @[@"First Name", @"Last Name", @"Date Of Birth"]; NSArray *placeHolders = @[@"Pleace Input Name", @"Pleace Input Last Name", @"Pleace Select Date Of Birth"]; for (int i = 0; i 0) { param[@"dob"] = self.birthTf.text; } BOOL __block isInfoSuc = false; BOOL __block isPassSuc = false; __weak typeof(self) weakSelf = self; [MBProgressHUD showHUDAddedTo:self.view animated:true]; dispatch_group_t group = dispatch_group_create(); dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_group_enter(group); dispatch_group_async(group, queue, ^{ [ASNetTools.shared putWithPath:putUserInfo param: @{@"customer":param} success:^(id _Nonnull json) { isInfoSuc = true; dispatch_group_leave(group); } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) { [weakSelf.view makeToast:@"Bad Net"]; isInfoSuc = false; dispatch_group_leave(group); }]; }); if (!self.changePassBt.isSelected) { isPassSuc = true; dispatch_group_notify(group, dispatch_get_main_queue(), ^{ [MBProgressHUD hideHUDForView:weakSelf.view animated:true]; BOOL flag = isInfoSuc; NSString *str = @"Successfully Change Information"; if (weakSelf.changePassBt.isSelected) { flag = isInfoSuc && isPassSuc; str = @"Successfully Change Information, Please Log In Again"; } if (!flag) { [ASUserInfoManager.shared getInfo]; return; } [ASHomeAlertWindow alertMsg:str]; if (weakSelf.changePassBt.isSelected) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [ASHomeAlertWindow clearWindow]; [weakSelf popAndToLogin]; }); } else { [ASUserInfoManager.shared getInfo]; } }); return; } NSDictionary *dic = @{ @"currentPassword": self.oldPassTf.text, @"newPassword": self.nPassTf.text, }; dispatch_group_enter(group); dispatch_group_async(group, queue, ^{ [ASNetTools.shared putWithPath:putUserPassword param:dic success:^(id _Nonnull json) { isPassSuc = true; dispatch_group_leave(group); } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) { [weakSelf.view makeToast:@"Bad Net"]; isPassSuc = false; dispatch_group_leave(group); }]; }); dispatch_group_notify(group, dispatch_get_main_queue(), ^{ [MBProgressHUD hideHUDForView:weakSelf.view animated:true]; BOOL flag = isInfoSuc; NSString *str = @"Successfully Change Information"; if (weakSelf.changePassBt.isSelected) { flag = isInfoSuc && isPassSuc; str = @"Successfully Change Information, Please Log In Again"; } if (!flag) { [ASUserInfoManager.shared getInfo]; return; } [ASHomeAlertWindow alertMsg:str]; if (weakSelf.changePassBt.isSelected) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [ASHomeAlertWindow clearWindow]; [weakSelf popAndToLogin]; }); } else { [ASUserInfoManager.shared getInfo]; } }); } - (void)textfieldDidChange:(UITextField *)tf { [self configBtState]; } - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { if ([self.birthTf isEqual:textField]) { BRDatePickerView *datePickerView = [[BRDatePickerView alloc]init]; datePickerView.pickerMode = BRDatePickerModeDate; datePickerView.title = @"Please Select The Date Of Birth"; datePickerView.selectDate = self.currentDate; datePickerView.minDate = [NSDate br_setYear:1900 month:1 day:1]; datePickerView.maxDate = [NSDate date]; datePickerView.isAutoSelect = YES; @weakify(self); datePickerView.resultBlock = ^(NSDate *selectDate, NSString *selectValue) { weak_self.currentDate = selectDate; NSDateFormatter *formartter= [[NSDateFormatter alloc]init]; [formartter setDateFormat:@"MM/dd/yyyy"]; NSString *currentDateStr = [formartter stringFromDate:selectDate]; weak_self.birthTf.text = currentDateStr; [weak_self configBtState]; NSLog(@"selectValue=%@", selectValue); NSLog(@"selectDate=%@", selectDate); NSLog(@"---------------------------------"); }; [datePickerView show]; return false; } return true; } @end