Пример #1
0
        public void CreateFriendMsg(FriendMessage friendMessage)
        {
            DbCommand command = SqlConncetionHelper.Connection.CreateCommand();

            //создаем параметры
            DbParameter userIdParameter = command.CreateParameter();

            userIdParameter.DbType        = System.Data.DbType.Int32;
            userIdParameter.IsNullable    = false;
            userIdParameter.ParameterName = "@UserId";
            userIdParameter.Value         = friendMessage.UserId;

            DbParameter friendIdParameter = command.CreateParameter();

            friendIdParameter.DbType        = System.Data.DbType.Int32;
            friendIdParameter.IsNullable    = false;
            friendIdParameter.ParameterName = "@FriendId";
            friendIdParameter.Value         = friendMessage.FriendId;

            DbParameter messageParameter = command.CreateParameter();

            messageParameter.DbType        = System.Data.DbType.String;
            messageParameter.IsNullable    = false;
            messageParameter.ParameterName = "@Message";
            messageParameter.Value         = friendMessage.Message;

            command.Parameters.AddRange(new DbParameter[] { userIdParameter, friendIdParameter, messageParameter });
            command.CommandText = @"INSERT INTO [dbo].[friend_messages]
                   ([user_id], [friend_id], [message]) VALUES
                   (@UserId, @FriendId, @Message)";

            SqlConncetionHelper.ExecuteCommands(command);
        }
Пример #2
0
        // Reads the message archive for a given wallet
        public List <FriendMessage> readMessagesFile(byte[] wallet_bytes)
        {
            string wallet = Base58Check.Base58CheckEncoding.EncodePlain(wallet_bytes);

            List <FriendMessage> messages = new List <FriendMessage>();
            string messages_filename      = Path.Combine(documentsPath, String.Format("Chats/{0}.ixi", wallet));

            if (File.Exists(messages_filename) == false)
            {
                // Return an empty list of messages
                return(messages);
            }

            BinaryReader reader;

            try
            {
                reader = new BinaryReader(new FileStream(messages_filename, FileMode.Open));
            }
            catch (IOException e)
            {
                Logging.log(LogSeverity.error, String.Format("Cannot open chat file. {0}", e.Message));
                return(messages);
            }

            try
            {
                // TODO: decrypt data and compare the address/pubkey
                System.Int32 version = reader.ReadInt32();
                string       address = reader.ReadString();

                int num_messages = reader.ReadInt32();
                for (int i = 0; i < num_messages; i++)
                {
                    int    id_len         = reader.ReadInt32();
                    byte[] id             = reader.ReadBytes(id_len);
                    int    s_type         = reader.ReadInt32();
                    string s_message      = reader.ReadString();
                    long   s_timestamp    = reader.ReadInt64();
                    bool   s_local_sender = reader.ReadBoolean();
                    bool   s_read         = reader.ReadBoolean();
                    bool   s_confirmed    = reader.ReadBoolean();

                    FriendMessage message = new FriendMessage(id, s_message, s_timestamp, s_local_sender, (FriendMessageType)s_type);
                    message.read      = s_read;
                    message.confirmed = s_confirmed;
                    messages.Add(message);
                }
            }
            catch (IOException e)
            {
                Logging.error("Cannot read from chat file. {0}", e.Message);
                // TODO TODO notify the user or something like that
            }

            reader.Close();

            return(messages);
        }
Пример #3
0
        private void OnFriendMessage(Object sender, FriendMessage message)
        {
            var alias    = message.Sender.Alias;
            var nickName = message.Sender.Nickname;
            var content  = message.Content;

            logger.Info($"{nameof(OnFriendMessage)}>>{alias ?? nickName}:{content}");
        }
