| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 | 
							- //
 
- //  ASEditAddressViewController.m
 
- //  Asteria
 
- //
 
- //  Created by iOS on 2024/5/8.
 
- //
 
- #import "ASEditAddressViewController.h"
 
- #import "ASAddressViewModel.h"
 
- #import "InTableScrollView.h"
 
- #import "KWTextField.h"
 
- #import <BRPickerView/BRPickerView.h>
 
- @interface ASEditAddressViewController () <UITextFieldDelegate>
 
- @property (nonatomic, strong) ASAddressViewModel *vm;
 
- @property (nonatomic, strong) InTableScrollView *scrollV;
 
- @property (nonatomic, strong) UIStackView *totalStackV;
 
- @property (nonatomic, strong) NSMutableArray<KWTextField *> *tfArr;
 
- @property (nonatomic, strong) NSMutableArray<UILabel *> *errLbArr;
 
- @property (nonatomic, strong) NSArray<NSString *> *placeHoldArr;
 
- @property (nonatomic, strong) NSArray<NSString *> *errDesArr;
 
- @property (nonatomic, strong) UIButton *billTypeBt;
 
- @property (nonatomic, strong) UIButton *shipTypeBt;
 
- @property (nonatomic, strong) UIButton *saveBt;
 
- @property (nonatomic, strong) UIButton *deletBt;
 
- @end
 
- @implementation ASEditAddressViewController
 
- -(ASAddressViewModel *)vm {
 
-     if (!_vm) {
 
-         _vm = [ASAddressViewModel new];
 
-     }
 
-     return _vm;
 
- }
 
- - (instancetype)init {
 
-     self = [super init];
 
-     if (self) {
 
-         __weak typeof(self) weakSelf = self;
 
-         [self.vm getCountryList:^{
 
-             [weakSelf.vm getProvinceList:weakSelf.m.country_id success:^{}];
 
-         }];
 
-     }
 
-     return self;
 
- }
 
- - (void)viewDidLoad {
 
-     [super viewDidLoad];
 
-     
 
-     [self setUI];
 
-     if (self.isEdit) {
 
-         [self setTitle:@"EDIT ADDRESS"];
 
-         
 
-         [self.vm getProvinceList:self.m.country_id success:^{}];
 
-         [self setEditDefualtData];
 
-         
 
-    
 
-     } else {
 
-         if (!self.m) {
 
-             self.m = [ASAddressModel defualtData];
 
-         } else {
 
-             [self.vm getProvinceList:self.m.country_id success:^{}];
 
-             [self setEditDefualtData];
 
-         }
 
-         [self setTitle: @"NEW ADDRESS"];
 
-         _deletBt.hidden = true;
 
-     }
 
-     if(self.isCartEdit){
 
- //        [self.saveBt setTitle:@"SAVE AND APPLY" forState:UIControlStateNormal];
 
-         [self.saveBt setTitle:@"Save" forState:UIControlStateNormal];
 
-     }
 
- }
 
- #pragma mark - **************** EditAddressTypeShippingNewAddress ****************
 
- - (void)xxx_tengteng_confignavBarBar{
 
-     self.navigationController.navigationBar.hidden = YES;
 
-     UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
 
-     [closeBtn setImage:[UIImage imageNamed:@"login_close_black"] forState:UIControlStateNormal];
 
-     [closeBtn addTarget:self action:@selector(xxx_closeVC) forControlEvents:UIControlEventTouchUpInside];
 
-     [self.view addSubview:closeBtn];
 
-     NSInteger top = IPHONEX ? 44 : 20;
 
-     closeBtn.frame = CGRectMake((KScreenWidth -44)/2, top, 44, 44);
 
-     
 
-     IPhoneXHeigh
 
-     [self.scrollV mas_remakeConstraints:^(MASConstraintMaker *make) {
 
-         make.left.right.equalTo(self.view);
 
-         make.top.mas_equalTo(securitytop_Y +10);
 
-         make.height.mas_equalTo(security_H -10);
 
-     }];
 
- }
 
- #pragma mark - **************** handle 触发事件****************
 
- -(void)xxx_closeVC{
 
-     [self dismissViewControllerAnimated:YES completion:nil];
 
- }
 
