Ver código fonte

- 마스터 권한 양도기능 작업 완료

KaRam Kim 8 anos atrás
pai
commit
2a20d5649f

+ 6 - 0
OneCable/Base.lproj/Localizable.strings

@@ -133,6 +133,12 @@
 "마스터" = "마스터";
 "멤버" = "멤버";
 
+"마스터 권한 양도" = "마스터 권한 양도";
+"마스터 권한 양도 취소" = "마스터 권한 양도 취소";
+
+"%@멤버에게\n마스터 권한을\n양도하시겠습니까?" = "%@멤버에게\n마스터 권한을\n양도하시겠습니까?";
+"%@멤버에게 신청된\n마스터 권한 양도를\n취소하시겠습니까?" = "%@멤버에게 신청된\n마스터 권한 양도를\n취소하시겠습니까?";
+
 //SignUp
 
 

+ 3 - 0
OneCable/Classes/Definitions.h

@@ -103,6 +103,9 @@ static NSString *kWebLinkServer = @"http://61.40.220.23:7794";      //운영
 #define API_DELETE_HOMEGROUP_MEMBERS        @"/homegrp_members"         //홈멤버 삭제 - 추가
 #define API_DELETE_HOMEGROUP_MEMBER         @"/homegrp_members/%@"         //홈멤버 삭제 - 자진 탈퇴
 
+#define API_PUT_HOMEGROUP_MASTER_TRANSFER  @"/customer/%@/group/%@/member/%@/master/grade" //마스터 권한 양도 변경 신청
+
+
 #define API_GET_HOMEGROUP_MEMBER_VALIDATE  @"/customer/%@/group/%@/member/%@/phone/%@"  //홈그룹 멤버 초대 유효성 체크
 #define API_POST_HOMEGROUP_UPDATE_IMAGE     @"/homegrp/update_image"        //홈그룹 이미지 수정
 #define API_GET_HOMEGROUP_MEMBER_INVITATIONS    @"/homegrp_members/invitations" //홈그룹 초대 목록 조회

+ 1 - 3
OneCable/Classes/Model/LoginModel.h

@@ -51,13 +51,11 @@
 @interface HomeMemberModel : JDJSONModel
 
 @property (copy, nonatomic) NSString *memberTypeCode;
-@property (copy, nonatomic) NSString *invitation;
 @property (copy, nonatomic) NSString *nickname;
 @property (copy, nonatomic) NSString *imageFileName;
 @property (copy, nonatomic) NSString *gradeCode;
-@property (copy, nonatomic) NSString *gradeCodeName;
 @property (copy, nonatomic) NSString *memberId;
-@property (copy, nonatomic) NSString *invitationHistId;
+@property (copy, nonatomic) NSString *permissionTransferFlag;
 
 //temp
 @property (strong, nonatomic) NSString *targetEmail;

+ 121 - 12
OneCable/Classes/ViewControllers/HomeMemberScreens/HomeMemberViewController.m

@@ -27,6 +27,9 @@
 #define kiCellRatio 74
 #define kiCellDivision 3
 
