Ejemplo n.º 1
0
        public async Task SendMessage(SendMessageModel message)
        {
            ReceiveMessageModel response = null;

            MessageModel msg = new MessageModel
            {
                UserName    = message.UserName,
                Message     = message.Message,
                RoomCode    = message.RoomCode,
                CreatedDate = DateTime.Now
            };

            MessageModel responseMsg = await _chatRepository.AddAsync(msg);

            response = new ReceiveMessageModel
            {
                UserName   = responseMsg.UserName,
                Message    = responseMsg.Message,
                RoomCode   = responseMsg.RoomCode,
                CreateDate = responseMsg.CreatedDate
            };

            if (response != null)
            {
                await Clients.Group(message.RoomCode).SendAsync("ReceiveMessage", response);
            }
        }
Ejemplo n.º 2
0
        public async Task <ChatResponse> SaveAsync(Chat chat, int user1Id, int user2Id)
        {
            var existingUser1 = await _userRepository.FindById(user1Id);

            if (existingUser1 == null)
            {
                return(new ChatResponse("User not found"));
            }
            var existingUser2 = await _userRepository.FindById(user2Id);

            if (existingUser2 == null)
            {
                return(new ChatResponse("User not found"));
            }

            chat.User1 = existingUser1;
            chat.User2 = existingUser2;

            try
            {
                await _chatRepository.AddAsync(chat);

                return(new ChatResponse(chat));
            }
            catch (Exception ex)
            {
                return(new ChatResponse(
                           $"An error ocurred while saving the Message: {ex.Message}"));
            }
        }
Ejemplo n.º 3
0
        //public async Task<Chat> GetChatByPartijId(int partijId)
        //{
        //    return await _unitOfWork.Chats
        //        .GetChatByPartijId(partijId);
        //}
        public async Task <Chat> CreateChat(Chat newChat)
        {
            await _chatRepository.AddAsync(newChat);

            await _chatRepository.CommitAsync();

            return(newChat);
        }
Ejemplo n.º 4
0
        public async Task <MessageResponse> SaveAsync(int senderId, Message message)
        {
            var existingSenderChat = await _chatRepository.FindById(senderId);

            if (existingSenderChat == null)
            {
                return(new MessageResponse("Chat ot found"));
            }
            try
            {
                IEnumerable <Chat> chats = await _chatRepository.ListBySenderId(existingSenderChat.ReceiverProfileId);

                int receiverId = 0;
                chats.ToList().ForEach(chat => {
                    if (chat.ReceiverProfileId == senderId && existingSenderChat.PetId == chat.PetId)
                    {
                        receiverId = chat.Id;
                    }
                });

                if (receiverId == 0)
                {
                    Chat chat = new Chat
                    {
                        SenderProfileId   = existingSenderChat.ReceiverProfileId,
                        ReceiverProfileId = existingSenderChat.SenderProfileId,
                        PetId             = existingSenderChat.PetId
                    };
                    await _chatRepository.AddAsync(chat);

                    await _unitOfWork.CompleteAsync();

                    receiverId = chat.Id;
                }

                message.ChatId = receiverId;
                await _messageRepository.AddAsync(message);

                await _unitOfWork.CompleteAsync();

                message.ChatId = existingSenderChat.ReceiverProfileId;
                await _messageRepository.AddAsync(message);

                await _unitOfWork.CompleteAsync();

                return(new MessageResponse(message));
            }
            catch (Exception ex)
            {
                return(new MessageResponse($"An error ocurred while saving message: {ex.Message}"));
            }
        }
Ejemplo n.º 5
0
        public async Task <Chat> AddMessageGroup(int roomid, string message, int userid)
        {
            try
            {
                var project = await _projectRepository.FindAll().FirstOrDefaultAsync(x => x.Room.Equals(roomid));

                var managers = await _manageRepository.FindAll().Where(x => x.ProjectID.Equals(project.ID)).Select(x => x.UserID).ToListAsync();

                var members = await _teamMemberRepository.FindAll().Where(x => x.ProjectID.Equals(project.ID)).Select(x => x.UserID).ToListAsync();

                var listAll          = managers.Union(members);
                var listChats        = new List <Chat>();
                var listParticipants = new List <Participant>();

                //Neu chua co participan thi them vao
                if (!await _participantRepository.FindAll().AnyAsync(x => x.RoomID == roomid))
                {
                    foreach (var user in listAll)
                    {
                        listParticipants.Add(new Participant
                        {
                            UserID = user,
                            RoomID = roomid
                        });
                    }
                    await _unitOfWork.Commit();
                }
                var chat = new Chat
                {
                    Message   = message,
                    UserID    = userid,
                    ProjectID = project.ID,
                    RoomID    = roomid
                };
                //add message userid
                await _chatRepository.AddAsync(chat);

                await _unitOfWork.Commit();

                await _hubContext.Clients.Group(chat.RoomID.ToString()).SendAsync("ReceiveMessageGroup", chat.RoomID.ToInt());

                return(chat);
            }
            catch (Exception ex)
            {
                return(new Chat());

                throw;
            }
            throw new NotImplementedException();
        }
