public async Task <IActionResult> PostFriendRequest([FromBody] FriendRequestContract friendRequestContract) { //TODO: create DataContract if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userId = _httpContextAccessor.CurrentUserId(); if (!friendRequestContract.InitiatorId.Equals(userId)) { return(Unauthorized()); } if (friendRequestContract.InitiatorId.Equals(friendRequestContract.TargetId)) { return(BadRequest(friendRequestContract.TargetId)); } var userExists = await _context.ApplicationUsers .AnyAsync(a => a.Id.Equals(friendRequestContract.TargetId)); var blocked = await _context.FriendRequests .AnyAsync(f => f.InitiatorId.Equals(friendRequestContract.TargetId) && f.TargetId.Equals(userId) && f.Type.HasValue && f.Type.Value.Equals(FriendRequestType.Blocked)); if (!userExists || blocked) { return(BadRequest(friendRequestContract.TargetId)); } var friend = await _context.FriendRequests .SingleOrDefaultAsync(f => f.InitiatorId.Equals(userId) && f.TargetId.Equals(friendRequestContract.TargetId)); DateTime timeStamp = DateTime.Now.ToUniversalTime(); if (friend != null) { friend.Type = friendRequestContract.Type; friend.TimeStamp = timeStamp; } else { FriendRequest fr = new FriendRequest() { InitiatorId = userId, TargetId = friendRequestContract.TargetId, TimeStamp = timeStamp, Type = friendRequestContract.Type }; await _context.FriendRequests.AddAsync(fr); } await _context.SaveChangesAsync(); //return CreatedAtAction("GetFriendRequest", new { id = friendRequestContract.TargetId }, friendRequest); return(Ok()); }
private async Task ContactSearchButtonTask(FriendViewCellModel fvcm) { var frc = new FriendRequestContract() { InitiatorId = _userSelf.Id, TargetId = fvcm.UserId, TimeStamp = DateTime.Now, Type = FriendRequestType.Normal }; await _friendRequestService.PostFriendRequestAsync(frc); ContactSearchRequestFriends.Remove(fvcm); fvcm.Status = FriendStatus.PendingRequest; PendingFriends.Add(fvcm); FilterGroupsBySearch(); }
private async Task PendingRequestButtonTask(FriendViewCellModel fvcm) { await Task.Delay(10); var contract = new FriendRequestContract() { InitiatorId = _userSelf.Id, TargetId = fvcm.UserId, TimeStamp = DateTime.Now, Type = FriendRequestType.Normal }; await _friendRequestService.PostFriendRequestAsync(contract); PendingFriends.Remove(fvcm); fvcm.Status = FriendStatus.Mutual; MutualFriends.Add(fvcm); FilterGroupsBySearch(); }
public async Task PostFriendRequestAsync(FriendRequestContract contract) { await _requestService.PostAsync("api/FriendRequest", contract); }