public async Task <IActionResult> RemoveBlack(RemoveBlackPostData postData)
        {
            string memberID = this.HttpContext.Session.GetObject <string>(CommonFlagHelper.CommonFlag.SessionFlag.MemberID);

            try
            {
                InteractiveDto interactiveDto = new InteractiveDto()
                {
                    MemberID      = memberID,
                    InteractiveID = postData.MemberID
                };
                ResponseResultDto responseResult = await this.memberService.RemoveBlack(interactiveDto);

                if (responseResult.Ok)
                {
                    return(Ok(responseResult.Data));
                }

                return(BadRequest(responseResult.Data));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Black Error >>> MemberID:{memberID} InteractiveID:{postData.MemberID}\n{ex}");
                return(BadRequest("移除黑名單發生錯誤."));
            }
        }
Beispiel #2
0
        /// <summary>
        /// 建立互動資料
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>InteractiveData</returns>
        private InteractiveData CreateInteractiveData(InteractiveDto interactiveDto, int status)
        {
            InteractiveData interactiveData = this.mapper.Map <InteractiveData>(interactiveDto);

            interactiveData.Status = status;
            return(interactiveData);
        }
        public async Task <IActionResult> SearchFriend(SearchFriendPostData postData)
        {
            string memberID = this.HttpContext.Session.GetObject <string>(CommonFlagHelper.CommonFlag.SessionFlag.MemberID);

            try
            {
                InteractiveDto interactiveDto = new InteractiveDto()
                {
                    MemberID  = memberID,
                    SearchKey = postData.Email
                };
                ResponseResultDto responseResult = await this.memberService.SearchFriend(interactiveDto);

                if (responseResult.Ok)
                {
                    return(Ok(responseResult.Data));
                }

                return(BadRequest(responseResult.Data));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Search Friend Error >>> MemberID:{memberID} Email:{postData.Email}\n{ex}");
                return(BadRequest("搜尋好友發生錯誤."));
            }
        }
Beispiel #4
0
        /// <summary>
        /// 搜尋好友
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>ResponseResultDto</returns>
        public async Task <ResponseResultDto> SearchFriend(InteractiveDto interactiveDto)
        {
            try
            {
                string postData = JsonConvert.SerializeObject(interactiveDto);
                HttpResponseMessage httpResponseMessage = await Utility.ApiPost(AppSettingHelper.Appsetting.ServiceDomain.Service, "api/Member/Friendship/SearchFriend", postData);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    return(new ResponseResultDto()
                    {
                        Ok = true,
                        Data = await httpResponseMessage.Content.ReadAsAsync <MemberSimpleInfoViewDto>()
                    });
                }

                return(new ResponseResultDto()
                {
                    Ok = false,
                    Data = await httpResponseMessage.Content.ReadAsAsync <string>()
                });
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Search Friend Error >>> MemberID:{interactiveDto.MemberID} SearchKey:{interactiveDto.SearchKey}\n{ex}");
                return(new ResponseResultDto()
                {
                    Ok = false,
                    Data = "搜尋好友發生錯誤."
                });
            }
        }