- - (void)setEditDefualtData {
 
-     NSArray<NSString *> *arr = @[STR(self.m.firstname),
 
-                                  STR(self.m.lastname),
 
-                                  STR(self.m.street.firstObject),
 
-                                  STR(self.m.postcode),
 
-                                  STR(self.m.city),
 
-                                  STR(self.m.country),
 
-                                  STR(self.m.region.region),
 
-                                  STR(self.m.telephone)
 
-     ];
 
-     
 
-     for (int i= 0 ; i<arr.count; i++) {
 
-         if (self.tfArr.count > i) {
 
-             self.tfArr[i].text = arr[i];
 
-         }
 
-     }
 
-     _billTypeBt.selected = false;
 
-     _shipTypeBt.selected = false;
 
-     switch (self.m.addressType) {
 
-         case 1:
 
-             [_billTypeBt setSelected:true];
 
-             break;
 
-         case 2:
 
-             [_shipTypeBt setSelected:true];
 
-             break;
 
-         case 3:
 
-             [_shipTypeBt setSelected:true];
 
-             [_billTypeBt setSelected:true];
 
-         default:
 
-             break;
 
-     }
 
-     
 
- }
 
- - (void)setData {
 
-     self.placeHoldArr = @[@"* FIRST NAME",
 
-                           @"* LAST NAME",
 
-                           @"* ADDRESS (NO ACCEPTING P0.BOX)",
 
-                           @"* ZIP/POSTAL CODE",
 
-                           @"* CITY",
 
-                           @"* COUNTY",
 
-                           @"* STATE/PROVINCE",
 
-                           @"* TELEPHONE"];
 
-     self.errDesArr = @[@"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory",
 
-                       @"*This Is Mandatory"];
 
-     
 
- }
 
- - (void)setUI {
 
-     self.tfArr = [NSMutableArray array];
 
-     self.errLbArr = [NSMutableArray array];
 
-     [self setData];
 
-     [self.view addSubview:self.scrollV];
 
-     IPhoneXHeigh
 
-     [self.scrollV mas_makeConstraints:^(MASConstraintMaker *make) {
 
-         make.left.right.equalTo(self.view);
 
-         make.top.mas_equalTo(securitytop_Y);
 
- //        make.top.equalTo(self.customNavBar.mas_bottom);
 
-         make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);
 
-     }];
 
-     
 
-     
 
-     
 
-     UIStackView *tStackV = [[UIStackView alloc] init];
 
-     tStackV.axis = UILayoutConstraintAxisVertical;
 
-     tStackV.alignment = UIStackViewAlignmentFill;
 
-     tStackV.distribution = UIStackViewDistributionFill;
 
-     tStackV.spacing = 16;
 
-     self.totalStackV = tStackV;
 
-     
 
-     UIStackView *topStackV = [[UIStackView alloc] init];
 
-     topStackV.axis = UILayoutConstraintAxisHorizontal;
 
-     topStackV.alignment = UIStackViewAlignmentFill;
 
-     topStackV.distribution = UIStackViewDistributionFillEqually;
 
-     topStackV.spacing = 20;
 
-     [self.totalStackV addArrangedSubview:topStackV];
 
-     
 
-     [self.tfArr removeAllObjects];
 
-     [self.errLbArr removeAllObjects];
 
-     for (int i = 0; i<self.placeHoldArr.count; i++) {
 
-         UIView *v = [UIView new];
 
-         v.backgroundColor = [UIColor clearColor];
 
-         UILabel *lb = [[UILabel alloc] init];
 
-         lb.font = [UIFont fontWithName:Rob_Regular size:12];
 
-         lb.textColor = [UIColor colorWithHexString:@"#E60013"];
 
-         lb.textAlignment = NSTextAlignmentCenter;
 
-         lb.tag = 70000 + i;
 
-         KWTextField *tf = [[KWTextField alloc] init];
 
-         tf.tag = 90000 + i;
 
-         if (i == 5 || i == 6) {
 
-             tf.delegate = self;
 
-         }
 
-         [v addSubview:tf];
 
-         [v addSubview:lb];
 
-         UIStackView *stackV = [[UIStackView alloc] init];
 
-         stackV.axis = UILayoutConstraintAxisVertical;
 
-         stackV.alignment = UIStackViewAlignmentFill;
 
-         stackV.distribution = UIStackViewDistributionFill;
 
-         stackV.spacing = 0;
 
-         [stackV addArrangedSubview:v];
 
-         lb.text = self.errDesArr[i];
 
-         lb.hidden = true;
 
-         tf.placeholder = self.placeHoldArr[i];
 
-         [v mas_makeConstraints:^(MASConstraintMaker *make) {
 
-             make.height.equalTo(@59);
 
-         }];
 
-         [tf mas_makeConstraints:^(MASConstraintMaker *make) {
 
-             make.left.top.right.equalTo(v);
 
-             make.height.equalTo(@45);
 
-         }];
 
-         [lb mas_makeConstraints:^(MASConstraintMaker *make) {
 
-             make.left.bottom.right.equalTo(v);
 
-             make.height.equalTo(@14);
 
-         }];
 
-         if (i == 0 || i == 1) {
 
-             [topStackV addArrangedSubview:stackV];
 
-         } else {
 
-             [self.totalStackV addArrangedSubview:stackV];
 
-         }
 
-         [self.tfArr addObject:tf];
 
-         [self.errLbArr addObject:lb];
 
-     }
 
