public Conversation GetById_(Guid conversationId, Guid current) { using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create()) { Database.Entities.Conversation dbConversation = unitOfWork.ConversationRepository.GetByID(conversationId); Guid otherUserId = current == dbConversation.FromID ? dbConversation.PetOwnerId : dbConversation.FromID; Database.Entities.UserDetails otherUser = unitOfWork.UserDetailsRepository.GetByID(otherUserId); Database.Entities.Pet pet = unitOfWork.PetRepository.GetByID(dbConversation.PetID); Conversation conversation = new Conversation() { WithID = dbConversation.FromID, WithImagineUrl = otherUser.ImagineUrl, //sender.Image, ID = dbConversation.ID, PetID = dbConversation.PetID, PetImagineUrl = pet.ImageUrl, YourId = dbConversation.PetOwnerId, YourImagineUrl = dbConversation.PetOwnerImagineUrl, Active = dbConversation.Status }; return(conversation); } }
public ActionResult GetConversation(Guid ownerId, Guid petId) { Guid currentUser = new Guid(User.Identity.GetUserId()); Database.Entities.Conversation conversation = conversationService.GetConversationBeetwen(currentUser, petId); Database.Entities.Message[] messages = messageService.GetMesagesForConversation2(conversation.ID); ViewBag.ConversationId = conversation.ID; return(View(messages)); }
public Database.Entities.Conversation GetConversationBeetwen(Guid userId, Guid petId) { using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create()) { if (!unitOfWork.ConversationRepository.ExistsBetween(userId, petId)) { Database.Entities.Pet pet = unitOfWork.PetRepository.GetByID(petId); UserDetails petOwner = unitOfWork.UserDetailsRepository.GetByID(pet.OwnerID); UserDetails user = unitOfWork.UserDetailsRepository.GetByID(userId); Database.Entities.Conversation dbConversation = new Database.Entities.Conversation() { ID = Guid.NewGuid(), PetID = petId, PetOwnerId = pet.OwnerID, PetImagineUrl = pet.ImageUrl, FromID = userId }; unitOfWork.ConversationRepository.Create(dbConversation); unitOfWork.Save(); return(dbConversation); } return(unitOfWork.ConversationRepository.GetConversationBetween(userId, petId)); } }
public Conversation(int id, Listener server, Client owner) { Id = id; Owner = owner; Server = server; _participants = new List <Client> { owner }; _callRequests = new List <CallRequest>(); using (var database = new RozmawiatorDb()) { var ownerUser = database.Users.FirstOrDefault(u => u.UserName == owner.Nickname); if (ownerUser == null) { return; } var conversation = new Database.Entities.Conversation { Type = ConversationType.Active, Owner = ownerUser, Creator = ownerUser, ConversationParticipants = new[] { new ConversationParticipant { User = ownerUser } } }; _conversationId = conversation.Id; database.Conversations.Add(conversation); database.SaveChanges(); } }
private void HandleDirectText(Client sender, Message message) { if (sender == null) { return; } var targetNickname = message.GetDirectTextNickname(); var targetClient = GetClient(targetNickname); if (targetClient == null) { Debug($"Undelivered message from {sender.Nickname} to {targetNickname}, target client offline."); return; } using (var database = new RozmawiatorDb()) { var conversation = database.Conversations.FirstOrDefault( c => c.ConversationParticipants.Any(cp => cp.User.UserName == targetNickname)); var senderUser = database.Users.FirstOrDefault(u => u.UserName == sender.Nickname); if (senderUser == null) { SendAsClient(sender, targetClient, message); return; } if (conversation == null) { var targetUser = database.Users.FirstOrDefault(u => u.UserName == targetNickname); if (targetUser == null) { SendAsClient(sender, targetClient, message); return; } conversation = new Database.Entities.Conversation { Type = ConversationType.Passive, ConversationParticipants = new[] { new ConversationParticipant { User = senderUser }, new ConversationParticipant { User = targetUser } } }; database.Conversations.Add(conversation); } var msg = new Database.Entities.Message { Conversation = conversation, Content = message.GetDirectTextContent(), Timestamp = DateTime.Now, Sender = senderUser }; database.Messages.Add(msg); database.SaveChanges(); } var forwardMessage = new Message().DirectText(sender.Nickname, message.GetDirectTextContent()); //SendAsClient(sender, targetClient, message); SendAsClient(sender, targetClient, forwardMessage); }