예제 #1
0
        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);
            }
        }
예제 #2
0
        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());
            }
        }