Пример #4
0
        public static FriendModel ToModel(FriendMessage friend)
        {
            if (friend == null)
            {
                return(null);
            }

            return(new FriendModel()
            {
                Id = new Guid(friend.Id),
                Name = friend.Name,
                Age = friend.Age,
                LibraryName = friend.LibraryName,
                IsFriend = friend.IsFriend,
            });
        }
        public async Task Add_ReturnsRedirectResult_WhenFriendMessageIsAdded()
        {
            // Arrange
            GetUserAsyncReturns = user1;

            Profile testProfile = new Profile
            {
                ProfileId = 1,
                UserId    = user1.Id
            };

            _context.Add(testProfile);

            UserRelationship testRelationship = new UserRelationship
            {
                UserRelationshipId = 1,
                RelatingUser       = user1,
                RelatedUser        = user2,
                RelatingProfile    = testProfile,
                RelatedProfile     = testProfile,
                Type = Relationship.Friend
            };

            _context.Add(testRelationship);

            FriendMessage testMessage = new FriendMessage
            {
                FriendMessageId    = 1,
                SendingUserId      = testProfile.ProfileId,
                ReceivingUserId    = 99,
                MessageContent     = "hey",
                MessageDateTime    = DateTime.Now.ToString(),
                UserRelationshipId = testRelationship.UserRelationshipId
            };

            SimulateModelStateValidation(testMessage);

            await _context.SaveChangesAsync();

            var result = await ControllerSUT.Create(testMessage);

            var redirectResult = Assert.IsAssignableFrom <RedirectToActionResult>(result);

            Assert.Equal(nameof(FriendMessagesController.Index), redirectResult.ActionName);
        }
        public async Task <IHttpActionResult> SendFriendMessage(int friendId, Message message)
        {
            var user = manager.FindById(User.Identity.GetUserId());

            // Add message to friend
            var msg = new FriendMessage();

            msg.SentBy      = (SilverUser)user;
            msg.SentAt      = DateTime.Now;
            msg.FriendId    = friendId;
            msg.MessageData = message.MessageData;
            msg.Type        = MessageType.Voice;

            db.Messages.Add(msg);
            await db.SaveChangesAsync();

            // Get friend user
            var friend = await db.Friends
                         .Where(f => f.Id == friendId)
                         .Include(f => f.User)
                         .Include(f => f.UserFriend)
                         .FirstOrDefaultAsync();

            if (friend.UserId1 == user.Id)
            {
                friend.User = friend.UserFriend;
            }

            message.MessageData = null;

            // Send notification to friend
            FirebaseController.Notify(friend.User, "New Message from " + user.FullName + "!", message.MessageText,
                                      FCMType.FriendMessage, friendId);


            return(Ok());
        }
Пример #7
0
        public async Task <IActionResult> Create([Bind("FriendMessageId,SendingUserId,ReceivingUserId,MessageContent,UserRelationshipId,MessageDateTime")] FriendMessage friendMessage)
        {
            friendMessage.MessageDateTime = DateTime.Now.ToString();
            if (ModelState.IsValid)
            {
                _context.Add(friendMessage);
                await _context.SaveChangesAsync();

                User user = await _userManager.GetUserAsync(User);

                if (user == null)
                {
                    return(Problem());
                }

                var thisRelationship = _context.UserRelationships
                                       .Where(u => u.UserRelationshipId == friendMessage.UserRelationshipId)
                                       .FirstOrDefault();

                return(RedirectToAction("Index", new { id = thisRelationship.UserRelationshipId }));
            }
            ViewData["UserRelationshipId"] = new SelectList(_context.UserRelationships, "UserRelationshipId", "UserRelationshipId", friendMessage.UserRelationshipId);
            return(View(friendMessage));
        }
Пример #8
0
        private List <FriendMessage> readMessagesFile(string path)
        {
            lock (messagesLock)
            {
                List <FriendMessage> messages = new List <FriendMessage>();
                string messages_path          = path;

                if (File.Exists(messages_path) == false)
                {
                    // Return an empty list of messages
                    return(messages);
                }

                BinaryReader reader;
                try
                {
                    reader = new BinaryReader(new FileStream(messages_path, FileMode.Open));
                }
                catch (Exception e)
                {
                    Logging.log(LogSeverity.error, String.Format("Cannot open chat file. {0}", e.Message));
                    return(messages);
                }

                try
                {
                    // TODO: decrypt data and compare the address/pubkey
                    System.Int32 version = reader.ReadInt32();
                    string       address = reader.ReadString();

                    int num_messages = reader.ReadInt32();
                    for (int i = 0; i < num_messages; i++)
                    {
                        int           msg_len = reader.ReadInt32();
                        FriendMessage msg     = new FriendMessage(reader.ReadBytes(msg_len));
                        messages.Add(msg);

                        string t_file_name = Path.GetFileName(msg.filePath);
                        try
                        {
                            if (msg.type == FriendMessageType.fileHeader && msg.completed == false)
                            {
                                if (msg.localSender)
                                {
                                    // TODO may not work on Android/iOS due to unauthorized access
                                    FileStream fs = new FileStream(msg.filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                                    TransferManager.prepareFileTransfer(t_file_name, fs, msg.filePath, msg.transferId);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Logging.error("Error occured while trying to prepare file transfer for file {0}, full path {1}: {2}", t_file_name, msg.filePath, e);
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.error("Cannot read from chat file. {0}", e.Message);
                    // TODO TODO notify the user or something like that
                }

                reader.Close();

                return(messages);
            }
        }