-     
 
-     [self.scrollV addSubview:self.totalStackV];
 
-     [self.totalStackV mas_makeConstraints:^(MASConstraintMaker *make) {
 
-         make.top.equalTo(self.scrollV).offset(20);
 
-         make.left.equalTo(self.scrollV).offset(20);
 
-         make.right.equalTo(self.view).offset(-20);
 
-         make.bottom.equalTo(self.scrollV).offset(-20);
 
-         make.width.equalTo([NSNumber numberWithFloat:KScreenWidth-40]);
 
-     }];
 
-     
 
-     
 
-     NSMutableArray *btArr = [[NSMutableArray alloc]init];
 
-     if(self.isCartEdit){
 
- //        [btArr addObjectsFromArray:@[self.saveBt]];
 
-         [btArr addObjectsFromArray:@[self.billTypeBt, self.shipTypeBt, self.saveBt]];
 
-     }else{
 
-         [btArr addObjectsFromArray:@[self.billTypeBt, self.shipTypeBt, self.saveBt, self.deletBt]];
 
-     }
 
-     for (UIButton *bt in btArr) {
 
-         UIView * v = [UIView new];
 
-         v.backgroundColor = [UIColor clearColor];
 
-         [v addSubview:bt];
 
-         [self.totalStackV addArrangedSubview:v];
 
-         [v mas_makeConstraints:^(MASConstraintMaker *make) {
 
-             make.height.equalTo(bt == self.saveBt ? @45 : @30);
 
-         }];
 
-         [bt mas_makeConstraints:^(MASConstraintMaker *make) {
 
-             make.top.left.bottom.equalTo(v);
 
-             if (bt == self.saveBt || bt == self.deletBt) {
 
-                 make.right.equalTo(v);
 
-             } else {
 
-             }
 
-         }];
 
-         
 
-     }
 
-     
 
-     
 
-     
 
- }
 
- - (InTableScrollView *)scrollV {
 
-     if (!_scrollV) {
 
-         InTableScrollView *v = [[InTableScrollView alloc] init];
 
-         v.showsVerticalScrollIndicator = false;
 
-         v.showsHorizontalScrollIndicator = false;
 
-         v.alwaysBounceVertical = true;
 
-         v.backgroundColor = [UIColor whiteColor];
 
-         _scrollV = v;
 
-     }
 
-     return _scrollV;
 
- }
 
