コード例 #1
0
        public async Task <IActionResult> CompleteRequest(CompleteRequestAddressModel model)
        {
            var user = await GetKahlaUser();

            var request = await _dbContext.Requests.FindAsync(model.Id);

            if (request == null)
            {
                return(this.Protocal(ErrorType.NotFound, "We can not find target request."));
            }
            if (request.TargetId != user.Id)
            {
                return(this.Protocal(ErrorType.Unauthorized, "The target user of this request is not you."));
            }
            if (request.Completed == true)
            {
                return(this.Protocal(ErrorType.HasDoneAlready, "The target request is already completed."));
            }
            request.Completed = true;
            if (model.Accept)
            {
                if (await _dbContext.AreFriends(request.CreatorId, request.TargetId))
                {
                    await _dbContext.SaveChangesAsync();

                    return(this.Protocal(ErrorType.RequireAttention, "You two are already friends."));
                }
                _dbContext.AddFriend(request.CreatorId, request.TargetId);
                await _pusher.FriendAcceptedEvent(request.CreatorId);
            }
            await _dbContext.SaveChangesAsync();

            return(this.Protocal(ErrorType.Success, "You have successfully completed this request."));
        }
コード例 #2
0
        public async Task <IActionResult> CompleteRequest(CompleteRequestAddressModel model)
        {
            var user = await _userManager.GetUserAsync(User);

            var request = await _dbContext.Requests.FindAsync(model.Id);

            if (request == null)
            {
                return(this.Protocol(ErrorType.NotFound, "无法找到对应的好友请求."));
            }
            if (request.TargetId != user.Id)
            {
                return(this.Protocol(ErrorType.Unauthorized, "对应的好友请求的对象不是你."));
            }
            if (request.Completed)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "这个好友请求已经完成了."));
            }
            request.Completed = true;
            if (model.Accept)
            {
                if (await _dbContext.AreFriends(request.CreatorId, request.TargetId))
                {
                    await _dbContext.SaveChangesAsync();

                    return(this.Protocol(ErrorType.RequireAttention, "你们两个已经是朋友了."));
                }
                _dbContext.AddFriend(request.CreatorId, request.TargetId);
                await _pusher.FriendAcceptedEvent(request.CreatorId);
            }
            await _dbContext.SaveChangesAsync();

            return(this.Protocol(ErrorType.Success, "成功的完成了这个好友请求."));
        }
コード例 #3
0
        public async Task <IActionResult> CompleteRequest(CompleteRequestAddressModel model)
        {
            var user = await GetKahlaUser();

            var request = await _dbContext
                          .Requests
                          .Include(t => t.Creator)
                          .ThenInclude(t => t.HisDevices)
                          .Include(t => t.Target)
                          .ThenInclude(t => t.HisDevices)
                          .SingleOrDefaultAsync(t => t.Id == model.Id);

            if (request == null)
            {
                return(this.Protocol(ErrorType.NotFound, "We can not find target request."));
            }
            if (request.TargetId != user.Id)
            {
                return(this.Protocol(ErrorType.Unauthorized, "The target user of this request is not you."));
            }
            if (request.Completed)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "The target request is already completed."));
            }
            PrivateConversation newConversation = null;

            newConversation = await AcceptRequest(request, model.Accept);

            return(Json(new AiurValue <int?>(newConversation?.Id)
            {
                Code = ErrorType.Success,
                Message = "You have successfully completed this request."
            }));
        }
コード例 #4
0
        public async Task <IActionResult> CompleteRequest(CompleteRequestAddressModel model)
        {
            var user = await GetKahlaUser();

            var request = await _dbContext
                          .Requests
                          .Include(t => t.Creator)
                          .ThenInclude(t => t.HisDevices)
                          .Include(t => t.Target)
                          .ThenInclude(t => t.HisDevices)
                          .SingleOrDefaultAsync(t => t.Id == model.Id);

            if (request == null)
            {
                return(this.Protocol(ErrorType.NotFound, "We can not find target request."));
            }
            if (request.TargetId != user.Id)
            {
                return(this.Protocol(ErrorType.Unauthorized, "The target user of this request is not you."));
            }
            if (request.Completed)
            {
                var conversation = _dbContext.FindConversationAsync(request.TargetId, request.CreatorId);
                if (conversation != null)
                {
                    return(this.Protocol(new AiurValue <int?>(conversation.Id)
                    {
                        Code = ErrorType.HasSuccessAlready,
                        Message = $"You have already completed this request and the conversation with ID: '{conversation.Id}' still exists."
                    }));
                }
                return(this.Protocol(new AiurValue <int?>(null)
                {
                    Code = ErrorType.HasSuccessAlready,
                    Message = "You have already completed this request. Created conversation was deleted."
                }));
            }
            var newConversation = await AcceptRequest(request, model.Accept);

            return(this.Protocol(new AiurValue <int?>(newConversation?.Id)
            {
                Code = ErrorType.Success,
                Message = "You have successfully completed this request."
            }));
        }
コード例 #5
0
ファイル: FriendshipController.cs プロジェクト: ploxolq/Kahla
        public async Task <IActionResult> CompleteRequest(CompleteRequestAddressModel model)
        {
            var user = await GetKahlaUser();

            var request = await _dbContext
                          .Requests
                          .Include(t => t.Creator)
                          .ThenInclude(t => t.HisDevices)
                          .Include(t => t.Target)
                          .ThenInclude(t => t.HisDevices)
                          .SingleOrDefaultAsync(t => t.Id == model.Id);

            if (request == null)
            {
                return(this.Protocol(ErrorType.NotFound, "We can not find target request."));
            }
            if (request.TargetId != user.Id)
            {
                return(this.Protocol(ErrorType.Unauthorized, "The target user of this request is not you."));
            }
            if (request.Completed)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "The target request is already completed."));
            }
            request.Completed = true;
            PrivateConversation newConversation = null;

            if (model.Accept)
            {
                if (await _dbContext.AreFriends(request.CreatorId, request.TargetId))
                {
                    await _dbContext.SaveChangesAsync();

                    return(this.Protocol(ErrorType.RequireAttention, "You two are already friends."));
                }
                newConversation = _dbContext.AddFriend(request.CreatorId, request.TargetId);
                await _dbContext.SaveChangesAsync();
            }
            else
            {
                await _dbContext.SaveChangesAsync();
            }
            await Task.WhenAll(
                _pusher.FriendsChangedEvent(
                    request.Creator,
                    request,
                    model.Accept,
                    newConversation?.Build(request.CreatorId, _onlineJudger) as PrivateConversation),
                _pusher.FriendsChangedEvent(
                    request.Target,
                    request,
                    model.Accept,
                    newConversation?.Build(request.TargetId, _onlineJudger) as PrivateConversation)
                );

            return(Json(new AiurValue <int?>(newConversation?.Id)
            {
                Code = ErrorType.Success,
                Message = "You have successfully completed this request."
            }));
        }