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); }
// 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); }
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}"); }
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()); }
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)); }
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); } }