private dynamic OnFriendRequestReply(dynamic arg) { var helper = new SerializeHelper(); var requestReply = helper.DeserializeObject <FriendRequestReply>(Request.Body); $"Got a friend request reply from { requestReply.Request.TargetAccount.Name } to { requestReply.Request.RequesterAccount.Name }" .WriteToConsole(); Guid senderId = requestReply.Id; SessionAuth clientAuth = Request.Headers.GetSessionAuth(); if (!AccountStateService.Instance.IsAuthorized(senderId, clientAuth.ClientToken)) { throw new ClientNotAuthorizedException(senderId); } AccountStateService stateService = AccountStateService.Instance; UserInformerService informerService = UserInformerService.Instance; FriendRequestService friendRequestService = FriendRequestService.Instance; ComplexFriendRequest processedRequest = friendRequestService.ReplyToRequest(requestReply); Task.Run(() => { informerService.NotifyUserAboutFriendReply(requestReply.Request.RequesterAccount.Id, requestReply); }); requestReply.EstablishedDate = processedRequest.DecisionDate; var serialized = helper.Serialize(requestReply); return(serialized); }
private dynamic OnSearchFriendRequestRequest(dynamic arg) { var searchRequest = new SerializeHelper().DeserializeObject <SearchRequest>(Request.Body); SearchEntity searchEntity = searchRequest.Entity; if (searchEntity != SearchEntity.IncomingFriendRequests && searchEntity != SearchEntity.OutgoingFriendRequests) { throw new InvalidOperationException($"Search entity '{ searchEntity }' must not be sent to this controller"); } AccountStateService stateService = AccountStateService.Instance; FriendRequestService requestService = FriendRequestService.Instance; SessionAuth clientAuth = Request.Headers.GetSessionAuth(); if (!stateService.IsAuthorized(searchRequest.SenderId, clientAuth.ClientToken)) { throw new ClientNotAuthorizedException(searchRequest.SenderId); } IEnumerable <ComplexFriendRequest> requests = searchEntity == SearchEntity.IncomingFriendRequests ? requestService.GetIncomingRequests(searchRequest.SenderId) : requestService.GetOutgoingRequests(searchRequest.SenderId); IEnumerable <FriendRequest> clientModels = requests.Select(complexModel => complexModel.ToSimple()); string serialized = new SerializeHelper().Serialize(clientModels); return(serialized); }