+#define MASTER_TRANSFER_REQUEST @"R"
+#define MASTER_TRANSFER_CANCEL  @"C"
+
 /**
  
  Head Text
@@ -69,7 +72,7 @@
     NSArray<HomeMemberModel> *_memberList;
     HomeMemberListModel *_responseInfo;
     
-    BOOL _isNotFirstLoading, _isDeleteMode;
+    BOOL _isNotFirstLoading, _isDeleteMode, _isMasterTransferMode;
     NSInteger _deviceFlag;
     NSString *_masterNickname;
 }
@@ -272,7 +275,8 @@
         [_lblTitle setColor:kUITextColor03 text:[NSString stringWithFormat:@"초대 %zd", invitationCount]];
         [_lblTitle setColor:kUITextColor01 text:@"/ 초대"];
     }
-    
+    _btnClose.hidden = YES;
+    _btnOption.hidden = NO;
     [self setMoreBtnArray];
 }
 
@@ -288,7 +292,13 @@
 }
 
 - (IBAction)btnCloseTouched:(id)sender {
-    
+    if (_isDeleteMode) {
+        [self toggleEditMode];
+    }
+    if (_isMasterTransferMode) {
+        [self toggleMasterTransferMode];
+    }
+        
 }
 
 - (NSInteger)getNormalMemberCount
@@ -322,6 +332,47 @@
     [self presentViewController:vc animated:YES completion:nil];
 }
 
+- (void)toggleMasterTransferMode {
+    _isMasterTransferMode = !_isMasterTransferMode;
+    if(!_isMasterTransferMode) {
+        [self updateTitle];
+    } else {
+        BOOL isToggle = YES;
+        HomeMemberModel *requestMember;
+        for (HomeMemberModel *memberInfo in _memberList) {
+            if ([memberInfo.permissionTransferFlag isEquestToIgnoreCase:MASTER_TRANSFER_REQUEST]) {
+                requestMember = memberInfo;
+                isToggle = NO;
+            }
+        }
+        
+        if (isToggle) {
+            _lblTitle.text = @"마스터 권한을 양도할 멤버 선택";
+            _imgvHubAlert.hidden = YES;
+            _btnClose.hidden = NO;
+            _btnOption.hidden = YES;
+        }
+        else {
+            NSString *name = requestMember.nickname;
+            if ([requestMember.nickname isEmptyString]) {
+                name = requestMember.memberId;
+            }
+            
+            NSString *msg = [NSString stringWithFormat:NSLocalizedString(@"%@멤버에게 신청된\n마스터 권한 양도를\n취소하시겠습니까?", @""), name];
+            
+            [[JDFacade facade] confirmTitle:NSLocalizedString(@"마스터 권한 양도 취소", @"마스터 권한 양도 취소") message:msg completion:^(CustomAlertView *alertView, NSInteger buttonIndex) {
+                if (buttonIndex == 0) {
+                    [self requestMasterTransfer:requestMember.memberId isRequest:NO];
+                }
+            }];
+        }
+            
+        
+    }
+    [_collectionView reloadData];
+        
+}
+
 - (void)toggleEditMode {
     _isDeleteMode = !_isDeleteMode;
     
@@ -334,14 +385,17 @@
     } else {
         _lblTitle.text = @"멤버 삭제";
         _imgvHubAlert.hidden = YES;
+        _btnClose.hidden = NO;
+        _btnOption.hidden = YES;
     }
     
     [_collectionView reloadData];
-    _constraintEditModeRight.constant = _isDeleteMode ? 0 : -_editModeView.width;
-    
-    [UIView animateWithDuration:kfAnimationDur animations:^{
-        [self.view layoutIfNeeded];
-    }];
+
+//    _constraintEditModeRight.constant = _isDeleteMode ? 0 : -_editModeView.width;
+//    
+//    [UIView animateWithDuration:kfAnimationDur animations:^{
+//        [self.view layoutIfNeeded];
+//    }];
 }
 
 - (void)leaveHomegroup {
@@ -430,6 +484,30 @@
     [self updateTitle];
 }
 
+- (void)requestMasterTransfer:(NSString *)memberId isRequest:(BOOL)isRequst{
+    NSMutableDictionary *parameter = [NSMutableDictionary dictionary];
+    if (isRequst) {
+        parameter[@"after_member_id"] = memberId;
+        parameter[@"status"] = MASTER_TRANSFER_REQUEST;
+    }
+    else {
+        parameter[@"status"] = MASTER_TRANSFER_CANCEL;
+    }
+    
+    NSString *path = [[JDFacade facade] getUrlWithCustGroupIDAndMemberID:API_PUT_HOMEGROUP_MASTER_TRANSFER];
+    
+    [[RequestHandler handler] sendAsyncPutRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
+        
+        [self toggleMasterTransferMode];
+        [self requestHomeMemberList];
+        
+    } failure:^(id errorObject) {
+        JDErrorModel *error = (JDErrorModel *)errorObject;
+        [[JDFacade facade] alert:error.errorMessage];
+    }];
+    
+}
+
 - (void)requestDeleteMembers:(NSString *)memberIds invitations:(NSString *)invitations {
     
     //parameters
@@ -525,13 +603,19 @@
             [cell.lblStatus setColor:kUITextColor01 text:cell.lblStatus.text];
         }
 
-        cell.chkSelect.hidden = !(_isDeleteMode && [member.gradeCode isEqualToString:KNEET_MEMBER_SIMPLE] && _memberList.count > 1);
         cell.chkSelect.value = member;
-        cell.chkSelect.checked = [cell.chkSelect getCheckStatusFromValue];
+        cell.btnDelete.value = member;
+        
+        cell.chkSelect.hidden = !(_isMasterTransferMode && [member.gradeCode isEqualToString:KNEET_MEMBER_SIMPLE] && _memberList.count > 1);
+        cell.chkSelect.value = member;
+//        cell.chkSelect.checked = [cell.chkSelect getCheckStatusFromValue];
         
-        cell.btnDelete.hidden = !(_isDeleteMode && [member.gradeCode isEqualToString:KNEET_MEMBER_SIMPLE] && _memberList.count > 1);
+        cell.btnDelete.hidden = !(_isDeleteMode && ![member.gradeCode isEqualToString:KNEET_MEMBER_MASTER] && _memberList.count > 1);
         cell.btnDelete.value = member;
         
+        [cell.chkSelect addTarget:self action:@selector(btnTransferMaster:) forControlEvents:UIControlEventTouchUpInside];
+        [cell.btnDelete addTarget:self action:@selector(btnTransferMaster:) forControlEvents:UIControlEventTouchUpInside];
+        
         rcell = cell;
     } else {
         HomeMemberAddCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"AddCollectionCellIdentifier" forIndexPath:indexPath];
@@ -599,7 +683,8 @@
                 
             } else if ([member.memberTypeCode isEqualToString:KNEET_MEMBER_TYPE_INV]) {//초대중일 경우,
                 NSString *prefix = [invitationHistIds isEmptyString] ? ksEmptyString : @",";
-                [invitationHistIds appendFormat:@"%@%@", prefix, member.invitationHistId];
+//                [invitationHistIds appendFormat:@"%@%@", prefix, member.invitationHistId];
+                // TODO : 초대중일 경우에 처리하기
             }
         }
     }
@@ -632,6 +717,29 @@
 //    [_selectedCoverIcon faceOffImage];
 //}
 
+- (void)btnTransferMaster:(id)sender {
+    HomeMemberModel *memberInfo = (HomeMemberModel *) ((CustomCheckBox *)sender).value;
+    NSLog(@"Member Info : %@", memberInfo);
+    
+    NSString *name = memberInfo.nickname;
+    if ([memberInfo.nickname isEmptyString]) {
+        name = memberInfo.memberId;
+    }
+    
+    NSString *msg = [NSString stringWithFormat:NSLocalizedString(@"%@멤버에게\n마스터 권한을\n양도하시겠습니까?", @""), name];
+    
+    [[JDFacade facade] confirmTitle:NSLocalizedString(@"마스터 권한 양도", @"마스터 권한 양도") message:msg completion:^(CustomAlertView *alertView, NSInteger buttonIndex) {
+        if (buttonIndex == 0) {
+            [self requestMasterTransfer:memberInfo.memberId isRequest:YES];
+        }
+    }];
+}
+
+- (void)btnDeleteMember:(id)sender {
+    HomeMemberModel *memberInfo = (HomeMemberModel *) ((CustomButton *)sender).value;
+    NSLog(@"Member Info : %@", memberInfo);
+}
+
 #pragma mark - MoreButtonDelegate
 -(void)moreBtnAction:(id)sender
 {
@@ -641,6 +749,7 @@
         case MasterTransfer:
         {
             // TODO : 마스터 권한 양도 모드로 진입
+            [self toggleMasterTransferMode];
         }
             break;
         case AddMember: