private static void SendProcessToServer(IHubProxy hub)
        {
            var computer = new Computer
            {
                Ipv4         = SystemHelper.GetIPV4(),
                NameComputer = SystemHelper.GetNameComputer(),
                UserName     = SystemHelper.GetUserName(),
                Processes    = SystemHelper.GetProcesses(Process.GetProcesses())
            };
            var message = new MessageReturnModel
            {
                Sucesso  = true,
                Mensagem = new List <string> {
                    "Informações obtidas com sucesso."
                },
                Retorno = computer
            };

            hub.Invoke <string>("SendProcess", message).ContinueWith(task =>
            {
                if (task.IsFaulted)
                {
                    Console.WriteLine("Ocorreu algum durante o envio da mensagem ao servidor: {0}", task.Exception.GetBaseException());
                }
            }).Wait();
        }
Example #2
0
        public async Task <ApiResponder> SendMessage(string userName, string deviceID,
                                                     string senderUserId, string toUserId, string message,
                                                     string messageKey, ChatType chatType = ChatType.Text)
        {
            try
            {
                Console.WriteLine("sending a message: " + message);

                var newMessage = new Message()
                {
                    ApplicationUserId = Convert.ToInt32(senderUserId),
                    ReceiverId        = Convert.ToInt32(toUserId),
                    Text     = message,
                    CreateAt = DateTime.UtcNow,
                    Type     = chatType
                };

                var itemUser = users.Find(s => s.UserName == toUserId);

                if (itemUser != null)
                {
                    Clients.Client(itemUser.ConnectionID).messageReceived(newMessage);
                }

                var pushNotification = new OneSignalService();
                pushNotification.PushNotification(newMessage, userName, deviceID, senderUserId);


                var conversatition = DataContext.Converstation.Where(s => (s.SenderId == Convert.ToInt32(senderUserId) && s.RecevierId == Convert.ToInt32(toUserId)) || (s.SenderId == Convert.ToInt32(toUserId) && s.RecevierId == Convert.ToInt32(senderUserId))).FirstOrDefault();

                if (conversatition == null)
                {
                    var conversationItem = new Converstation()
                    {
                        SenderId     = Convert.ToInt32(senderUserId),
                        RecevierId   = Convert.ToInt32(toUserId),
                        LastMessage  = message,
                        LastDate     = DateTime.UtcNow,
                        TotalMessage = 1,
                    };

                    DataContext.Converstation.Add(conversationItem);
                }
                else
                {
                    conversatition.TotalMessage = conversatition.TotalMessage + 1;
                    conversatition.LastDate     = DateTime.UtcNow;
                    conversatition.LastMessage  = message;

                    DataContext.Converstation.Update(conversatition);
                }

                DataContext.Message.Add(newMessage);

                await DataContext.SaveChangesAsync();

                var messageReturn = new MessageReturnModel()
                {
                    ApplicationUserId = newMessage.ApplicationUserId,
                    ReceiverId        = newMessage.ReceiverId,
                    Text       = newMessage.Text,
                    CreateAt   = DateTime.UtcNow,
                    Type       = chatType,
                    MessageKey = messageKey,
                };

                var sucessMessage = new ApiResponder(messageReturn, null);

                Console.WriteLine("send Successfully");

                return(sucessMessage);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error" + ex.Message);
                var errorMessage = new ApiResponder(null, new Error()
                {
                    errorCode = 5001, errorMessage = new string[] { ex.Message }
                });
                return(errorMessage);
            }
        }