private void SaveCall(Database.Entities.CallRequest callRequest) { using (var database = new RozmawiatorDb()) { database.CallRequests.Add(callRequest); database.SaveChanges(); } }
private void HandleCall(Client sender, Message message) { var calledNickname = message.GetTextContent(); var calledUser = GetClient(calledNickname); var callRequest = new Database.Entities.CallRequest { State = CallRequestState.NoResponse }; using (var database = new RozmawiatorDb()) { var callee = database.Users.Select(u => new { u.Id, u.UserName }).FirstOrDefault(u => u.UserName == calledNickname); var caller = database.Users.Select(u => new { u.Id, u.UserName }) .FirstOrDefault(u => u.UserName == sender.Nickname); callRequest.CalleeId = callee?.Id ?? Guid.Empty; callRequest.CallerId = caller?.Id ?? Guid.Empty; } Debug($"{sender.Nickname} is trying to call {calledNickname} ({sender.EndPoint.Address}:{sender.EndPoint.Port} -> ?)"); if (calledUser == null) { Debug($"{sender.Nickname} was trying to call {calledNickname}, but {calledNickname} is offline."); Send(sender, Message.CallResponse(0, 0, Message.CallResponseType.TargetIsOffline)); SaveCall(callRequest); return; } var conversation = GetInitiatedConversation(sender); if (conversation == null) { var currentConversation = GetConversation(sender); currentConversation?.Disconnect(sender); conversation = NewConversation(sender); } SaveCall(callRequest); conversation.AddRequest(calledUser); conversation.SendRequests(); }