void RecDialog_OnFinishRecording(object sender, StringEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.FilePath) && CrossConnectivity.Current.IsConnected)
            {
                var filePath = ChatDetailViewUtils.SetNewFileNameOfVoice(e.FilePath);
                ViewModel.AudioFileToBeSent.Add(filePath);

                var model = new AddGroupChatHistoryItemRequest()
                {
                    SENDER_ID   = GetMyUserId(),
                    SENDER_NAME = GetMyUserName(),
                    GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                    MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_AUDIO,
                    MSG_CONTENT = txtContent.Text.Trim(),
                };

                var bArray       = File.ReadAllBytes(filePath);
                var fileName     = Path.GetFileName(filePath);
                var requestModel = new AddGroupVoiceMessageItemRequest()
                {
                    FilebArray  = bArray,
                    FileName    = fileName,
                    ItemRequest = model
                };
                ViewModel.SendVoiceMessageCommand.Execute(requestModel);
            }
        }
        async void AttachVideoTakeHandler(object sender, EventArgs e)
        {
            RemoveAttachToolBoxFragment();
            var PermStorage = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Storage);

            var PermMic = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Microphone);

            var PermCamera = await CheckNecessaryPermissions(Permission.Camera);

            if (PermStorage && PermCamera && PermMic && CrossConnectivity.Current.IsConnected)
            {
                if (!CrossMedia.Current.IsTakeVideoSupported)
                {
                    DialogUtils.ShowOKDialog(this, @"Warning", @"No video available.");
                    return;
                }
                if (ViewModel.PhotoFileToBeSent == null)
                {
                    ViewModel.PhotoFileToBeSent = new List <MediaFile>();
                }
                var mediaFile = await CrossMedia.Current.TakeVideoAsync(new StoreVideoOptions()
                {
                    Directory = "Private",
                    Name      = string.Format("{0}_{1}.mp4", DateConverter.GetUnixTimeSpanFromDate(DateTime.Now), GetMyUserId())
                });

                if (mediaFile != null)
                {
                    if (new FileInfo(mediaFile.Path).Length / 1048576 > 50)
                    {
                        DialogUtils.ShowOKDialog(this, @"Warning", @"Large File.");
                        return;
                    }
                    ViewModel.PhotoFileToBeSent.Add(mediaFile);

                    var model = new AddGroupChatHistoryItemRequest()
                    {
                        SENDER_ID   = GetMyUserId(),
                        SENDER_NAME = GetMyUserName(),
                        GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                        MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_VIDEO,
                        MSG_CONTENT = "",
                    };
                    ViewModel.SendGroupMessageCommand.Execute(model);
                }
            }
            else
            {
                ViewModel.PhotoFileToBeSent.Clear();
            }
        }
        async void AttachImageTakeHandler(object sender, EventArgs e)
        {
            RemoveAttachToolBoxFragment();
            try
            {
                var PermStorage = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Storage);

                var CameraStorage = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Camera);

                if (PermStorage && CameraStorage)
                {
                    if (!CrossMedia.Current.IsCameraAvailable && !CrossMedia.Current.IsTakePhotoSupported)
                    {
                        DialogUtils.ShowOKDialog(this, @"Warning", @"No Camera available.");
                        return;
                    }
                    if (ViewModel.PhotoFileToBeSent == null)
                    {
                        ViewModel.PhotoFileToBeSent = new List <MediaFile>();
                    }
                    var mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        Directory = "Group",
                        Name      = DateTime.Now.ToString() + ".jpg",
                        PhotoSize = PhotoSize.Large
                    });

                    if (mediaFile != null)
                    {
                        ViewModel.PhotoFileToBeSent.Add(mediaFile);
                        var model = new AddGroupChatHistoryItemRequest()
                        {
                            SENDER_ID   = GetMyUserId(),
                            SENDER_NAME = GetMyUserName(),
                            GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                            MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_IMAGE,
                            MSG_CONTENT = "",
                        };
                        ViewModel.SendGroupMessageCommand.Execute(model);
                    }
                }
                else
                {
                    ViewModel.PhotoFileToBeSent = null;
                }
            }
            catch (Exception e2)
            {
            }
        }
        async void AttachImageChooseHandler(object sender, EventArgs e)
        {
            RemoveAttachToolBoxFragment();
            try
            {
                var PermStorage = await CheckNecessaryPermissions(Permission.Storage);

                if (PermStorage)
                {
                    if (!CrossMedia.Current.IsPickPhotoSupported)
                    {
                        DialogUtils.ShowOKDialog(this, @"Warning", @"No gallery available.");
                        return;
                    }
                    if (ViewModel.PhotoFileToBeSent == null)
                    {
                        ViewModel.PhotoFileToBeSent = new List <MediaFile>();
                    }
                    var mediaFile = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                    {
                        PhotoSize = PhotoSize.Medium
                    });

                    if (mediaFile != null)
                    {
                        ViewModel.PhotoFileToBeSent.Add(mediaFile);
                        var model = new AddGroupChatHistoryItemRequest()
                        {
                            SENDER_ID   = GetMyUserId(),
                            SENDER_NAME = GetMyUserName(),
                            GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                            MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_IMAGE,
                            MSG_CONTENT = ""
                        };
                        ViewModel.SendGroupMessageCommand.Execute(model);
                    }
                }
                else
                {
                    ViewModel.PhotoFileToBeSent = null;
                }
            }
            catch (Exception e1)
            {
                Console.WriteLine(e1.ToString());
            }
        }
        async void AttachVideoChooseHandler(object sender, EventArgs e)
        {
            RemoveAttachToolBoxFragment();
            var PermStorage = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Storage);

            var PermMic = await CheckNecessaryPermissions(Plugin.Permissions.Abstractions.Permission.Microphone);

            if (PermStorage && CrossConnectivity.Current.IsConnected)
            {
                if (!CrossMedia.Current.IsPickVideoSupported)
                {
                    DialogUtils.ShowOKDialog(this, @"Warning", @"No gallery available.");
                    return;
                }
                if (ViewModel.PhotoFileToBeSent == null)
                {
                    ViewModel.PhotoFileToBeSent = new List <MediaFile>();
                }
                var mediaFile = await CrossMedia.Current.PickVideoAsync();

                if (mediaFile != null)
                {
                    if (new FileInfo(mediaFile.Path).Length / 1048576 > 50)
                    {
                        DialogUtils.ShowOKDialog(this, @"Warning", @"Large File.");
                        return;
                    }

                    ViewModel.PhotoFileToBeSent.Add(mediaFile);
                    var model = new AddGroupChatHistoryItemRequest()
                    {
                        SENDER_ID   = GetMyUserId(),
                        SENDER_NAME = GetMyUserName(),
                        GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                        MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_VIDEO,
                        MSG_CONTENT = ""
                    };

                    ViewModel.SendGroupMessageCommand.Execute(model);
                }
            }
            else
            {
                ViewModel.PhotoFileToBeSent.Clear();
            }
        }
        async void File_AttachFileHandler(object sender, EventArgs e)
        {
            RemoveAttachToolBoxFragment();
            var PermStorage = await CheckNecessaryPermissions(Permission.Storage);

            if (PermStorage && CrossConnectivity.Current.IsConnected)
            {
                try
                {
                    FileData fileData = await CrossFilePicker.Current.PickFile();

                    if (fileData == null)
                    {
                        return;
                    }
                    var extFile = Path.GetExtension(fileData.FilePath);
                    if (!string.Equals(extFile.ToLower(), ".pdf"))
                    {
                        DialogUtils.ShowOKDialog(this, "Warning", "Only Pdf is available to send");
                        return;
                    }
                    if (ViewModel.BinaryFileToBeSent == null)
                    {
                        ViewModel.BinaryFileToBeSent = new List <FileData>();
                    }
                    ViewModel.BinaryFileToBeSent.Add(fileData);

                    var model = new AddGroupChatHistoryItemRequest()
                    {
                        SENDER_ID   = GetMyUserId(),
                        SENDER_NAME = GetMyUserName(),
                        GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
                        MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_PDF,
                        MSG_CONTENT = ""
                    };
                    ViewModel.SendGroupMessageCommand.Execute(model);
                }
                catch (Exception ex)
                {
                }
            }
            else
            {
                ViewModel.BinaryFileToBeSent.Clear();
            }
        }
 void FabSend_Click(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(txtContent.Text.Trim()))
     {
         var model = new AddGroupChatHistoryItemRequest()
         {
             SENDER_ID   = GetMyUserId(),
             SENDER_NAME = GetMyUserName(),
             GROUP_ID    = ViewModel.CurrentlyOpenDTO.GROUP_ID,
             MSG_TYPE    = GlobalConstants.CHAT_HISTORY_ITEM_TEXT,
             MSG_CONTENT = txtContent.Text.Trim(),
         };
         ViewModel.SendGroupMessageCommand.Execute(model);
         RunOnUiThread(() =>
         {
             txtContent.Text = "";
         });
     }
 }