/// <summary> /// 驗證互動指令資料 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <param name="isVerifyInitiator">isVerifyInitiator</param> /// <param name="isVerifyReceiver">isVerifyReceiver</param> /// <returns>bool</returns> private bool VerifyInteractiveCommand(InteractiveCommandDto interactiveCommand, bool isVerifyInitiator, bool isVerifyReceiver) { if (interactiveCommand == null) { return(false); } if (isVerifyInitiator) { if (string.IsNullOrEmpty(interactiveCommand.InitiatorID)) { return(false); } } if (isVerifyReceiver) { if (string.IsNullOrEmpty(interactiveCommand.ReceiverID)) { return(false); } } return(true); }
/// <summary> /// 取得會員互動狀態 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>Tuple(int, string)</returns> public async Task <Tuple <int, string> > GetMemberInteractiveStatus(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, true); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Get Member Interactive Status Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}"); return(Tuple.Create((int)InteractiveStatusType.None, "取得會員互動狀態失敗.")); } InteractiveData receiverInteractiveData = await this.GetInteractiveData(interactiveCommand.ReceiverID, false); if (receiverInteractiveData != null) { if (receiverInteractiveData.BlacklistIDs.Contains(interactiveCommand.InitiatorID)) { return(Tuple.Create((int)InteractiveStatusType.None, "對方已設該會員為黑名單.")); } if (receiverInteractiveData.FriendListIDs.Contains(interactiveCommand.InitiatorID)) { return(Tuple.Create((int)InteractiveStatusType.Friend, string.Empty)); } if (receiverInteractiveData.RequestListIDs.Contains(interactiveCommand.InitiatorID)) { return(Tuple.Create((int)InteractiveStatusType.Request, string.Empty)); } } InteractiveData initiatorInteractiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, true); if (initiatorInteractiveData != null) { if (initiatorInteractiveData.BlacklistIDs.Contains(interactiveCommand.ReceiverID)) { return(Tuple.Create((int)InteractiveStatusType.Black, string.Empty)); } if (initiatorInteractiveData.FriendListIDs.Contains(interactiveCommand.ReceiverID)) { return(Tuple.Create((int)InteractiveStatusType.Friend, string.Empty)); } if (initiatorInteractiveData.RequestListIDs.Contains(interactiveCommand.ReceiverID)) { return(Tuple.Create((int)InteractiveStatusType.RequestHandler, string.Empty)); } } return(Tuple.Create((int)InteractiveStatusType.None, string.Empty)); } catch (Exception ex) { this.logger.LogError($"Get Member Interactive Status Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return(Tuple.Create((int)InteractiveStatusType.None, "取得會員互動狀態發生錯誤.")); } }
/// <summary> /// 加入黑名單 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>string</returns> public async Task <string> AddBlacklist(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, true); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Add Blacklist Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}"); return("加入黑名單失敗."); } //// 處理發起者互動資料 InteractiveData initiatorInteractiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, true); if (initiatorInteractiveData == null) { this.logger.LogError($"Add Blacklist Fail For Get Interactive Data >>> InitiatorID:{interactiveCommand.InitiatorID}"); return("加入黑名單失敗."); } bool updateInitiatorBlacklistResult = this.UpdateListHandler(initiatorInteractiveData.BlacklistIDs, interactiveCommand.ReceiverID, true); bool updateInitiatorFriendListResult = this.UpdateListHandler(initiatorInteractiveData.FriendListIDs, interactiveCommand.ReceiverID, false); bool updateInitiatorRequestListResult = this.UpdateListHandler(initiatorInteractiveData.RequestListIDs, interactiveCommand.ReceiverID, false); if (updateInitiatorBlacklistResult || updateInitiatorFriendListResult || updateInitiatorRequestListResult) { bool initiatorUpdateResult = await this.interactiveRepository.UpdateInteractiveData(initiatorInteractiveData); if (!initiatorUpdateResult) { return("黑名單更新失敗."); } } //// 處理接收者互動資料 InteractiveData receiverInteractiveData = await this.GetInteractiveData(interactiveCommand.ReceiverID, false); if (receiverInteractiveData != null) { bool updateReceiverFriendListResult = this.UpdateListHandler(receiverInteractiveData.FriendListIDs, interactiveCommand.InitiatorID, false); bool updateReceiverRequestListResult = this.UpdateListHandler(receiverInteractiveData.RequestListIDs, interactiveCommand.InitiatorID, false); if (updateReceiverFriendListResult || updateReceiverRequestListResult) { bool receiverUpdateResult = await this.interactiveRepository.UpdateInteractiveData(receiverInteractiveData); if (!receiverUpdateResult) { return("黑名單更新失敗."); } } } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Add Blacklist Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return("加入黑名單發生錯誤."); } }
/// <summary> /// 刪除好友 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>string</returns> public async Task <string> DeleteFriend(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, true); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Delete Friend Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}"); return("刪除好友失敗."); } InteractiveData initiatorInteractiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, false); if (initiatorInteractiveData == null) { this.logger.LogError($"Delete Friend Fail For Get Initiator Interactive Data >>> InitiatorID:{interactiveCommand.InitiatorID}"); return("刪除好友失敗."); } InteractiveData receiverInteractiveData = await this.GetInteractiveData(interactiveCommand.ReceiverID, false); if (receiverInteractiveData == null) { this.logger.LogError($"Delete Friend Fail For Get Receiver Interactive Data >>> ReceiverID:{interactiveCommand.ReceiverID}"); return("刪除好友失敗."); } //// 更新發起者互動資料 bool updateInitiatorFriendListResult = this.UpdateListHandler(initiatorInteractiveData.FriendListIDs, interactiveCommand.ReceiverID, false); if (updateInitiatorFriendListResult) { bool initiatorUpdateResult = await this.interactiveRepository.UpdateFriendList(initiatorInteractiveData.MemberID, initiatorInteractiveData.FriendListIDs); if (!initiatorUpdateResult) { return("好友名單更新失敗."); } } //// 更新接收者互動資料 bool updateReceiverFriendListResult = this.UpdateListHandler(receiverInteractiveData.FriendListIDs, interactiveCommand.InitiatorID, false); if (updateReceiverFriendListResult) { bool receiverUpdateResult = await this.interactiveRepository.UpdateFriendList(receiverInteractiveData.MemberID, receiverInteractiveData.FriendListIDs); if (!receiverUpdateResult) { return("好友名單更新失敗."); } } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Delete Friend Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return("刪除好友發生錯誤."); } }
/// <summary> /// 加入好友請求 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>string</returns> public async Task <string> AddFriendRequest(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, true); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Add Friend Request Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}"); return("加入好友請求失敗."); } //// 驗證發送加入好友請求資格 InteractiveData initiatorInteractiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, true); if (initiatorInteractiveData == null) { this.logger.LogError($"Add Friend Request Fail For Get Initiator Interactive Data >>> InitiatorID:{interactiveCommand.InitiatorID}"); return("加入好友請求失敗."); } InteractiveData receiverInteractiveData = await this.GetInteractiveData(interactiveCommand.ReceiverID, true); if (receiverInteractiveData == null) { this.logger.LogError($"Add Friend Request Fail For Get Receiver Interactive Data >>> ReceiverID:{interactiveCommand.ReceiverID}"); return("加入好友請求失敗."); } bool verifyFriendRequestQualificationResult = this.VerifyFriendRequestQualification(initiatorInteractiveData, receiverInteractiveData); if (!verifyFriendRequestQualificationResult) { return("加入好友請求失敗."); } //// 更新接收者互動資料 bool updateReceiveRequestListResult = this.UpdateListHandler(receiverInteractiveData.RequestListIDs, interactiveCommand.InitiatorID, true); if (updateReceiveRequestListResult) { bool receiverUpdateResult = await this.interactiveRepository.UpdateRequestList(receiverInteractiveData.MemberID, receiverInteractiveData.RequestListIDs); if (!receiverUpdateResult) { return("加入好友請求名單更新失敗."); } } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Add Friend Request Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return("加入好友請求發生錯誤."); } }
public async Task <IActionResult> Post(InteractiveCommandDto interactiveCommand) { try { string result = await this.interactiveService.DeleteBlacklist(interactiveCommand); if (string.IsNullOrEmpty(result)) { return(Ok("刪除黑名單成功.")); } return(BadRequest(result)); } catch (Exception ex) { this.logger.LogError($"Delete Blacklist Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return(BadRequest("刪除黑名單發生錯誤.")); } }
public async Task <IActionResult> Post(InteractiveCommandDto interactiveCommand) { try { Tuple <IEnumerable <string>, string> result = await this.interactiveService.GetAddFriendRequestList(interactiveCommand); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Get Add Friend Request List Error >>> InitiatorID:{interactiveCommand.InitiatorID}\n{ex}"); return(BadRequest("取得加入好友請求名單發生錯誤.")); } }
public async Task <IActionResult> Post(InteractiveCommandDto interactiveCommand) { try { Tuple <int, string> result = await this.interactiveService.GetMemberInteractiveStatus(interactiveCommand); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Get Member Interactive Status Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return(BadRequest("取得會員互動狀態發生錯誤.")); } }
public async Task <IActionResult> Add(InteractiveCommandDto interactiveCommand) { try { string result = await this.interactiveService.AddFriend(interactiveCommand); if (string.IsNullOrEmpty(result)) { return(Ok("加入好友成功.")); } return(BadRequest(result)); } catch (Exception ex) { this.logger.LogError($"Add Friend Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return(BadRequest("加入好友發生錯誤.")); } }
/// <summary> /// 取得好友名單 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>Tuple(strings, string)</returns> public async Task <Tuple <IEnumerable <string>, string> > GetFriendList(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, false); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Get Friend List Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID}"); return(Tuple.Create <IEnumerable <string>, string>(null, "取得好友名單失敗.")); } InteractiveData interactiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, false); return(Tuple.Create(interactiveData == null ? null : interactiveData.FriendListIDs, string.Empty)); } catch (Exception ex) { this.logger.LogError($"Get Friend List Error >>> InitiatorID:{interactiveCommand.InitiatorID}\n{ex}"); return(Tuple.Create <IEnumerable <string>, string>(null, "取得好友名單發生錯誤.")); } }
/// <summary> /// 刪除黑名單 /// </summary> /// <param name="interactiveCommand">interactiveCommand</param> /// <returns>string</returns> public async Task <string> DeleteBlacklist(InteractiveCommandDto interactiveCommand) { try { bool verifyInteractiveCommandResult = this.VerifyInteractiveCommand(interactiveCommand, true, true); if (!verifyInteractiveCommandResult) { this.logger.LogError($"Delete Blacklist Fail For Verify InteractiveCommand >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}"); return("刪除黑名單失敗."); } InteractiveData interactiveData = await this.GetInteractiveData(interactiveCommand.InitiatorID, false); if (interactiveData == null) { this.logger.LogError($"Delete Blacklist Fail For Get Interactive Data >>> InitiatorID:{interactiveCommand.InitiatorID}"); return("刪除黑名單失敗."); } bool updateInitiatorBlacklistResult = this.UpdateListHandler(interactiveData.BlacklistIDs, interactiveCommand.ReceiverID, false); if (updateInitiatorBlacklistResult) { bool updateBlacklistResult = await this.interactiveRepository.UpdateBlacklist(interactiveData.MemberID, interactiveData.BlacklistIDs); if (!updateBlacklistResult) { return("黑名單更新失敗."); } } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Delete Blacklist Error >>> InitiatorID:{interactiveCommand.InitiatorID} ReceiverID:{interactiveCommand.ReceiverID}\n{ex}"); return("刪除黑名單發生錯誤."); } }