Beispiel #1
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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}] 不在工作群组内");
        }
Beispiel #8
0
        //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);
            }
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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();
        }
Beispiel #13
0
        /// <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
            }));
        }
Beispiel #14
0
        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());
        }
Beispiel #16
0
        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;
        }
Beispiel #17
0
        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);
        }
Beispiel #20
0
        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"));
        }
Beispiel #22
0
        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));
            }
        }
Beispiel #23
0
 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);
        }
Beispiel #25
0
        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;
            }
        }
Beispiel #26
0
        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);
        }
Beispiel #27
0
 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));
 }
Beispiel #32
0
        /// <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();
        }