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.")); }
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, "成功的完成了这个好友请求.")); }
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." })); }
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." })); }
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." })); }