public void SendMessage(int groupID, string message) { UserInGroup usrGrp = BaseOnlineUser.BaseUser.UsersInGroups.FirstOrDefault((x) => x.GroupID == groupID); if (usrGrp == null) { Callback.RLeaveGroup(new RGroup(new Group { ID = groupID })); return; } if (message.Length < 1) { return; } GroupMessage msg = BaseOnlineUser.MainBase.GroupsMessages.Add(new GroupMessage { UserID = usrGrp.UserID, GroupID = usrGrp.GroupID, MessageSource = message }); BaseOnlineUser.MainBase.SaveChanges(); foreach (var item in BaseOnlineUser.OnlineUsers.Where((x) => x.BaseUser.UsersInGroups.FirstOrDefault((z) => z.GroupID == usrGrp.GroupID) != null)) { item.Sessions.ForEach((x) => x.Callback.RNewMessage(new RUser(usrGrp.User, false), new RGroupMessage(msg))); } }
private IDictionary<string, byte[]> GenerateFile(ReportNode report, string name, string format) { var source = new GroupMessage(null, null, PX.Common.Mail.MailSender.MessageAddressee.Empty, PX.Common.Mail.MailSender.MessageContent.Empty, null, format, MessageRelationship.Empty, ReportAttachment.Empty); var message = new PX.Reports.Mail.Message(source, report, null); var attachments = message.Attachments; if (attachments == null) return null; var result = new Dictionary<string, byte[]>(attachments.Count); var index = 0; foreach (var item in attachments) { var filename = item.Name; if (!string.IsNullOrEmpty(name)) { filename = name; if (index++ > 0) filename += " (" + index.ToString() + ")"; } if (!System.IO.Path.HasExtension(item.Name)) { var ext = MimeTypes.GetExtension(item.MimeType); if (ext != null) filename = System.IO.Path.GetFileNameWithoutExtension(filename) + ext; } result.Add(filename, item.ToArray()); } return result; }
public ActionResult <GroupMessageReadDto> Create([FromBody] GroupMessageCreateDto request) { if (_userRepository.Get(request.SenderId) == null) { return(StatusCode(StatusCodes.Status400BadRequest, "User doesn't exist.")); } GroupConversation groupConversation = _groupConversationRepository.Get(request.GroupConversationId); if (groupConversation == null) { return(StatusCode(StatusCodes.Status400BadRequest, "GroupConversation doesn't exist.")); } if (groupConversation.CreatorId != request.SenderId && !FormatHelper.CsvToListInt(groupConversation.ParticipantIds).Any(e => e == request.SenderId)) { return(StatusCode(StatusCodes.Status403Forbidden, "Cannot create GroupMessage for GroupConversation you're not a part of.")); } GroupMessage newEntity = _mapper.Map <GroupMessage>(request); newEntity.DateTime = DateTime.UtcNow; newEntity = _groupMessageRepository.Create(newEntity); return(StatusCode(StatusCodes.Status201Created, _mapper.Map <GroupMessageReadDto>(newEntity))); }
public int AddMessage(GroupMessage message) { //sql语句 String sql = "INSERT INTO en_groupmsg(e_groupid,e_userid,e_sendtype,e_sendtime,e_msgstate,e_content,e_file) " + "VALUES(@groupid,@userid,@sendtype,@sendtime,@msgstate,@content,@file)"; //参数列表 MySqlParameter[] param = { new MySqlParameter("@groupid", MySqlDbType.Int32), new MySqlParameter("@userid", MySqlDbType.Int32), new MySqlParameter("@sendtype", MySqlDbType.Int16), new MySqlParameter("@sendtime", MySqlDbType.DateTime), new MySqlParameter("@msgstate", MySqlDbType.Int16), new MySqlParameter("@content", MySqlDbType.VarChar), new MySqlParameter("@file", MySqlDbType.LongBlob) }; //参数赋值 param[0].Value = message.Groupid; param[1].Value = message.Userid; param[2].Value = message.Sendtype; param[3].Value = message.Sendtime; param[4].Value = message.State; param[5].Value = message.Content; param[6].Value = message.Sendfile; MySqlDbHelper db = new MySqlDbHelper(); return(db.ExecuteNonQuery(sql, CommandType.Text, param)); }
public void SendGroupMessage(int senderId, int receiverId, string message) { Group receiverUser = databaseContext.Groups.Where(x => x.id == receiverId).FirstOrDefault(); User senderUser = databaseContext.Users.Where(x => x.id == senderId).FirstOrDefault(); DateTime mesajGondermeTarihi = DateTime.Now; GroupMessage message2 = new GroupMessage() { SendUser = senderUser, SendTime = mesajGondermeTarihi, Message = message, Group = receiverUser }; GroupMessage groupMessage = databaseContext.GroupMessages.Add(message2); databaseContext.SaveChanges(); GroupMessage_sade groupMessage_Sade = new GroupMessage_sade() { id = groupMessage.id, Message = groupMessage.Message, UserId = groupMessage.SendUser.id, UserMail = groupMessage.SendUser.email, SendTime = groupMessage.SendTime }; Clients.Group("group_" + receiverId.ToString()).GroupMessageArrived(groupMessage_Sade, receiverUser.id, receiverUser.GroupName); }
private void HandleNewGroup(long groupId)//todo creates new entry each time { var groupEntity = _stateManager.GetGroupEntity(groupId); GroupMessage msg = new GroupMessage { Action = GroupActions.Start, Criteria = _serializer.DeserializeFromString <List <JobCriteria> >(groupEntity.Criteria), GroupId = groupId, Group = groupEntity }; if (!string.IsNullOrWhiteSpace(groupEntity.Payload)) { msg.IsProcessSubmission = true; msg.ProcessKeys = _serializer.DeserializeFromString <List <int> >(groupEntity.Payload); } else { if (groupEntity.GroupKey == 0) { Logger.Error("Group {id} invalid with no payload and GroupKey", groupId); groupEntity.MarkGroupStatus(CompletionStatus.Stopped, ResultStatus.Invalid, "Execution faulted. No process found", _stateManager); return; } } msg.SetGroupEntity(groupEntity); HandleGroup(msg); }
private void OnGroupMessage(Object sender, GroupMessage message) { var groupName = message.Group.Name; var groupId = message.Group.Id; var senderId = message.Sender.Id; var senderAlias = message.Sender.Alias; var senderName = message.Sender.Nickname; var content = message.Content; if (workGroups.Contains(groupName)) { if (senderId != client.Id) { logger.Info($"{nameof(OnGroupMessage)}>>{groupName}>>{senderAlias ?? senderName}:{content}"); var msg = Answer(message); if (String.IsNullOrEmpty(msg)) { return; } SendMessageToGroup(groupId, msg); } else { logger.Debug("不回复自己说的话"); } return; } logger.Debug($"群组 [{groupName}] 不在工作群组内"); }
//messages public List <GroupMessage> GetGroupMessages(int chatGroupId, int limit) { using (UserContext context = new UserContext()) { List <GroupMessage> messagesToReturn = new List <GroupMessage>(); try { foreach (BaseMessage message in context.Messages.Where(mes => mes is GroupMessage).AsEnumerable().Reverse()) { if (messagesToReturn.Count == limit) { break; } GroupMessage groupMessage = message as GroupMessage; if (chatGroupId == groupMessage.ChatGroupId) { User usrSender = GetUserById(groupMessage.SenderId); groupMessage.SenderName = usrSender.FirstName; messagesToReturn.Add(groupMessage); } } messagesToReturn.Reverse(); } catch (Exception) { messagesToReturn = new List <GroupMessage>(); } return(messagesToReturn); } }
public List <GroupMessage> Get(int courseID) { List <GroupMessage> list = new List <GroupMessage>(); using (var con = new MySqlConnection(GetConnectionString())) { con.Open(); var qry = "select chg_id, chg_user_id, chg_course_id, chg_text, chg_creation_date from chat_group where chg_course_id = @chg_course_id order by chg_creation_date"; using (var cmd = new MySqlCommand(qry, con)) { cmd.Parameters.AddWithValue("@chg_course_id", courseID); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var tmp = new GroupMessage(); tmp.MessageID = reader.GetInt32(0); tmp.CourseID = reader.GetInt32(2); tmp.MessageSenderID = reader.GetInt32(1); tmp.MessageText = reader.GetString(3); tmp.MessageTime = reader.GetDateTime(4); list.Add(tmp); } } } con.Close(); } return(list); }
private static void ReceiveMessages() { Console.WriteLine("Receiving messages... - {0}", DateTime.Now); using (var messaging = new ClientService()) { BaseMessage[] messages = messaging.ListMessages(new AuthenticatedData()); if (messages.Length == 0) { Console.WriteLine(" No new messages on the server."); } else { foreach (BaseMessage message in messages) { if (message is GroupMessage) { GroupMessage groupMessage = message as GroupMessage; Console.WriteLine(" New group message: '{0}', sent {1}", groupMessage.Message, groupMessage.DateCreated); } else if (message is PersonalMessage) { PersonalMessage personalMessage = message as PersonalMessage; Console.WriteLine(" New personal message: '{0}', sent {1}", personalMessage.Message, personalMessage.DateCreated); } else { // do proper error handling and display here Console.WriteLine("error: received unexpected message type from server"); } } } } }
public bool SendMessage(GroupMessage message) { Group group = new Group(); message.State = 1; //发送消息到服务端 IPAddress ip = IPAddress.Parse(IP.Ipaddress); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); String text = message.Userid + "###" + message.Content + "###" + message.Sendtype.ToString() + "###" + message.Groupid; //设定服务器IP地址 try { clientSocket.Connect(new IPEndPoint(ip, IP.Port)); //配置服务器IP与端口 } catch { message.State = 0; return(false); } clientSocket.Send(Encoding.UTF8.GetBytes(text)); GroupMessageDAL groupmessageDAL = new GroupMessageDAL(); groupmessageDAL.AddMessage(message); return(true); }
public void Update(GroupMessage item) { lblSenderName.Text = item.senderName + " : "; lblMessage.Text = item.MessageText; lblTime.Text = item.MessageTime.ToString("hh:mm tt");; var Status = (item.MessageId != 0) ? Repositories.GroupRepository.GetGroupMessageOverallStatusbyid(item.MessageId) : new GroupMessageStatus(); if (!this.isLeft) { if (Status.IsRead) { StatusTick.Image = doubleBlue; } else if (Status.IsRecieved) { StatusTick.Image = doubleGray; } else if (Status.IsSend) { StatusTick.Image = singleGray; } else { StatusTick.Image = singleGray; } } SetNeedsLayout(); }
/// <summary> /// 加载某一组的聊天记录 /// </summary> /// <param name="groupId"></param> /// <returns></returns> public async Task <ActionResult> LoadHistoryMessages(long groupId) { User user = JWTHelper.GetUser(HttpContext); var userGroups = await UserCenterApi.UserGroup.GetGroupsAsync(user.Id); if (!userGroups.Select(g => g.Id).Contains(groupId)) { ReturnData returnData = new ReturnData() { Status = "error", Msg = "当前用户不属于组" + groupId }; return(Json(returnData)); } RedisValue[] jsons; using (var redis = RedisHelper.Create()) { var db = redis.GetDatabase(); //获取最近50条聊天记录,聊天记录是leftpush的 jsons = await db.ListRangeAsync(RedisHelper.Prefix_GroupMessages + groupId, 0, 50); } //因为leftpush,取出来顺序是反的,需要颠倒过来,因此从后向前遍历 List <GroupMessage> groupMessages = new List <GroupMessage>(); for (int i = jsons.Length - 1; i >= 0; i--) { GroupMessage groupMsg = JsonConvert.DeserializeObject <GroupMessage>(jsons[i]); groupMessages.Add(groupMsg); } return(Json(new ReturnData { Status = "ok", Data = groupMessages })); }
private void btnSendMessage_Click(object sender, RoutedEventArgs e) //发送消息 { if (sendmsg.Text == string.Empty) { MessageBox.Show("消息不能为空"); return; } GroupMessage message = new GroupMessage(); message.Content = sendmsg.Text; message.Userid = msgsender.Id; message.Groupid = group.Id; message.Sendtype = 4; message.Sendtime = DateTime.Now; message.Sendfile = null; GroupMessageBLL bLL = new GroupMessageBLL(); if (!bLL.SendMessage(message)) { MessageBox.Show("服务器异常"); } else { string msg = "\n" + msgsender.Name + " " + message.Sendtime.ToString() + "\n" + message.Content + "\n"; ShowMessage.AppendText(msg); sendmsg.Text = ""; ShowMessage.ScrollToEnd(); msgscroll.ScrollToEnd(); } }
public async Task <IHttpActionResult> SendGroupMessage(int groupId, Message message) { var user = manager.FindById(User.Identity.GetUserId()); // Add message to group var msg = new GroupMessage(); msg.GroupId = groupId; msg.SentBy = (SilverUser)user; msg.SentAt = DateTime.Now; msg.MessageData = message.MessageData; msg.Type = MessageType.Voice; db.Messages.Add(msg); await db.SaveChangesAsync(); // Get members from groups var group = await db.Groups .Where(g => g.Id == groupId) .Include(g => g.Members) .FirstOrDefaultAsync(); message.MessageData = null; // Send notification to group members foreach (var member in group.Members) { FirebaseController.Notify(member, "New Message from " + group.Name + "!", message.MessageText, FCMType.GroupMessage, groupId); } return(Ok()); }
private async void Send() { if (string.IsNullOrEmpty(Message) || string.IsNullOrWhiteSpace(Message)) { Message = null; return; } if (App.hub.State == HubConnectionState.Disconnected) { var results = await App.client.GetStringAsync("https://naijaconnectfunction.azurewebsites.net/api/GetInfo"); var info = JsonConvert.DeserializeObject <ConnectionInfo>(results); var connectionBuilder = new HubConnectionBuilder(); connectionBuilder.WithUrl(info.Url, (Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions obj) => { obj.AccessTokenProvider = () => Task.Run(() => info.AccessToken); }); App.hub = connectionBuilder.Build(); } var comment = new GroupMessage(Settings.UsernameSettings, Settings.KeySettings, GroupName, GroupId, Message.Trim()); var json = JsonConvert.SerializeObject(comment); var content = new StringContent(json, Encoding.UTF8, "application/json"); var result = await App.client.PostAsync("https://naijaconnectfunction.azurewebsites.net/api/SendGroupMessage", content); Message = string.Empty; }
public string SendGroupMessagePackage(GroupMessage groupMessage) { if (clientModel.HasFunction(FunctionType.ChatSystem)) { while (sending) { Thread.Sleep(100); } sending = true; isReceive = false; GroupMessagePackage sendPackage = new GroupMessagePackage(groupMessage, null); string send = JsonSerializer.Serialize(sendPackage); Send(send); while (!isReceive) { Thread.Sleep(100); } sending = false; return(receiveMessage); } else { return("Chat System offline."); } }
public string AddNewGroupMessage(GroupMessage message) { groupMessageList.AddMessage(message); cloudDatabase.AddGroupMessage(message); SendNewMessage(message); return(null); }
public void ProcessMessage(GroupMessage message, out bool isBot) { isBot = false; var report = Session.QueryOver <IntelReport>() .Where(x => x.Battle.Id == Battle.Id) .And(x => x.MessageId == message.id) .Take(1) .SingleOrDefault(); if (report != null) { isBot = report.IsBotMessage; return; //already processed! we are reading our posted bot message } report = SaveReport(message); var duplicate = GetDuplicateBattleReport(report); if (duplicate != null) //this is an exact duplicate of a report we already processed { report.DuplicateOf = duplicate; return; } ParseReportText(report); }
public void Post([FromBody] GroupMessage message) { var qry = "INSERT INTO chat_group(chg_user_id, chg_course_id, chg_text, chg_creation_date) VALUES (@chg_user_id, @chg_course_id, @chg_text, @chg_creation_date)"; try { using (var con = new MySqlConnection(GetConnectionString())) { con.Open(); using (var cmd = new MySqlCommand(qry, con)) { cmd.Parameters.AddWithValue("@chg_user_id", message.MessageSenderID); cmd.Parameters.AddWithValue("@chg_course_id", message.CourseID); cmd.Parameters.AddWithValue("@chg_text", message.MessageText.Trim()); cmd.Parameters.AddWithValue("@chg_creation_date", DateTime.Now); cmd.ExecuteNonQuery(); con.Close(); } } } catch (Exception e) { var logName = ConfigurationManager.AppSettings["logfilename"]; MyEvent(message.MessageText + message.MessageTime + "\n" + e.ToString()); string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); using (StreamWriter writer = new StreamWriter(Path.Combine(docPath, logName), true)) { writer.WriteLine(message.MessageText + message.MessageTime + "\n" + e.ToString()); } } }
private async Task NavigateToEditMessageView(GroupMessage groupMessage) { GroupMessage = groupMessage; await(Application.Current.MainPage as Views.MainPage).PushNavigationPage(new AddOrEditGroupMessage()); MessengerInstance.Send(new NotificationMessage <GroupMessage>(groupMessage, "Naviagte to edit View")); }
public ActionResult New(GroupMessage groupMessage) { groupMessage.ApplicationUserId = User.Identity.GetUserId(); var userGroup = _db.UserGroups.FirstOrDefault(x => x.GroupId == groupMessage.GroupId && x.ApplicationUserId == groupMessage.ApplicationUserId); if (userGroup == null) { return(Redirect("/Groups/Show/" + groupMessage.GroupId)); } try { if (!ModelState.IsValid) { return(Redirect("/Groups/Show/" + groupMessage.GroupId)); } _db.GroupMessages.Add(groupMessage); _db.SaveChanges(); return(Redirect("/Groups/Show/" + groupMessage.GroupId)); } catch (Exception) { return(Redirect("/Groups/Show/" + groupMessage.GroupId)); } }
void Speak() { //This segment of code stops the for loop once GroupMessage has ended, If the try is omitted the broadcast is sent on an infinite loop try { foreach (string entry in GroupMessage) { GroupMessage.Pop(); foreach (KeyValuePair <string, TcpClient> entry1 in Clients) { try { byte[] bytesTo = new byte[500]; NetworkStream stream = entry1.Value.GetStream(); bytesTo = System.Text.Encoding.ASCII.GetBytes(entry); stream.Write(bytesTo, 0, bytesTo.Length); stream.Flush(); } catch { Console.WriteLine("Tcp Client is missing"); } } } } catch { Console.WriteLine("End of Message Stack"); } }
private void Listen() { string returndata; byte[] bytesFrom = new byte[10025]; byte[] bytesTo = new byte[10025]; while (true) { try { NetworkStream networkStream = Client.GetStream(); int reply = networkStream.Read(bytesFrom, 0, 10025); if (reply > 0) { returndata = System.Text.Encoding.ASCII.GetString(bytesFrom); string[] Reply = returndata.Split('/'); if (Reply.Length < 2) { if (returndata.ToLower() == "all") { Console.WriteLine("Current Room Status"); foreach (KeyValuePair <string, TcpClient> entry in Clients) { Console.WriteLine(entry.Key); } } GroupMessage.Push(returndata); } else { Message M = new Message; M.Name = Reply[0]; M.Message = Reply[1]; foreach (KeyValuePair <string, TcpClient> entry in Clients) { if (entry.Key = M.Name) { NetworkStream network = entry.Value.GetStream(); string CurrMessage = ClientName + ':' + M.Message bytesTo = System.Text.Encoding.ASCII.GetBytes(CurrMessage); networkStream.Write(bytesTo, 0, bytesTo.Length); networkStream.Flush; } } } } Speak(); //bytesTo = System.Text.Encoding.ASCII.GetBytes(Console.ReadLine()); //networkStream.Write(bytesTo, 0, bytesTo.Length); //networkStream.Flush(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } Clients.Remove(ClientName); }
public void EditMessage(BaseMessage editedMessage) { try { string validationInfo = Validate(editedMessage); if (validationInfo != successResult) { return; } using (UserContext userContext = new UserContext()) { BaseMessage dbMessage = userContext.Messages.Where(mes => mes.Id == editedMessage.Id).FirstOrDefault(); if (dbMessage == null) { return; } if (dbMessage is UserMessage) { UserMessage userMessage = dbMessage as UserMessage; User dbReceiver = userContext.Users.Where(u => u.Id == userMessage.ReceiverId).FirstOrDefault(); userMessage.Receiver = dbReceiver; userMessage.ReceiverId = dbReceiver.Id; } else if (dbMessage is GroupMessage) { GroupMessage groupMessage = dbMessage as GroupMessage; ChatGroup chatGroup = userContext.ChatGroups.Where(g => g.Id == groupMessage.ChatGroupId).FirstOrDefault(); groupMessage.ChatGroup = chatGroup; groupMessage.ChatGroupId = chatGroup.Id; } dbMessage.Sender = editedMessage.Sender; dbMessage.SenderId = editedMessage.SenderId; dbMessage.DateOfSending = editedMessage.DateOfSending; dbMessage.Text = editedMessage.Text; CallbackData callbackData = usersOnline.Where(cd => cd.User.Id == dbMessage.SenderId).FirstOrDefault(); if (callbackData == null) { return; } userContext.SaveChanges(); MessageInfo messageInfo = new MessageInfo(); messageInfo.Message = dbMessage; messageInfo.CallbackData = callbackData; Thread t = new Thread(new ParameterizedThreadStart(EditMessageCallback)); t.IsBackground = true; t.Start(messageInfo); } } catch (Exception) { return; } }
public async Task AddMessageAsync(GroupMessage message) { var messages = await StateManager.GetStateAsync <List <GroupMessage> >(GroupMessagesKey); messages.Add(message); await StateManager.AddOrUpdateStateAsync(GroupMessagesKey, messages, (key, val) => messages); }
public ActionResult SendGroupMessage(GroupMessage message) { if (!IsLoggedIn()) { return(RedirectToAction("Index", "Home")); } return(View()); }
public GroupMessage Create(GroupMessage entity) { _context.GroupMessages.Add(entity); _context.SaveChanges(); return(entity); }
public GroupMessage Update(GroupMessage entity) { _context.Entry(entity).State = EntityState.Modified; _context.SaveChanges(); return(entity); }
public ActionResult RemoveMessage(GroupMessage message) { int rememberedGroupId = message.GroupId; // Keep groupId to reload this chat groupRepository.RemoveGroupMessage(message); return(RedirectToAction("ViewChat", "Group", new { groupId = rememberedGroupId })); }
public string SendGroupMessage(GroupMessage message) { if (!HasFunction(FunctionType.ChatSystem)) { offlineGroupMessageList.AddMessage(message); UpdatePage.ChatSystemUpdate(); } return(chatSystemClient.SendGroupMessagePackage(message)); }
/// <summary>组合组消息</summary> /// <param name="message">消息</param> /// <param name="remoteIdentity">远程标识</param> /// <returns></returns> protected virtual Message JoinGroup(GroupMessage message, Object remoteIdentity = null) { var key = String.Format("{0}#{1}", remoteIdentity, message.Identity); MessageGroup mg = null; if (!groups.TryGetValue(key, out mg)) { mg = new MessageGroup(); mg.Identity = message.Identity; groups.Add(key, mg); } // 加入到组,如果返回false,表示未收到所有消息 if (!mg.Add(message)) { WriteLog("接收分组 Identity={0} {1}/{2} [{3}] 已完成:{4}/{5}", message.Identity, message.Index, message.Count, message.Data == null ? 0 : message.Data.Length, mg.Count, mg.Total); return null; } WriteLog("接收分组 Identity={0} {1}/{2} [{3}] 已完成:{4}/{5}", message.Identity, message.Index, message.Count, message.Data == null ? 0 : message.Data.Length, mg.Count, mg.Total); // 否则,表示收到所有消息 groups.Remove(key); // 读取真正的消息 return mg.GetMessage(); }