Example #1
0
    //���������Ϣ
    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;
            }
        }
    }
Example #2
0
 public ChatMessageData(ChatMessageInfo info)
 {
     SessionId  = info.SessionId;
     playerInfo = info.SenderInfo;
     TimeStamp  = info.TimeStamp;
     AddMessage(info);
 }
Example #3
0
        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
        }
Example #4
0
        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");
                }
            }
        }
Example #5
0
        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);
        }
Example #6
0
 //点击传送文件
 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);
     }
 }
Example #7
0
    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;
        }
    }
Example #8
0
        private void HandleRecvChatMessage(Packet parsed)
        {
            ChatMessageInfo cmi = PacketManager.RecvChatMessage(parsed);

            if (ClientChatMessageInfo != null)
            {
                ClientChatMessageInfo(this, new ClientChatMessageEventArgs(cmi));
            }
        }
Example #9
0
 private int SortByIDDescending(ChatMessageInfo x, ChatMessageInfo y)
 {
     if (x != null && y != null)
     {
         return(x.MessageId < y.MessageId ? 1 : -1);
     }
     else
     {
         return(1);
     }
 }
Example #10
0
 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);
     }
 }
Example #11
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);
        }
Example #12
0
 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());
 }
Example #13
0
    //���������Ϣ
    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);
    }
Example #14
0
        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);
            }
        }
Example #15
0
        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);
        }
Example #16
0
        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);
        }
Example #17
0
    //添加聊天信息
    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);
    }
Example #18
0
    //添加聊天信息
    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;
            }
        }
    }
Example #19
0
        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));
        }
Example #20
0
 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));
 }
Example #22
0
 public AddChatMessageCommand(Guid initiatorUserId, Guid chatId, Guid messageId, DateTime timestamp, long index, bool isSystem, ChatMessageInfo messageInfo) : base(initiatorUserId, chatId, messageId, timestamp, index, isSystem, messageInfo)
 {
 }
Example #23
0
	public abstract void AddChatMessage(ChatMessageInfo msg);
Example #24
0
 public ClientChatMessageEventArgs(ChatMessageInfo message)
 {
     this.chat = message;
 }
Example #25
0
 public void AddMessage(ChatMessageInfo info)
 {
     Message += string.Format("{0}\n", info.Content);
     MsgCount++;
 }
Example #26
0
        /// <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;
            }
        }
Example #27
0
 //��������ļ�
 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);
     }
 }
Example #28
0
        /// <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);
            }
        }
Example #29
0
        /// <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;
            }
        }
Example #30
0
        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;
            }
        }
Example #31
0
        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);
                }
            }
            //});
        }
Example #32
0
        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");
        }
Example #33
0
        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);
        }
Example #34
0
        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));
        }
Example #35
0
 private int SortByIDDescending(ChatMessageInfo x, ChatMessageInfo y)
 {
     if (x != null && y != null)
         return x.MessageId < y.MessageId ? 1 : -1;
     else
         return 1;
 }
Example #36
0
 public EditChatMessageCommand(Guid initiatorUserId, Guid chatId, Guid messageId, ChatMessageInfo messageInfo, Guid archivedMessageId) : base(initiatorUserId, chatId, messageId, messageInfo, archivedMessageId)
 {
 }