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 Conversation[] GetAllForUser(Guid userId) { using (IUnitOfWork unitOfWork = unitOfWorkFactory.Create()) { List <Conversation> conversations = new List <Conversation>(); Database.Entities.Conversation[] dbConversations = unitOfWork.ConversationRepository.GetAllFor(userId); Guid[] otherUserIds = dbConversations.SelectMany(x => new Guid[2] { x.FromID, x.PetOwnerId }).Distinct().ToArray(); Guid[] petIds = dbConversations.Select(x => x.PetID).Distinct().ToArray(); Database.Entities.UserDetails[] otherUsers = unitOfWork.UserDetailsRepository.GetByIds(otherUserIds); Database.Entities.Pet[] pets = unitOfWork.PetRepository.GetByIds(petIds); UserDetails yourDetails = otherUsers.First(x => x.ID == userId); foreach (Database.Entities.Conversation dbConversation in dbConversations) { Guid otherUserId = userId == dbConversation.FromID ? dbConversation.PetOwnerId : dbConversation.FromID; Database.Entities.UserDetails otherUser = otherUsers.First(x => x.ID == otherUserId); Database.Entities.Pet pet = pets.FirstOrDefault(x => x.ID == dbConversation.PetID); if (pet != null) { conversations.Add(new Conversation() { WithID = dbConversation.FromID, WithImagineUrl = otherUser.ImagineUrl, //sender.Image, ID = dbConversation.ID, PetID = dbConversation.PetID, PetImagineUrl = pet.ImageUrl, YourId = userId, YourImagineUrl = yourDetails.ImagineUrl, Active = dbConversation.Status, WithName = otherUser.Name }); } } return(conversations.ToArray()); } }