Beispiel #5
0
        /// <summary>
        /// 加入好友
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>string</returns>
        public async Task <string> JoinFriend(InteractiveDto interactiveDto)
        {
            try
            {
                if (string.IsNullOrEmpty(interactiveDto.MemberID))
                {
                    return("會員編號無效.");
                }

                if (string.IsNullOrEmpty(interactiveDto.InteractiveID))
                {
                    return("對方會員編號無效.");
                }

                InteractiveData interactiveData = await this.interactiveRepository.GetAppointInteractiveData(interactiveDto.MemberID, interactiveDto.InteractiveID);

                if (interactiveData == null)
                {
                    interactiveData = this.CreateInteractiveData(interactiveDto, (int)InteractiveType.Friend);
                    bool isSuccess = await this.interactiveRepository.CreateInteractiveData(interactiveData);

                    if (!isSuccess)
                    {
                        return("加入好友失敗.");
                    }
                }
                else
                {
                    if (interactiveData.Status != (int)InteractiveType.Friend)
                    {
                        interactiveData.Status = (int)InteractiveType.Friend;
                        bool updateInteractiveDataResult = await this.interactiveRepository.UpdateInteractiveData(interactiveData);

                        if (!updateInteractiveDataResult)
                        {
                            return("加入好友失敗.");
                        }
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Join Friend Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return("加入好友發生錯誤.");
            }
        }
Beispiel #6
0
        /// <summary>
        /// 移除好友
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>string</returns>
        public async Task <string> RemoveFriend(InteractiveDto interactiveDto)
        {
            try
            {
                if (string.IsNullOrEmpty(interactiveDto.MemberID))
                {
                    return("會員編號無效.");
                }

                if (string.IsNullOrEmpty(interactiveDto.InteractiveID))
                {
                    return("對方會員編號無效.");
                }

                InteractiveData interactiveData = await this.interactiveRepository.GetAppointInteractiveData(interactiveDto.MemberID, interactiveDto.InteractiveID);

                if (interactiveData == null)
                {
                    //// 不做處理,認定已移除好友
                    this.logger.LogWarning($"No Interactive Data For Remove Friend >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}");
                }
                else
                {
                    if (interactiveData.Status == (int)InteractiveType.Friend)
                    {
                        interactiveData.Status = (int)InteractiveType.None;
                        bool updateInteractiveDataResult = await this.interactiveRepository.UpdateInteractiveData(interactiveData);

                        if (!updateInteractiveDataResult)
                        {
                            return("移除好友失敗.");
                        }
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Friend Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return("移除好友發生錯誤.");
            }
        }
        public async Task <IActionResult> SearchFriend(InteractiveDto interactiveDto)
        {
            try
            {
                Tuple <MemberDto, string> result = await this.memberService.SearchFriend(interactiveDto);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Friend Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return(BadRequest("搜尋好友發生錯誤."));
            }
        }
        public async Task <IActionResult> RemoveFriend(InteractiveDto interactiveDto)
        {
            try
            {
                string result = await this.memberService.RemoveFriend(interactiveDto);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("移除好友成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Friend Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return(BadRequest("移除好友發生錯誤."));
            }
        }
        public async Task <IActionResult> JoinBlack(InteractiveDto interactiveDto)
        {
            try
            {
                string result = await this.memberService.JoinBlack(interactiveDto);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("加入黑名單成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Join Black Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return(BadRequest("加入黑名單發生錯誤."));
            }
        }
Beispiel #10
0
        /// <summary>
        /// 移除黑名單
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>ResponseResultDto</returns>
        public async Task <ResponseResultDto> RemoveBlack(InteractiveDto interactiveDto)
        {
            try
            {
                string postData = JsonConvert.SerializeObject(interactiveDto);
                HttpResponseMessage httpResponseMessage = await Utility.ApiPost(AppSettingHelper.Appsetting.ServiceDomain.Service, "api/Member/Friendship/RemoveBlack", postData);

                return(new ResponseResultDto()
                {
                    Ok = httpResponseMessage.IsSuccessStatusCode,
                    Data = await httpResponseMessage.Content.ReadAsAsync <string>()
                });
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Black Error >>> MemberID:{interactiveDto.MemberID} InteractiveID:{interactiveDto.InteractiveID}\n{ex}");
                return(new ResponseResultDto()
                {
                    Ok = false,
                    Data = "移除黑名單發生錯誤."
                });
            }
        }
Beispiel #11
0
        /// <summary>
        /// 搜尋好友
        /// </summary>
        /// <param name="interactiveDto">interactiveDto</param>
        /// <returns>Tuple(MemberDto, string)</returns>
        public async Task <Tuple <MemberDto, string> > SearchFriend(InteractiveDto interactiveDto)
        {
            try
            {
                if (string.IsNullOrEmpty(interactiveDto.MemberID))
                {
                    return(Tuple.Create <MemberDto, string>(null, "會員編號無效."));
                }

                if (string.IsNullOrEmpty(interactiveDto.SearchKey))
                {
                    return(Tuple.Create <MemberDto, string>(null, "請輸入搜尋條件."));
                }

                MemberData memberData = await this.memberRepository.GetMemberDataByEmail(interactiveDto.SearchKey);

                if (memberData == null)
                {
                    return(Tuple.Create <MemberDto, string>(null, "無會員資料."));
                }

                InteractiveData interactiveData = await this.interactiveRepository.GetAppointInteractiveData(interactiveDto.MemberID, memberData.MemberID);

                if (interactiveData != null && interactiveData.Status == (int)InteractiveType.Friend)
                {
                    return(Tuple.Create <MemberDto, string>(null, "已加入好友."));
                }

                return(Tuple.Create(this.mapper.Map <MemberDto>(memberData), string.Empty));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Search Friend Error >>> MemberID:{interactiveDto.MemberID} SearchKey:{interactiveDto.SearchKey}\n{ex}");
                return(Tuple.Create <MemberDto, string>(null, "搜尋好友發生錯誤."));
            }
        }