- - (UIButton *)billTypeBt {
 
-     if (!_billTypeBt) {
 
-         UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
 
-         [bt setImage:[UIImage imageNamed:@"login_selectRido"] forState:UIControlStateNormal];
 
-         [bt setImage:[UIImage imageNamed:@"login_selectRido_select"] forState:UIControlStateSelected];
 
-         [bt setTitle:@" SET TO THE DEFAULT BILLING ADDRESS" forState:UIControlStateNormal];
 
-         bt.titleLabel.font = [UIFont fontWithName:Rob_Regular size:12];
 
-         bt.selected = false;
 
-         [bt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
 
-         [bt addTarget:self action:@selector(typeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
 
-         _billTypeBt = bt;
 
-     }
 
-     return _billTypeBt;
 
- }
 
- - (UIButton *)shipTypeBt {
 
-     if (!_shipTypeBt) {
 
-         UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
 
-         [bt setImage:[UIImage imageNamed:@"login_selectRido"] forState:UIControlStateNormal];
 
-         [bt setImage:[UIImage imageNamed:@"login_selectRido_select"] forState:UIControlStateSelected];
 
-         [bt setTitle:@" SET TO THE DEFAULT SHIPPING ADDRESS" forState:UIControlStateNormal];
 
-         bt.titleLabel.font = [UIFont fontWithName:Rob_Regular size:12];
 
-         bt.selected = false;
 
-         [bt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
 
-         [bt addTarget:self action:@selector(typeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
 
-         _shipTypeBt = bt;
 
-     }
 
-     return _shipTypeBt;
 
- }
 
- - (void)typeButtonAction:(UIButton *)bt {
 
-     if ([bt isEqual:self.billTypeBt]) {
 
-         self.billTypeBt.selected = !self.billTypeBt.isSelected;
 
-     }
 
-     if ([bt isEqual:self.shipTypeBt]) {
 
-         self.shipTypeBt.selected = !self.shipTypeBt.selected;
 
-         
 
-     }
 
- }
 
- - (UIButton *)saveBt {
 
-     if (!_saveBt) {
 
-         UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
 
-         [bt setTitle:@"Save" forState:UIControlStateNormal];
 
-         bt.titleLabel.font = [UIFont fontWithName:Rob_Regular size:16];
 
-         [bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
 
-         [bt setBackgroundColor:[UIColor colorWithHexString:@"#000000"]];
 
-         bt.layer.cornerRadius = 4;
 
-         bt.layer.masksToBounds = true;
 
- //        bt.enabled = true;
 
-         [bt addTarget:self action:@selector(bottomBtAction) forControlEvents:UIControlEventTouchUpInside];
 
-         _saveBt = bt;
 
-     }
 
-     return _saveBt;
 
- }
 
- - (void)bottomBtAction {
 
-     [self uploadData];
 
- }
 
- - (UIButton *)deletBt {
 
-     if (!_deletBt) {
 
-         UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
 
-         NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"Delete"];
 
-         [attStr addAttributes:@{
 
-             NSFontAttributeName:[UIFont fontWithName:Rob_Regular size:14],
 
-             NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle),
 
-             NSUnderlineColorAttributeName:[UIColor colorWithHexString:@"#0B0B0B"]
 
-         } range:[attStr.string rangeOfString:attStr.string]];
 
-         [attStr setColor:[UIColor colorWithHexString:@"#0B0B0B"]];
 
-         [bt setAttributedTitle:attStr forState:UIControlStateNormal];
 
-         [bt addTarget:self action:@selector(deleteBtAction) forControlEvents:UIControlEventTouchUpInside];
 
-         _deletBt = bt;
 
-     }
 
-     return _deletBt;
 
- }
 
- -(void)deleteBtAction {
 
-     [MBProgressHUD showHUDAddedTo:self.view animated:true];
 
-     @weakify(self);
 
-     [self.vm deleteAnAddress:self.m complate:^(BOOL flag, NSString *msg) {
 
-         [MBProgressHUD hideHUDForView:weak_self.view animated:true];
 
-         NSString *str = flag ? @"Successed" : [NSString stringWithFormat:@"Faild, %@", msg];
 
-         [weak_self.view makeToast:[NSString  stringWithFormat:@"Delete %@", str]];
 
-         if (flag) {
 
-             
 
-             [weak_self.navigationController popViewControllerAnimated:true];
 
-         }
 
-     }];
 
- }
 
- - (void)uploadData {
 
-     BOOL hadError = false;
 
-     for (int i = 0; i<self.tfArr.count; i++) {
 
-         NSString *text = self.tfArr[i].text;
 
-         if (text && ![text isEqualToString:@""]) {
 
-             self.errLbArr[i].hidden = true;
 
-             switch (i) {
 
-                 case 0:
 
-                     self.m.firstname = text;
 
-                     break;
 
-                 case 1:
 
-                     self.m.lastname = text;
 
-                     break;
 
-                 case 2:
 
-                     self.m.street = [NSArray arrayWithObject: text];
 
-                     break;
 
-                 case 3:
 
-                     self.m.postcode = text;
 
-                     break;
 
-                 case 4:
 
-                     self.m.city = text;
 
-                     break;
 
-                 case 5:
 
-                     self.m.country = text;
 
-                     break;
 
-                 case 6:
 
-                     self.m.region.region = text;
 
-                     break;
 
-                 case 7:
 
-                     self.m.telephone = text;
 
-                     break;
 
-                     
 
-                 default:
 
-                     break;
 
-             }
 
-         } else {
 
-             hadError = true;
 
-             self.errLbArr[i].hidden = false;
 
-         }
 
-     }
 
-     
 
-     if (self.billTypeBt.isSelected) {
 
-         self.m.addressType = 1;
 
-     }
 
-     if (self.shipTypeBt.isSelected) {
 
-         self.m.addressType = 2;
 
-     }
 
-     if ((self.shipTypeBt.isSelected && self.billTypeBt.isSelected) || self.isCartEdit){
 
-         self.m.addressType = 3;
 
-     }
 
-     if (hadError) {
 
-         return;
 
-     }
 
-     [MBProgressHUD showHUDAddedTo:self.view animated:true];
 
-     __weak typeof(self) weak_self = self;
 
-     [self.vm upAddress:self.m complate:^(BOOL success, NSString * _Nonnull addressid) {
 
-         [MBProgressHUD hideHUDForView:weak_self.view animated:true];
 
-         if (success) {
 
-             [weak_self.view makeToast:@"Edit Successed"];
 
-             dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.5), dispatch_get_main_queue(), ^{
 
-                 if (weak_self.isCartEdit && weak_self.saveSuccess) {
 
-                     weak_self.saveSuccess(self.m);
 
-                 }
 
-                 [weak_self.navigationController popViewControllerAnimated:true];
 
-             });
 
-         } else {
 
-             [weak_self.view makeToast:addressid];
 
-         }
 
-         
 
-     }];
 
-     
 
- }
 
- - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
 
-     [self.view endEditing:true];
 
-     NSInteger tag = textField.tag-90000;
 
-     if (tag == 5) {//country
 
-         NSInteger index = 0;
 
-         for (int i=0;i<self.vm.countryArr.count; i++) {
 
-             KWCountryAddressModel *item = self.vm.countryArr[i];
 
-             if (item.country_id == self.m.country_id) {
 
-                 index = i;
 
-             }
 
-         }
 
-         @weakify(self);
 
-         [BRStringPickerView showPickerWithTitle:@"Select Country" dataSourceArr:self.vm.countryNameList selectIndex:index resultBlock:^(BRResultModel * _Nullable resultModel) {
 
-             KWCountryAddressModel *item = weak_self.vm.countryArr[resultModel.index];
 
-             weak_self.tfArr[6].text = @"";
 
-             textField.text = item.full_name_english;
 
-             weak_self.m.country = item.full_name_english;
 
-             weak_self.m.country_id = item.country_id;
 
-             weak_self.m.region = [ASAddressReginModel new];
 
-             weak_self.m.region.region = @"";
 
-             weak_self.m.region.region_id = @"";
 
-             weak_self.m.region.region_code = @"";
 
-             weak_self.m.region_id = @"";
 
-             [weak_self.vm getProvinceList:item.country_id success:^{}];
 
-             
 
-         }];
 
-     }
 
-     if (tag == 6) {// province
 
-         if (self.m.country_id && ![self.m.country_id isEqualToString:@""]) {
 
-             
 
-             if (self.vm.hadGetProvince && self.vm.provinceArr.count > 0) {
 
-                     [self showProvincePick];
 
-             } else {
 
-                 return true;
 
-             }
 
-         } else {
 
-             [self.view makeToast:@"Please Select Country First"];
 
-         }
 
-     }
 
-     return false;
 
- }
 
- - (void)showProvincePick {
 
-     NSInteger index = 0;
 
-     for (int i=0;i<self.vm.provinceArr.count; i++) {
 
-         KWProvinceAddressModel *item = self.vm.provinceArr[i];
 
-         if (item.Id == self.m.region_id) {
 
-             index = i;
 
-         }
 
-     }
 
-     @weakify(self);
 
-     [BRStringPickerView showPickerWithTitle:@"Select Province" dataSourceArr:self.vm.provinceNameList selectIndex:index resultBlock:^(BRResultModel * _Nullable resultModel) {
 
-         KWProvinceAddressModel *item = weak_self.vm.provinceArr[resultModel.index];
 
-         weak_self.m.region.region = item.name;
 
-         weak_self.m.region_id = item.Id;
 
-         weak_self.tfArr[6].text = item.name;
 
-     }];
 
- }
 
- @end
 
 
  |