Ejemplo n.º 6
0
        public async Task <ChatResponse> SaveAsync(Chat chat)
        {
            try
            {
                await _chatRepository.AddAsync(chat);

                await _unitOfWork.CompleteAsync();

                return(new ChatResponse(chat));
            }
            catch (Exception e)
            {
                return(new ChatResponse($"An error ocurred while saving the Chat: {e.Message}"));
            }
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> SendRequest([FromBody] MessageDTO message)
        {
            var chatMessage = new ChatModel()
            {
                Id           = message.Id,
                FromUser     = message.FromUser,
                ToUser       = message.ToUser,
                CreationDate = message.CreationDate,
                LastEditDate = message.LastModifiedDate,
                Message      = message.Message,
                IsOnline     = message.IsOnline
            };

            await _chatRepository.AddAsync(chatMessage);

            await _hubContext.Clients.All.SendAsync("OnReceive", message);

            return(Ok());
        }
Ejemplo n.º 8
0
        public async Task <ChatResponse> SaveAsync(Chat chat)
        {
            try
            {
                var searchTo = await _clientRepository.FindByIdAsync(chat.To);

                if (searchTo == null)
                {
                    return(new ChatResponse($"(to)Client {chat.To} not found"));
                }

                var searchFrom = await _clientRepository.FindByIdAsync(chat.From);

                if (searchFrom == null)
                {
                    return(new ChatResponse($"(from)Client {chat.From} not found"));
                }

                var searchFromChat = await _chatRepository.FindByFromAsync(chat.From);

                var searchToChat = await _chatRepository.FindByToAsync(chat.To);

                if (searchFromChat != null && searchToChat != null)
                {
                    return(new ChatResponse($"This chat already (from){chat.From} and (to){chat.To} exist "));
                }

                await _chatRepository.AddAsync(chat);

                await _unitOfWork.CompleteAsync();

                return(new ChatResponse(chat));
            }
            catch (Exception e)
            {
                return(new ChatResponse($"An error occurred when saving the chat: {e.Message}"));
            }
        }
Ejemplo n.º 9
0
        public async Task <ChatResponse> SaveAsync(int senderId, int receiverId, int petId)
        {
            var existingSender = await _profileRepository.FindByIdAsync(senderId);

            var existingReceiver = await _profileRepository.FindByIdAsync(receiverId);

            var existingPet = await _petProfileRepository.FindById(petId);

            bool attended = false;

            if (existingSender == null)
            {
                return(new ChatResponse("Sender not found"));
            }
            if (existingReceiver == null)
            {
                return(new ChatResponse("Receiver not found"));
            }
            if (existingPet == null)
            {
                return(new ChatResponse("Pet not found"));
            }

            var possibleOwner1 = await _petOwnerRepository.FindByPetIdAndOwnerId(petId, senderId);

            var possibleOwner2 = await _petOwnerRepository.FindByPetIdAndOwnerId(petId, receiverId);

            if (possibleOwner1 == null && possibleOwner2 == null)
            {
                return(new ChatResponse("Pet not associated with the owner"));
            }

            try
            {
                bool exist = false;

                IEnumerable <Chat> chatsReceiver = await _chatRepository.ListBySenderId(receiverId);

                if (chatsReceiver != null)
                {
                    chatsReceiver.ToList().ForEach(chat => {
                        if (chat.ReceiverProfileId == senderId && chat.PetId == petId)
                        {
                            exist = true;
                        }
                    });
                }

                Chat chat = new Chat();

                if (!exist)
                {
                    chat.ReceiverProfileId = senderId;
                    chat.SenderProfileId   = receiverId;
                    chat.PetId             = petId;
                    await _chatRepository.AddAsync(chat);

                    await _unitOfWork.CompleteAsync();
                }

                chat.ReceiverProfileId = receiverId;
                chat.SenderProfileId   = senderId;
                chat.PetId             = petId;
                await _chatRepository.AddAsync(chat);

                await _unitOfWork.CompleteAsync();

                return(new ChatResponse(chat));
            }
            catch (Exception ex)
            {
                return(new ChatResponse($"An error ocurred while saving chat: {ex.Message}"));
            }
        }