//���������Ϣ public override void AddChatMessage(ChatMessageInfo msg) { SqlConnection sqlC = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand("LiveChat_ChatMessagesAdd", sqlC); cmd.CommandType = CommandType.StoredProcedure; try { cmd.Parameters.Add("@ChatID", SqlDbType.Char, 39).Value = msg.ChatId; cmd.Parameters.Add("@FromName", SqlDbType.VarChar, 100).Value = msg.Name; cmd.Parameters.Add("@Message", SqlDbType.VarChar, 3000).Value = msg.Message; cmd.Parameters.Add("@SentDate", SqlDbType.BigInt).Value = msg.SentDate; cmd.Parameters.Add("@Type", SqlDbType.Int).Value = msg.Type; sqlC.Open(); cmd.ExecuteNonQuery(); cmd.Dispose(); sqlC.Close(); } catch { throw; } finally { if (sqlC != null) { if (sqlC.State == ConnectionState.Open) sqlC.Close(); sqlC.Dispose(); sqlC = null; } } }
public ChatMessageData(ChatMessageInfo info) { SessionId = info.SessionId; playerInfo = info.SenderInfo; TimeStamp = info.TimeStamp; AddMessage(info); }
public void AddMessage(ChatMessageInfo info) { ChatMessageData lastMsg = ChatMsgList.Count > 0 ? ChatMsgList[ChatMsgList.Count - 1] : null; if (lastMsg == null) { ChatMessageData msg = new ChatMessageData(info); ChatMsgList.Add(msg); } else { if (lastMsg.PlayerId == info.SenderInfo.PlayerId && info.TimeStamp - lastMsg.TimeStamp <= 60 && lastMsg.MsgCount < ItemMsgCount) { lastMsg.AddMessage(info); } else { ChatMessageData msg = new ChatMessageData(info); ChatMsgList.Add(msg); } } //ChatMsgList }
private async void DeleteChat(object obj) { if (await UserDialogs.Instance.ConfirmAsync(new ConfirmConfig { CancelText = "Cancel", OkText = "Ok", Message = App.Idioma.TwoLetterISOLanguageName == MyIdioma.Español ? "¿Estás seguro de borrar la conversación?" : "Are you sure you want to delete the conversation ?", })) { if (Preferences.Get("UserType", 0) == 1) { ChatDetail.TipoMensaje = 1; } else { ChatDetail.TipoMensaje = 2; } if (await Services.Chat.ChatService.DeleteChatAsync(ChatDetail)) { ChatMessageInfo.Clear(); // await Navigation.PopModalAsync(); } else { await App.Current.MainPage.DisplayAlert("JobMe", "Cant delete chat", "Ok"); } } }
public virtual IReadOnlyCollection <ChatMessageInfo> BuildChatAddedMessage(IChatAddedEvent <Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> @event) { var chatMessage = new ChatMessageInfo(MessageType.ChatRef, 0, immutable: true, style: MessageStyle("ChatAdded"), chatRefs: new List <ChatRefMessage>() { new ChatRefMessage(@event.Chat.ChatId, @event.Chat) }); var result = new List <ChatMessageInfo> { chatMessage }; var added = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Active).ToList(); if (added.Any()) { var addedContactMessages = added.Select(r => new ContactMessage(r)).ToList(); var addedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("AddedInitialChatParticipants"), contacts: addedContactMessages); result.Add(addedMessage); } var invited = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Invited).ToList(); if (invited.Any()) { var invitedContactMessages = invited.Select(r => new ContactMessage(r)).ToList(); var invitedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("InvitedInitialChatParticipants"), contacts: invitedContactMessages); result.Add(invitedMessage); } return(result); }
//点击传送文件 private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; String filename = openFileDialog1.FileName; FileStream fs = new FileStream(filename, FileMode.Open); byte[] fsbyte = new byte[fs.Length]; fs.Read(fsbyte, 0, Convert.ToInt32(fs.Length)); string fullname = @"c:\1\" + openFileDialog1.SafeFileName; Stream writeStream = myWebClient.OpenWrite(fullname, "PUT"); if (writeStream.CanWrite) { writeStream.Write(fsbyte, 0, Convert.ToInt32(fs.Length)); } else { MessageBox.Show("对不起,文件上传失败"); } fs.Close(); ChatRequestInfo myChatRequest = new ChatRequestInfo(); ChatMessageInfo msg = new ChatMessageInfo(); msg.MessageId = -1; msg.ChatId = myChatRequest.ChatId; msg.Message = "您可以开始下载文件"; msg.Name = "UploadOK"; msg.SentDate = DateTime.Now.ToUniversalTime().Ticks; msg.Type = 3;//* ws.AddMessage(msg); } }
void Grid_OnAction(string actionName, object actionArgument) { ((CMSChatPage)Page).CheckModifyPermission(SiteID); int chatMessageID = ValidationHelper.GetInteger(actionArgument, 0); switch (actionName) { case "delete": ChatMessageInfoProvider.DeleteChatMessageInfo(chatMessageID); break; case "reject": ChatMessageInfo cmi = ChatMessageInfoProvider.GetChatMessageInfo(chatMessageID); if (cmi != null) { if (cmi.ChatMessageRejected) { // Set message as 'not rejected' cmi.ChatMessageRejected = false; } else { // Set message as 'rejected' cmi.ChatMessageRejected = true; } ChatMessageInfoProvider.SetChatMessageInfo(cmi); } break; } }
private void HandleRecvChatMessage(Packet parsed) { ChatMessageInfo cmi = PacketManager.RecvChatMessage(parsed); if (ClientChatMessageInfo != null) { ClientChatMessageInfo(this, new ClientChatMessageEventArgs(cmi)); } }
private int SortByIDDescending(ChatMessageInfo x, ChatMessageInfo y) { if (x != null && y != null) { return(x.MessageId < y.MessageId ? 1 : -1); } else { return(1); } }
public static int SortByDate(ChatMessageInfo x, ChatMessageInfo y) { if (x.SentDate < y.SentDate) { return(1); } else if (x.SentDate > y.SentDate) { return(-1); } else { return(0); } }
public void AddNewChat(ChatMessageInfo input) { // validate token if (!base.ValidateToken(input.Token)) { return; } var tokenHelper = new Token(); var userId = Int32.Parse(tokenHelper.DecodeToken(input.Token).GetValue("id").ToString()); var chat = new db_Chat { Message = input.Message, Player_Id = userId }; _chatRepo.AddNewChat(chat); }
public void OnCSNewChatMessageNtf(CSNewChatMessageNtf ntf) { if (ntf == null) { return; } for (int i = 0; i < ntf.MessageList.Count; i++) { ChatMessageInfo info = ntf.MessageList[i]; if (sessionDataDict.ContainsKey(info.SessionId)) { sessionDataDict[info.SessionId].AddMessage(info); } } RefreshSubscribers((int)UpdateType.NewMessage); FlashWinTool.FlashWindow(FlashWinTool.GetProcessWnd()); }
//���������Ϣ public override void AddChatMessage(ChatMessageInfo msg) { bool cacheExists = false; List<ChatMessageInfo> messages = GetChatMessages(msg.ChatId, out cacheExists); // Get the last ID messages.Sort(SortByIDDescending); if (messages.Count > 0) msg.MessageId = messages[0].MessageId + 1; else msg.MessageId = 0; // Add the new requests messages.Add(msg); WriteChatMessages(msg.ChatId, cacheExists, messages); }
void c_ClientChatMessageInfo(object sender, ClientChatMessageEventArgs e) { Client c = (Client)sender; ChatMessageInfo cmi = e.Info; Client[] nearbyClients = GetNearByClients(c); Client target = null; if (cmi.Type == ChatType.Whisper) { if (cmi.TargetName != "") { target = GetClientByName(cmi.TargetName); } else { target = GetClientByCharacterID(cmi.TargetID); } if (target != null) { cmi.TargetID = target.MyCharacter.CharacterId; byte[] bufferSendMessage = PacketManager.SendChatMessage(c.MyCharacter, cmi); target.Send(bufferSendMessage); } else { cmi.TargetID = 0; } byte[] bufferSendMessage2 = PacketManager.SendChatMessage(c.MyCharacter, cmi); c.Send(bufferSendMessage2); } else { if (cmi.Message.StartsWith("!")) { cmi.Type = ChatType.Notice; cmi.Message = cmi.Message.Substring(1); } byte[] bufferSendMessage = PacketManager.SendChatMessage(c.MyCharacter, cmi); SendSpecific(nearbyClients, bufferSendMessage); } }
public async Task <ChatMessage> Update(Guid chatId, Guid messageId, ChatMessageInfo messageInfo, Guid modifierId) { await Task.Yield(); var message = Store.Messages[chatId][messageId]; message.Type = messageInfo.Type; message.Immutable = messageInfo.Immutable; message.Style = messageInfo.Style; message.Metadata = messageInfo.Metadata; message.Text = messageInfo.Text; message.Quote = messageInfo.Quote; message.MessageAttachments = messageInfo.MessageAttachments; message.ChatRefs = messageInfo.ChatRefs; message.Contacts = messageInfo.Contacts; message.Version += 1; return(message); }
public virtual IReadOnlyCollection <ChatMessageInfo> BuildBulkParticipantsAppendedMessages(IChatParticipantsAppendedEvent <List <ParticipationResult>, ParticipationResult, ChatParticipant> @event) { var result = new List <ChatMessageInfo>(); if (@event.Added.Any()) { var addedContactMessages = @event.Added.Select(r => new ContactMessage(r.Participant)).ToList(); var addedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("ChatBulkAdded"), contacts: addedContactMessages); result.Add(addedMessage); } if (@event.Invited.Any()) { var invitedContactMessages = @event.Invited.Select(r => new ContactMessage(r.Participant)).ToList(); var invitedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("ChatBulkInvited"), contacts: invitedContactMessages); result.Add(invitedMessage); } return(result); }
//添加聊天信息 public override void AddChatMessage(ChatMessageInfo msg) { bool cacheExists = false; List <ChatMessageInfo> messages = GetChatMessages(msg.ChatId, out cacheExists); // Get the last ID messages.Sort(SortByIDDescending); if (messages.Count > 0) { msg.MessageId = messages[0].MessageId + 1; } else { msg.MessageId = 0; } // Add the new requests messages.Add(msg); WriteChatMessages(msg.ChatId, cacheExists, messages); }
//添加聊天信息 public override void AddChatMessage(ChatMessageInfo msg) { SqlConnection sqlC = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand("LiveChat_ChatMessagesAdd", sqlC); cmd.CommandType = CommandType.StoredProcedure; try { cmd.Parameters.Add("@ChatID", SqlDbType.Char, 39).Value = msg.ChatId; cmd.Parameters.Add("@FromName", SqlDbType.VarChar, 100).Value = msg.Name; cmd.Parameters.Add("@Message", SqlDbType.VarChar, 3000).Value = msg.Message; cmd.Parameters.Add("@SentDate", SqlDbType.BigInt).Value = msg.SentDate; cmd.Parameters.Add("@Type", SqlDbType.Int).Value = msg.Type; sqlC.Open(); cmd.ExecuteNonQuery(); cmd.Dispose(); sqlC.Close(); } catch { throw; } finally { if (sqlC != null) { if (sqlC.State == ConnectionState.Open) { sqlC.Close(); } sqlC.Dispose(); sqlC = null; } } }
public async Task <IActionResult> Chat([FromRoute] int Id) { var Chat = await _context.Chats .Include(x => x.Messages) .FirstOrDefaultAsync(x => x.Id == Id); var messages = new List <chatMessages>(); foreach (var mesage in Chat.Messages) { messages.Add(new chatMessages { Id = mesage.Id, Name = mesage.Name, Text = mesage.Text, TimeStamp = mesage.TimeStamp }); } var chat = new ChatMessageInfo { chatId = Chat.Id, success = true, Messages = messages }; return(Ok(chat)); }
public static int SortByDate(ChatMessageInfo x, ChatMessageInfo y) { if (x.SentDate < y.SentDate) return 1; else if (x.SentDate > y.SentDate) return -1; else return 0; }
public Task Get([FromQuery] ChatMessageInfo info) { return(hub.SendMsg(info)); }
public AddChatMessageCommand(Guid initiatorUserId, Guid chatId, Guid messageId, DateTime timestamp, long index, bool isSystem, ChatMessageInfo messageInfo) : base(initiatorUserId, chatId, messageId, timestamp, index, isSystem, messageInfo) { }
public abstract void AddChatMessage(ChatMessageInfo msg);
public ClientChatMessageEventArgs(ChatMessageInfo message) { this.chat = message; }
public void AddMessage(ChatMessageInfo info) { Message += string.Format("{0}\n", info.Content); MsgCount++; }
/// <summary> /// Invoked when the send button is clicked. /// </summary> /// <param name="obj">The object</param> private async void SendClicked(object obj) { try { if (!string.IsNullOrWhiteSpace(this.NewMessage)) { int userid = Preferences.Get("UserID", 0); JobMe.Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage() { Message = this.NewMessage, Time = DateTime.Now, ContactID = ChatDetail.ContactID, UserID = ChatDetail.UserID, IDPosition = ChatDetail.IDPosition, IsReceived = false, }; var message = new SimpleTextMessage(ProfileName) { Text = this.NewMessage, Recipient = ChatDetail.ContactID.ToString(), Avatar = userid.ToString(), Color = ChatDetail.IDPosition.ToString(), //GroupName = ChatDetail.IDPosition.ToString(), }; //Este mensaje es el que se agrega a la lista ChatMessageInfo.Add(msg); //borra el mensaje para que actualice el chat this.NewMessage = null; //Verifica que este conectado al hub if (!App.ChatService1.IsConnected) { App.ChatService1 = new TheChat.Core.Services.ChatService(); if (Preferences.Get("UserID", 0) > 0) { await App.ChatService1.InitAsync(Preferences.Get("UserID", 0).ToString()); } } //Este es el mensaje que se envia al hub await App.ChatService1.SendMessageAsync(message); if (Preferences.Get("UserType", 0) == 1) //Employee { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Name", string.Empty), msg.Message, "chat")); } else { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Company", string.Empty), msg.Message, "chat")); } //Esto es para agregarlo a la base de datos await Services.Chat.ChatService.AddMessageAsync(msg); } } catch (Exception ex) { // throw; } }
//��������ļ� private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; String filename = openFileDialog1.FileName; FileStream fs = new FileStream(filename, FileMode.Open); byte[] fsbyte = new byte[fs.Length]; fs.Read(fsbyte, 0, Convert.ToInt32(fs.Length)); string fullname = @"c:\1\" + openFileDialog1.SafeFileName; Stream writeStream = myWebClient.OpenWrite(fullname, "PUT"); if (writeStream.CanWrite) { writeStream.Write(fsbyte, 0, Convert.ToInt32(fs.Length)); } else { MessageBox.Show("�Բ����ļ��ϴ�ʧ��"); } fs.Close(); ChatRequestInfo myChatRequest = new ChatRequestInfo(); ChatMessageInfo msg = new ChatMessageInfo(); msg.MessageId = -1; msg.ChatId = myChatRequest.ChatId; msg.Message = "�����Կ�ʼ�����ļ�"; msg.Name = "UploadOK"; msg.SentDate = DateTime.Now.ToUniversalTime().Ticks; msg.Type = 3;//* ws.AddMessage(msg); } }
/// <summary> /// Invoked when the attachment icon is clicked. /// </summary> /// <param name="obj">The object</param> private async void AttachmentClicked(object obj) { int userid = Preferences.Get("UserID", 0); if (!await JobMePermissions.GalleryPermission()) { return; } var options = new PickMediaOptions(); options.CompressionQuality = 50; var photo = await CrossMedia.Current.PickPhotoAsync(options); if (photo != null) { var ext = photo.Path.Split('.').Last(); var stream = photo.GetStreamWithImageRotatedForExternalStorage(); var bytes = ImageHelper.ReadFully(stream); var base64Photo = Convert.ToBase64String(bytes); string myfoto = base64Photo; string fname = Path.GetFileName(photo.Path); string To = string.Empty; //mensaje para enviar var message = new PhotoMessage(ProfileName) { Base64Photo = base64Photo, FileEnding = fname, Recipient = ChatDetail.ContactID.ToString(), Avatar = userid.ToString(), Color = ChatDetail.IDPosition.ToString(), }; //mensaje para mostrar Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage() { Time = DateTime.Now, ContactID = ChatDetail.ContactID, UserID = ChatDetail.UserID, IDPosition = ChatDetail.IDPosition, IsReceived = false, Base64Photo = photo.Path, ImageUrl = EndPoint.BLOB_ENDPOINT + fname, IsImage = true }; //Verifica que este conectado al hub if (!App.ChatService1.IsConnected) { App.ChatService1 = new TheChat.Core.Services.ChatService(); if (Preferences.Get("UserID", 0) > 0) { await App.ChatService1.InitAsync(Preferences.Get("UserID", 0).ToString()); } } //Este es el mensaje que se envia al hub await App.ChatService1.SendMessageAsync(message); //Este mensaje es el que se agrega a la lista ChatMessageInfo.Add(msg); if (Preferences.Get("UserType", 0) == 1) //Employee { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Name", string.Empty), "📷 Imagen", "chat")); } else { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Company", string.Empty), "📷 Imagen", "chat")); } //Ocultar el teclado en ios MessagingCenter.Send <ChatMessageViewModel, string>(this, "FocusKeyboardStatus", "nada"); //Esto es para agregarlo a la base de datos await Services.Chat.ChatService.AddMessageAsync(msg); } }
/// <summary> /// Invoked when the camera icon is clicked. /// </summary> /// <param name="obj">The object</param> private async void CameraClicked(object obj) { try { int userid = Preferences.Get("UserID", 0); if (!await JobMePermissions.CameraPermission()) { return; } var mediaOptions = new StoreCameraMediaOptions() { SaveToAlbum = false, Directory = "Sample", PhotoSize = Device.RuntimePlatform == Device.Android?PhotoSize.Full: PhotoSize.Medium, DefaultCamera = Plugin.Media.Abstractions.CameraDevice.Front, RotateImage = false, CompressionQuality = 80, AllowCropping = true, SaveMetaData = false, }; //options.CompressionQuality = 50; var photo = await CrossMedia.Current.TakePhotoAsync(mediaOptions); if (photo != null) { var ext = photo.Path.Split('.').Last(); var stream = photo.GetStreamWithImageRotatedForExternalStorage(); var bytes = ImageHelper.ReadFully(stream); var base64Photo = Convert.ToBase64String(bytes); string myfoto = base64Photo; string fname = Path.GetFileName(photo.Path); string To = string.Empty; //mensaje para enviar var message = new PhotoMessage(ProfileName) { Base64Photo = base64Photo, FileEnding = fname, Recipient = ChatDetail.ContactID.ToString(), Avatar = userid.ToString(), Color = ChatDetail.IDPosition.ToString(), }; //mensaje para mostrar JobMe.Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage() { Time = DateTime.Now, ContactID = ChatDetail.ContactID, UserID = ChatDetail.UserID, IDPosition = ChatDetail.IDPosition, IsReceived = false, Base64Photo = photo.Path, ImageUrl = EndPoint.BLOB_ENDPOINT + fname, IsImage = true }; //Este mensaje es el que se agrega a la lista ChatMessageInfo.Add(msg); //Verifica que este conectado al hub if (!App.ChatService1.IsConnected) { App.ChatService1 = new TheChat.Core.Services.ChatService(); if (Preferences.Get("UserID", 0) > 0) { await App.ChatService1.InitAsync(Preferences.Get("UserID", 0).ToString()); } } //Este es el mensaje que se envia al hub await App.ChatService1.SendMessageAsync(message); if (Preferences.Get("UserType", 0) == 1) //Employee { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Name", string.Empty), "📷 Imagen", "chat")); } else { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Company", string.Empty), "📷 Imagen", "chat")); } //Esto es para agregarlo a la base de datos await Services.Chat.ChatService.AddMessageAsync(msg); //Ocultar el teclado en ios MessagingCenter.Send <ChatMessageViewModel, string>(this, "FocusKeyboardStatus", "nada"); } // UserDialogs.Instance.HideLoading(); } catch (Exception ex) { await App.Current.MainPage.DisplayAlert("JobMe", ex.Message, "ok"); //throw; } }
private async void VideoClicked(object obj) { int userid = Preferences.Get("UserID", 0); try { if (!await JobMePermissions.CameraPermission()) { return; } await CrossMedia.Current.Initialize(); //var photo = await CrossMedia.Current.PickVideoAsync(); var photo = await CrossMedia.Current.TakeVideoAsync(new StoreVideoOptions { SaveToAlbum = false, Quality = Device.RuntimePlatform == Device.Android?VideoQuality.High:VideoQuality.Medium, CompressionQuality = 90, DefaultCamera = CameraDevice.Front, Directory = "Media", Name = "video.mp4", }); // var photo = await CrossMedia.Current.TakeVideoAsync(mediaOptions); string fname = string.Empty; string myfilename = string.Empty; if (photo != null) { //var stream = photo.GetStream(); FileInfo fi; UserDialogs.Instance.ShowLoading("Uploading video"); switch (Device.RuntimePlatform) { case Device.iOS: fi = new FileInfo(photo.Path); string extn = fi.Extension; var newname = photo.Path.Replace(extn, ".mp4"); fname = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Millisecond.ToString() + "video.mp4"; await UserService.UploadVideo(photo, Preferences.Get("UserID", 0).ToString() + "_" + fname); //fname = Path.GetFileName(photo.Path); myfilename = Preferences.Get("UserID", 0).ToString() + "_" + fname.Split('.').First(); break; case Device.Android: //Stream stream = null; fname = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Millisecond.ToString() + "video.mp4"; try { UserDialogs.Instance.ShowLoading("Compressing video"); string compressedfile = await DependencyService.Get <IVideoCompress>().CompressVideo(photo.Path); Stream stream = File.Open(compressedfile, FileMode.Open, System.IO.FileAccess.ReadWrite); await UserService.UploadVideo(stream, Preferences.Get("UserID", 0).ToString() + "_" + fname); } catch (Exception) { await UserService.UploadVideo(photo, Preferences.Get("UserID", 0).ToString() + "_" + fname); //throw; } break; default: break; } myfilename = Preferences.Get("UserID", 0).ToString() + "_" + fname.Split('.').First(); MemoryStream imagen = DependencyService.Get <IVideoBitMap>().GenerateThumbImage(photo.Path, 2); //var bytes = ImageHelper.ReadFully(imagen); var base64Photo = Convert.ToBase64String(imagen.ToArray()); string To = string.Empty; //mensaje para enviar var message = new VideoMessage(ProfileName) { Base64Photo = base64Photo, FileEnding = myfilename + ".jpg", Recipient = ChatDetail.ContactID.ToString(), //VideoUrl = EndPoint.BACKEND_ENDPOINT + "/uploads/" +fname, VideoUrl = EndPoint.BACKEND_ENDPOINT + "/uploads/" + myfilename + ".mp4", VideoImage = EndPoint.BLOB_ENDPOINT + myfilename + ".jpg", IsVideo = true, Avatar = userid.ToString(), Color = ChatDetail.IDPosition.ToString(), }; //Verificar que esta conectado al HUb if (!App.ChatService1.IsConnected) { App.ChatService1 = new TheChat.Core.Services.ChatService(); if (Preferences.Get("UserID", 0) > 0) { await App.ChatService1.InitAsync(Preferences.Get("UserID", 0).ToString()); } } //Este es el mensaje que se envia al hub await App.ChatService1.SendMessageAsync(message); UserDialogs.Instance.HideLoading(); //mensaje para mostrar JobMe.Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage() { Time = DateTime.Now, ContactID = ChatDetail.ContactID, UserID = ChatDetail.UserID, IDPosition = ChatDetail.IDPosition, IsReceived = false, Base64Photo = base64Photo, ImageUrl = EndPoint.BLOB_ENDPOINT + myfilename + ".jpg", VideoUrl = EndPoint.BACKEND_ENDPOINT + "/uploads/" + myfilename + ".mp4", IsVideo = true }; if (Preferences.Get("UserType", 0) == 1) //Employee { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Name", string.Empty), "📹 Video", "chat")); } else { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Company", string.Empty), "📹 Video", "chat")); } //Esto es para agregarlo a la base de datos await Services.Chat.ChatService.AddMessageAsync(msg); //Este mensaje es el que se agrega a la lista ChatMessageInfo.Add(msg); //Ocultar el teclado en ios //MessagingCenter.Send<ChatMessageViewModel, string>(this, "FocusKeyboardStatus", "nada"); } // UserDialogs.Instance.HideLoading(); } catch (Exception ex) { string errmsg; if (ex.HResult == -2146233029) { errmsg = "La operación tardo demasiado, verifica tu conexión a internet"; } else { errmsg = "No se pudo enviar el video, intenta nuevamente"; } await App.Current.MainPage.DisplayAlert("JobMe", errmsg, "ok"); UserDialogs.Instance.HideLoading(); //throw; } }
public void ChatService_OnReceivedMessage(object sender, TheChat.Core.EventHandlers.MessageEventArgs e) { string nombre; if (Preferences.Get("UserType", 0) == 1) //Employee { nombre = Preferences.Get("Name", string.Empty); } else { nombre = Preferences.Get("Company", string.Empty); } JobMe.Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage(); //Device.BeginInvokeOnMainThread(() => //{ //si el mensaje es para mi if (nombre == e.Message.Sender && e.Message.Id != idmessage && e.Message.Color == ChatDetail.IDPosition.ToString() && e.Message.Avatar == ChatDetail.ContactID.ToString()) { idmessage = e.Message.Id; //Hay actualizar la lista de contactos if (e.Message.TypeInfo.Name == nameof(SimpleTextMessage)) // Memsaje de textpo { var z = (SimpleTextMessage)e.Message; msg = new JobMe.Models.Chat.ChatMessage() { Message = z.Text, Time = z.Timestamp, IsReceived = true, }; ChatMessageInfo.Add(msg); } else if (e.Message.TypeInfo.Name == nameof(PhotoMessage)) //Mensaje de imagen { var z = (PhotoMessage)e.Message; msg = new JobMe.Models.Chat.ChatMessage() { Base64Photo = z.Base64Photo, Time = z.Timestamp, //ContactID = ChatDetail.ContactID, //UserID = ChatDetail.UserID, //IDPosition = ChatDetail.IDPosition, IsReceived = true, }; ChatMessageInfo.Add(msg); } else if (e.Message.TypeInfo.Name == nameof(PhotoUrlMessage)) //Mensaje de imagen { var y = (PhotoUrlMessage)e.Message; msg = new JobMe.Models.Chat.ChatMessage() { Time = y.Timestamp, ImageUrl = y.Url, IsReceived = true, IsFile = y.IsFile, Message = y.IsFile ? HttpUtility.UrlDecode(Path.GetFileName(y.Url)) : y.Url, }; // var result = Path.GetFileName(y.Url); ChatMessageInfo.Add(msg); } else if (e.Message.TypeInfo.Name == nameof(VideoMessage)) //Mensaje de video { var y = (VideoMessage)e.Message; msg = new JobMe.Models.Chat.ChatMessage() { Time = y.Timestamp, ImageUrl = y.VideoImage, IsReceived = true, IsVideo = true, ImagePath = y.VideoUrl, Base64Photo = y.Base64Photo // Message = y.IsFile ? HttpUtility.UrlDecode(Path.GetFileName(y.Url)) : y.Url, }; // var result = Path.GetFileName(y.Url); ChatMessageInfo.Add(msg); } } //}); }
private async void SendFileClicked(object obj) { string[] fileTypes; try { var status = await Permissions.CheckStatusAsync <Permissions.StorageRead>(); if (status != PermissionStatus.Granted) { status = await Permissions.RequestAsync <Permissions.StorageRead>(); } if (status == PermissionStatus.Granted) { var pickedFile = await Plugin.FilePicker.CrossFilePicker.Current.PickFile(); if (pickedFile != null) { var stream = pickedFile.GetStream(); var bytes = ImageHelper.ReadFully(stream); var base64Photo = Convert.ToBase64String(bytes); string myfoto = base64Photo; string fname = pickedFile.FileName; //mensaje para enviar var message = new PhotoMessage(ProfileName) { Base64Photo = base64Photo, FileEnding = fname, Recipient = ChatDetail.ContactID.ToString(), IsFile = true, Avatar = ChatDetail.UserID.ToString(), Color = ChatDetail.IDPosition.ToString(), }; //mensaje para mostrar JobMe.Models.Chat.ChatMessage msg = new JobMe.Models.Chat.ChatMessage() { Time = DateTime.Now, ContactID = ChatDetail.ContactID, UserID = ChatDetail.UserID, IDPosition = ChatDetail.IDPosition, IsReceived = false, IsFile = true, Message = fname, }; //Verifica que este conectado al hub if (!App.ChatService1.IsConnected) { App.ChatService1 = new TheChat.Core.Services.ChatService(); if (Preferences.Get("UserID", 0) > 0) { await App.ChatService1.InitAsync(Preferences.Get("UserID", 0).ToString()); } } //Este mensaje es el que se agrega a la lista ChatMessageInfo.Add(msg); //Este es el mensaje que se envia al hub await App.ChatService1.SendMessageAsync(message); if (Preferences.Get("UserType", 0) == 1) //Employee { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Name", string.Empty), "📄 Archivo", "chat")); } else { Task.Run(() => Services.PushNotifications.PushServices.SendPushAsync(ChatDetail.ContactID, Preferences.Get("Company", string.Empty), "📄 Archivo", "chat")); } //Ocultar el teclado en ios MessagingCenter.Send <ChatMessageViewModel, string>(this, "FocusKeyboardStatus", "nada"); //Esto es para agregarlo a la base de datos await Services.Chat.ChatService.AddMessageAsync(msg); } } } catch (Exception ex) { } // FileData fileData = await Plugin.FilePicker.CrossFilePicker.Current.PickFile(allowedDocumentTypes);// // App.Current.MainPage.DisplayAlert("JobMe", "Solo disponible para Premium", "OK"); }
public async Task <ChatMessage> Create(Guid chatId, Guid userId, Guid messageId, ChatMessageInfo messageInfo, DateTime timestamp, long index, bool isSystem, Guid creatorId) { await Task.Yield(); var message = new ChatMessage(messageId, timestamp, index, userId, MessageStatus.Actual, null, isSystem, messageInfo); Store.Messages.AddOrUpdate(chatId, k => new ConcurrentDictionary <Guid, ChatMessage>(Enumerable.Repeat(new KeyValuePair <Guid, ChatMessage>(message.MessageId, message), 1)), (k, ov) => { ov.TryAdd(message.MessageId, message); return(ov); }); return(message); }
public virtual IChatMessageAddedEvent <ChatInfo, ChatUser, ChatMessage, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> BuildChatMessageAddedEvent(Guid initiatorUserId, Guid chatId, Guid messageId, DateTime timestamp, long index, bool isSystem, ChatMessageInfo chatMessageInfo) { var message = new ChatMessage(messageId, timestamp, index, initiatorUserId, MessageStatus.Actual, null, isSystem, chatMessageInfo); return(new ChatMessageAddedEvent(initiatorUserId, chatId, message)); }
private int SortByIDDescending(ChatMessageInfo x, ChatMessageInfo y) { if (x != null && y != null) return x.MessageId < y.MessageId ? 1 : -1; else return 1; }
public EditChatMessageCommand(Guid initiatorUserId, Guid chatId, Guid messageId, ChatMessageInfo messageInfo, Guid archivedMessageId) : base(initiatorUserId, chatId, messageId, messageInfo, archivedMessageId) { }