public async Task ReceiveNewMessage(Message message, string sender = "", bool unread = true, bool save = true) { var chat = await FindFirstAsync(c => c.GroupName == message.GroupName && c.Online); if (chat != null) { var role = MessageRoles.System; if (!string.IsNullOrWhiteSpace(message.Sender)) { role = message.Sender == chat.Owner ? MessageRoles.Self : MessageRoles.Other; } var record = new ChatRecord { Content = message.Content, Data = message.Data?.ToString(), Time = message.Time, Unread = unread, Type = message.Type, Who = (int)role, Chat = chat }; await _dbContext.ChatRecords.AddAsync(record); if (save) { await _dbContext.SaveChangesAsync(); } } }
public HttpResponseMessage SendMessage(long UserId1, long UserId2, string Content) { ChatRecord chatRecord = new ChatRecord() { UserId1 = UserId1, UserId2 = UserId2, ChatContent = Content, ChatTime = DateTime.Now }; try { db.ChatRecords.Add(chatRecord); db.SaveChanges(); } #pragma warning disable CS0168 // 声明了变量“ex”,但从未使用过 catch (Exception ex) #pragma warning restore CS0168 // 声明了变量“ex”,但从未使用过 { return(ApiResponse.BadRequest("发送失败!")); } return(ApiResponse.Ok(new { chatRecord.Id, chatRecord.UserId1, chatRecord.UserId2, chatRecord.ChatContent, chatRecord.ChatTime })); }
public IActionResult GetChatList(long UserId) { List <ChatRecord> allChatRecords = db.ChatRecords.Where(s => s.UserId1 == UserId || s.UserId2 == UserId).OrderByDescending(s => s.ChatTime).ToList(); Dictionary <long, string[]> result = new Dictionary <long, string[]>(); //key为对方用户的Id即UserId2 for (int i = 0; i < allChatRecords.Count; i++) { ChatRecord temp = allChatRecords[i]; long UserId2 = temp.UserId1 == UserId ? temp.UserId2 : temp.UserId1; if (result.Keys.Contains(UserId2)) { continue; } result.Add(UserId2, new string[] { db.Users.FirstOrDefault(s => s.Id == UserId2).Username, temp.ChatContent, temp.ChatTime.Date == DateTime.Today ? "今天 " + temp.ChatTime.ToString("HH:mm") : temp.ChatTime.ToString("yyyy-MM-dd hh:mm") }); } return(Json(new { data = result.Select(s => new { UserId = s.Key, Username = s.Value[0], LatestChatContent = s.Value[1], LatestDatetime = s.Value[2], }) })); }
/// <summary> /// 发送信息 /// </summary> /// <param name="username"></param> /// <param name="message"></param> /// <returns></returns> public async Task SendMessage(ChatRecord chatRecord) { try { string sender = chatRecord.Sender; string receiver = chatRecord.Receiver; chatRecord.IsSend = false; if (receiver != "广播聊天室") { string receiverId = await _accountService.GetConnectIdAsync(receiver); await Clients.Client(receiverId).ReceiveMessage(chatRecord); } else { await Clients.Others.ReceiveMessage(chatRecord); } }catch (ApplicationException e) { await Clients.Client(Context.ConnectionId).ReceiveMessage(new ChatRecord { Sender = "SYSTEM", Receiver = chatRecord.Receiver, Message = "对方已离线", Date = chatRecord.Date }); _logger.LogWarning($"SignalR获取connectId异常,异常信息{e.Message}"); } }
//Add message to chat window. void addMessage(JsonObject messge) { System.Object msg = null, fromName = null; if (messge.TryGetValue("msg", out msg) && messge.TryGetValue("from", out fromName)) { ChatRecord cobj = new ChatRecord(fromName.ToString(), msg.ToString()); //if(!chatRecords.Contains(cobj)) chatRecords.Add(cobj); } }
private void SendMessageHandler(SendMessage sendMessage) { var record = new ChatRecord() { UserName = sendMessage.UserName, Content = sendMessage.Content, SendDateTime = sendMessage.SendDateTime }; ChatRecords.Add(record); }
public async Task <string> SendMessage(int groupId, int type, string content) { bool hasUserId = ConnectionIdToUserId.TryGetValue(Context.ConnectionId, out int userId); if (!hasUserId) { return("当前未确客户端用户身份"); } if (type == (int)ChatMessage.MessageTypeEnum.Image && !CheckImageExist(content)) { return("找不到消息的图片资源,请先上传图片资源"); } var group = await GroupService.GroupFromId(groupId); if (group.State != ServiceResultEnum.Exist) { return(group.Detail); } var user = await AccountService.UserFromId(userId); if (user.State != ServiceResultEnum.Exist) { return(user.Detail); } var userInGroup = await GroupService.HasMemberShip(user.ExtraData, group.ExtraData); if (!userInGroup.ExtraData) { return(userInGroup.Detail); } var targets = Clients.Group(groupId.ToString()); var message = new ChatMessage { MessageOrImageKey = content, Type = (ChatMessage.MessageTypeEnum)type }; ChatRecord chatRecord = new ChatRecord { Sender = user.ExtraData, CreatedTime = DateTime.Now, Group = group.ExtraData, Message = message }; XueLeMeContext.ChatMessages.Add(message); XueLeMeContext.ChatRecords.Add(chatRecord); await XueLeMeContext.SaveChangesAsync(); await targets.SendAsync("OnReceiveMessage", userId, groupId, type, content, chatRecord.CreatedTime); return("发送成功"); }
public void Add(SendMessageInput input) { var chatRecord = new ChatRecord { Id = input.Id, Body = input.Body, Sender = input.Sender, Receiver = input.Receiver, SendOn = input.SendOn, Type = input.Type }; _chatRecordRepository.Insert(chatRecord); }
/// <summary> /// 添加用户的会话记录(用户之间仅一条) /// </summary> /// <returns></returns> public async Task AddChatRecord(Guid receiverId) { //查询当前用户会话是否已经存在 var chatRecord = _chatRecordRepository.GetAll() .FirstOrDefault(x => x.SenderId == GetThisUserId && x.ReceiverId == receiverId || x.SenderId == receiverId && x.ReceiverId == GetThisUserId); if (chatRecord == null) { chatRecord = new ChatRecord { SenderId = GetThisUserId, ReceiverId = receiverId }; await _chatRecordRepository.AddOrEditAndSaveAsyn(chatRecord); } }
/// <summary> /// 发送通知消息给客服 /// </summary> /// <param name="content"></param> /// <param name="csUserId"></param> /// <returns></returns> public async Task SendNoticeToCustomerServiceAsync(string content, string csUserId) { var message = new ChatRecord { Content = content, Type = MessageTypes.Notice, Who = 0, Time = DateTime.Now }; var server = await _redis.HGetAsync(Constants.RedisKey.AllOnlineCustomerService, csUserId); if (!string.IsNullOrEmpty(server)) { await _hub.Clients.Client(server).SendAsync("receiveMessage", message); } }
/// <summary> /// Adds new contact to friend list. /// </summary> /// <param name="login">username of the contact to be added</param> /// <param name="status">status of the contact to be added</param> /// <param name="isFriend">true if the contact is friend of the player</param> private void AddContactToList(string login, Status status, bool isFriend = true) { PlayerHelper.GetAvatar(login, texture => { FriendListController.SetAvatar(login, texture); }, error => { Debug.LogWarning("Could not get avatar for user " + login + ". Default avatar will be used."); }); FriendListController.AddItem(login, status, isFriend); if (isFriend) { chatRecords[login] = new ChatRecord(); } ChatTip.text = "Select a player to challenge or chat with a friend"; }
private void pic_Click(object sender, RoutedEventArgs e) { string filePath = null; string fileName = null; double fileLength = 0; System.Windows.Forms.OpenFileDialog dialog = new System.Windows.Forms.OpenFileDialog(); dialog.Filter = "图像文件|*.jpg;*.jpeg;*.png;*.bmp"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fileName = dialog.SafeFileName; filePath = dialog.FileName; } if (!string.IsNullOrEmpty(filePath)) { fileLength = new FileInfo(filePath).Length; fileLength /= 1024; fileLength /= 1024; int failtime = 0; cs.SendMessage(ChatMessageType.PICTURE, fileName + "~" + filePath + "~" + fileLength.ToString("0.00")); //等待对方开启照片接收线程 Thread.Sleep(1000); while (true) { try { FileSend fs = new FileSend(ip, filePath, fileName); fs.SendFile(); break; } catch (Exception ex) { Thread.Sleep(200); failtime++; if (failtime == 10) { break; } } } Show_Time(); ChatRecord.Document.Blocks.Add(Function.ToShow(TextAlignment.Right, new BitmapImage(new Uri(filePath, UriKind.Relative)), 1, Main.myheader)); ChatRecord.ScrollToEnd(); } }
public async Task <ServiceResult <object> > SendMessage(User user, ChatGroup chatGroup, ChatMessage.MessageTypeEnum messageType, string content) { if (messageType == ChatMessage.MessageTypeEnum.Image) { if (Context.BinaryFiles.FirstOrDefault(f => f.MD5 == content) == null) { return(NotFound("找不到消息的图片资源,请先上传图片资源")); } } ChatMessage chatMessage = new ChatMessage { MessageOrImageKey = content, Type = messageType, }; ChatRecord chatRecord = new ChatRecord { Sender = user, CreatedTime = DateTime.Now, Group = chatGroup, Message = chatMessage, }; Context.ChatMessages.Add(chatMessage); Context.ChatRecords.Add(chatRecord); await Context.SaveChangesAsync(); ChatMessageDetail messageDetail = new ChatMessageDetail { Id = chatRecord.Id, User = user.ToDetail(), Group = new GroupBrief { Id = chatGroup.Id, Name = chatGroup.GroupName, }, MessageType = messageType, Content = content, CreatedTime = chatRecord.CreatedTime, }; await NotificationService.NotifyGroupMembers(chatGroup.Id, messageDetail.ToJson(), NotificationTypeEnum.ChatMessage); return(Success("发送成功")); }
//read in the log file csv format into a chatlog object public static ChatRecord FromCSV(string record) { // {date, userid, [word1:2, word3:7...]} ChatRecord crecord = new ChatRecord(); string[] fields = record.Split(','); DateTime timestamp; try { timestamp = Convert.ToDateTime(fields[0]); } catch { timestamp = DateTime.Now; } string userid = fields[1]; crecord.User = userid; crecord.TimeStamp = timestamp; List <string> msgwords = fields.ToList().GetRange(2, fields.Length - 2); //count the number of instances of this word in the record foreach (string word in msgwords) { if (crecord.Words.ContainsKey(word.ToLower())) { crecord.Words[word.ToLower()] += 1; } else { crecord.Words.Add(word.ToLower(), 1); } } return(crecord); }
public void Save(string groupName, string name, string message) { // Save message to DB using (var conn = new dbEntities()) { var id = Int32.Parse(groupName); this.lesson = conn.Lessons.FirstOrDefault(a => a.ID == id); if (this.lesson == null) { throw new Exception("Lesson does not exist."); } this.chatRecord = new ChatRecord() { Lesson_ID = id, Chat_User = name, Char_Message = message, DateTime = DateTime.Now.ToUniversalTime(), }; conn.ChatRecords.Add(this.chatRecord); conn.SaveChanges(); } }
private void OnScreenCaputred(object sender, RisCaptureLib.ScreenCaputredEventArgs e) { //set last size lastSize = new Size(e.Bmp.Width, e.Bmp.Height); m.Dispatcher.Invoke(new Action(delegate { m.Show(); System.Drawing.Bitmap bmpImg = e.BmpImg; string fileName = new Random().NextDouble().ToString() + ".jpg"; string filePath = "./ChatImageSend/" + new Random().NextDouble().ToString() + ".jpg"; bmpImg.Save(filePath); FileInfo f = new FileInfo(filePath); double fileLength = f.Length; Show_Time(); ChatRecord.Document.Blocks.Add(Function.ToShow(TextAlignment.Right, e.Bmp, 1, Main.myheader)); ChatRecord.ScrollToEnd(); cs.SendMessage(ChatMessageType.PICTURE, fileName + "~" + filePath + "~" + fileLength.ToString("0.00")); //等待对方开启照片接收线程 Thread.Sleep(2000); while (true) { try { FileSend fs = new FileSend(ip, filePath, fileName); fs.SendFile(); break; } catch (Exception ex) { Thread.Sleep(200); } } })); }
private void SaveSentResponse(IncomingRequest request, ChatRecord userlastRecordDb, string incomingMessage, string lastSentFormat) { if (userlastRecordDb == null) { var newRecord = new ChatRecord() { LastReceivedMessage = incomingMessage, SentOn = DateTime.Now, LastSentFormat = lastSentFormat, LastSentMessage = request.body, MobileNumber = request.to }; _dbContext.ChatRecords.Add(newRecord); } else { userlastRecordDb.LastSentMessage = request.body; userlastRecordDb.MobileNumber = request.to; userlastRecordDb.SentOn = DateTime.Now; userlastRecordDb.LastReceivedMessage = incomingMessage; userlastRecordDb.LastSentFormat = lastSentFormat; } _dbContext.SaveChanges(); }
private void Send_Click(object sender, RoutedEventArgs e) { try { cs.ConnectFriend(); } catch { } try { cs.SendMessage(ChatMessageType.CHAT, Tosend.Text); } catch (Exception ex) { Thread.Sleep(200); } //判断一下是否需要更新时间 Show_Time(); //在窗口显示内容、清空输入框、确保窗口自动滚动至下方 ChatRecord.Document.Blocks.Add(Function.ToShow(TextAlignment.Right, Tosend.Text, 1, Main.myheader)); Tosend.Clear(); ChatRecord.ScrollToEnd(); }
private IncomingRequest ReOrder(IncomingRequest request, string orderOptionNumber, ChatRecord userlastRecordDb, string incomingMessage) { try { var url = "/getValidatedOrder"; // var validatedOrders = WebGETSync<List<OrderResponse>>(url); var validatedOrders = new List <OrderResponse>() { new OrderResponse { Name = "Order1", Id = 111111, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order2", Id = 222222, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order3", Id = 333333, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order4", Id = 444444, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order5", Id = 555555, ValidatedOn = DateTime.Now }, }; string reOrderUrl = ""; if (orderOptionNumber == "1") { reOrderUrl = $"/reorder?orderId={validatedOrders[0].Id}"; } if (orderOptionNumber == "2") { reOrderUrl = $"/reorder?orderId={validatedOrders[1].Id}"; } if (orderOptionNumber == "3") { reOrderUrl = $"/reorder?orderId={validatedOrders[2].Id}"; } if (orderOptionNumber == "4") { reOrderUrl = $"/reorder?orderId={validatedOrders[3].Id}"; } if (orderOptionNumber == "5") { reOrderUrl = $"/reorder?orderId={validatedOrders[4].Id}"; } // var response = WebGETSync<ReorderResponse>(reOrderUrl); var response = new ReorderResponse { Step = "Review", OrderId = "123" }; if (response.Step == OrderingStep.Review.ToString()) { string OrderId = response.OrderId; string orderMessage = $"Order (Order id :{OrderId}) has been succesfully placed."; request.body = orderMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ReOrderSuceessMessage); } else { request.body = Constants.ReOrderFailureMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ReOrderFailureMessage); } return(request); } catch { request.body = Constants.ApiExceptionMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ApiExceptionMessage); return(request); } }
private void ProcessDisplayResponse(MemoryStream ms) { // Process the lines using (StreamReader sr = new StreamReader(ms)) { List <ChatRecord> chat_records = new List <ChatRecord>(); { string line; ChatRecord last_chat_record = null; while (null != (line = sr.ReadLine())) { string[] items = line.Split('\t'); { last_chat_record = new ChatRecord(); last_chat_record.Timestamp = items[0]; last_chat_record.Forum = items[1]; last_chat_record.Username = items[2]; last_chat_record.Comment = items[3]; } chat_records.Add(last_chat_record); } // Record the last epoch if (null != last_chat_record) { last_epoch = last_chat_record.Timestamp; } } // If there has been new chat, poll frequently if (0 < chat_records.Count) { current_sleep_backoff_seconds = 1; next_autopoll_datetime = DateTime.UtcNow.AddSeconds(current_sleep_backoff_seconds); } else { current_sleep_backoff_seconds = Math.Min(MAX_SLEEP_BACKOFF_SECONDS, 2 * current_sleep_backoff_seconds); next_autopoll_datetime = DateTime.UtcNow.AddSeconds(current_sleep_backoff_seconds); } // Update GUI Application.Current.Dispatcher.BeginInvoke(new Action(() => { bool is_currently_at_scroll_bottom = ObjChatFlowDocumentScroll.VerticalOffset == ObjChatFlowDocumentScroll.ScrollableHeight; foreach (ChatRecord chat_record in chat_records) { // Is this a different user chatting? if (null == previous_chat_record || chat_record.Username != previous_chat_record.Username || null == previous_paragraph) { previous_paragraph = new Paragraph(); ObjChatFlowDocument.Blocks.Add(previous_paragraph); previous_paragraph.TextAlignment = ToggleTextAlignment(); Run username_run = new Run(chat_record.Username); username_run.ToolTip = String.Format("{0} ({1})", chat_record.Username, chat_record.Timestamp); username_run.FontSize = 12; username_run.FontStyle = FontStyles.Italic; username_run.Foreground = ThemeColours.Background_Brush_Blue_VeryVeryDark; username_run.Cursor = Cursors.Pen; username_run.MouseDown += username_run_MouseDown; previous_paragraph.Inlines.Add(username_run); } previous_paragraph.Inlines.Add(new LineBreak()); previous_paragraph.Inlines.Add(new Run(chat_record.Comment)); previous_chat_record = chat_record; } if (is_currently_at_scroll_bottom) { ObjChatFlowDocumentScroll.ScrollToEnd(); } } )); } }
public void Post([FromBody] ChatRecord value) { _chatRecords.Add(value); }
private IncomingRequest GetAllOrders(IncomingRequest request, ChatRecord userlastRecordDb, string incomingMessage) { try { //var response = WebGETSync<List<OrderResponse>>(url); var response = new List <OrderResponse>() { new OrderResponse { Name = "Order1", Id = 111111, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order2", Id = 222222, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order3", Id = 333333, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order4", Id = 444444, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order5", Id = 555555, ValidatedOn = DateTime.Now }, }; var text = Constants.AllOrdersMessage; string firstOrder = ""; string secondOrder = ""; string thirdOrder = ""; string fourthOrder = ""; string fifthOrder = ""; if (response.Any()) { if (response[0] != null) { firstOrder = $"1.OrderName : {response[0].Name}, OrderId : {response[0].Id}, ValidatedOn : {response[0].ValidatedOn}"; } if (response[1] != null) { secondOrder = $"2.OrderName : {response[1].Name}, OrderId : {response[1].Id}, ValidatedOn : {response[1].ValidatedOn}"; } if (response[2] != null) { thirdOrder = $"3.OrderName : {response[2].Name}, OrderId : {response[2].Id}, ValidatedOn : {response[2].ValidatedOn}"; } if (response[3] != null) { fourthOrder = $"4.OrderName : {response[3].Name}, OrderId : {response[3].Id}, ValidatedOn : {response[3].ValidatedOn}"; } if (response[4] != null) { fifthOrder = $"5.OrderName : {response[4].Name}, OrderId : {response[4].Id}, ValidatedOn : {response[4].ValidatedOn}"; } var ordersList = text + "@" + firstOrder + "@" + secondOrder + "@" + thirdOrder + "@" + fourthOrder + "@" + fifthOrder; ordersList = ordersList.Replace("@", System.Environment.NewLine); request.body = ordersList; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.AllOrdersMessage); return(request); } else { request.body = Constants.NoOrderMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.NoOrderMessage); return(request); } } catch { request.body = Constants.ApiExceptionMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ApiExceptionMessage); return(request); } }
/// <summary> /// 存储过程 /// </summary> /// <param name="chatRecord"></param> /// <returns></returns> private bool AdddChatRecord(ChatRecord chatRecord) { conn.Execute("usp_insertChatRecord", param: chatRecord, commandType: System.Data.CommandType.StoredProcedure); return(true); }
private IncomingRequest GetOrderStatus(IncomingRequest request, string orderOptionNumber, ChatRecord userlastRecordDb, string incomingMessage) { try { var url = "/getAllOrders"; // var orders = WebGETSync<IList<OrderResponse>>(url); var orders = new List <OrderResponse>() { new OrderResponse { Name = "Order1", Id = 111111, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order2", Id = 222222, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order3", Id = 333333, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order4", Id = 444444, ValidatedOn = DateTime.Now }, new OrderResponse { Name = "Order5", Id = 555555, ValidatedOn = DateTime.Now }, }; string orderStatusUrl = ""; string orderName = ""; string orderId = ""; if (orderOptionNumber == "1") { orderStatusUrl = $"/getOrderStatusById?orderId={orders[0].Id}"; orderName = orders[0].Name; orderId = orders[0].Id.ToString(); } if (orderOptionNumber == "2") { orderStatusUrl = $"/getOrderStatusById?orderId={orders[1].Id}"; orderName = orders[1].Name; orderId = orders[1].Id.ToString(); } if (orderOptionNumber == "3") { orderStatusUrl = $"/getOrderStatusById?orderId={orders[2].Id}"; orderName = orders[2].Name; orderId = orders[2].Id.ToString(); } if (orderOptionNumber == "4") { orderStatusUrl = $"/getOrderStatusById?orderId={orders[3].Id}"; orderName = orders[3].Name; orderId = orders[3].Id.ToString(); } if (orderOptionNumber == "5") { orderStatusUrl = $"/getOrderStatusById?orderId={orders[4].Id}"; orderName = orders[4].Name; orderId = orders[4].Id.ToString(); } // var response = WebGETSync<OrderStatusResponse>(orderStatusUrl); var response = new OrderStatusResponse { Status = "LO" }; if (response.Status == "LO") { string orderStatus = $"Order {orderName} (Order id :{orderId}) has been locked." + $"\n Locked : Your order has been confirmed by the laboratory"; request.body = orderStatus; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.OrderStatusMessage); return(request); } if (response.Status == "OI") { string orderStatus = $"Order {orderName} (Order id :{orderId}) has been imported by lab." + $"\n Imported : Your order has successfully reached laboratory"; request.body = orderStatus; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.OrderStatusMessage); return(request); } if (response.Status == "CV") { string orderStatus = $"Order {orderName} (Order id :{orderId}) has been validated." + $"\n Validated: Your order is confirmed and yet to be received by laboratory."; request.body = orderStatus; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.OrderStatusMessage); return(request); } else { string orderStatus = $"Order {orderName} (Order id :{orderId}) is pending order." + $"\n Pending Order: Your order is not yet submitted and it is still in pending state."; request.body = orderStatus; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.OrderStatusMessage); request.body = orderStatus; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ReOrderSuceessMessage); } return(request); } catch { request.body = Constants.ApiExceptionMessage; SaveSentResponse(request, userlastRecordDb, incomingMessage, Constants.ApiExceptionMessage); return(request); } }