private async void GetChatList()
        {
            try
            {
                chatlistdetail = await FirebaseChatHelper.GetChatForGroup("GroupChat", user_id, JobData.job_id);
            }
            catch (Exception ex)
            {
                chatlistdetail = new List <ChatDetailListModel>();
                //await MaterialDialog.Instance.SnackbarAsync(AppResource.error_ServerError, 3000);
            }

            if (AllChatDetailList != null && AllChatDetailList.Count == chatlistdetail.Count)
            {
            }
            else
            {
                AllChatDetailList = new ObservableCollection <ChatDetailListModel>(chatlistdetail);
                ChatDetailList    = AllChatDetailList;
                COUNT             = ChatDetailList.Count;
                MessagingCenter.Send("", "ScrollToEnd");
                MessagingCenter.Unsubscribe <string, int>(this, "ChatDetailTitle");


                var msgItem = new GroupChatDBModel()
                {
                    GroupJobId       = JobData.job_id,
                    UserMessagesList = ChatDetailList
                };
                if (groupChatMessagesDbService.IsGroupChatPresentInDB())
                {
                    var newmsgItem = groupChatMessagesDbService.ReadAllItems().Where(x => x.GroupJobId == JobData.job_id).ToList();
                    if (newmsgItem != null && newmsgItem.Count > 0)
                    {
                        var       msgID  = newmsgItem.FirstOrDefault().ID;
                        BsonValue bsonid = msgID;
                        groupChatMessagesDbService.UpdateGroupChatDataInDb(bsonid, msgItem);
                    }
                    else
                    {
                        groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                    }
                }
                else
                {
                    groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                }
            }
            if (ChatDetailList != null && ChatDetailList.Count > 0)
            {
                ToolbarIcon = "resource://Khadamat_CustomerApp.SvgImages.toolbar.svg";
            }
            else
            {
                ToolbarIcon = string.Empty;
            }

            chatTimer = new Timer(_ => UpdateChatFromFirebase(), null, 0, 1000);
        }
Example #2
0
        public bool IsGroupChatPresentInDB()
        {
            GroupChatDBModel model = liteDBService.ReadAllItems <GroupChatDBModel>().FirstOrDefault(t => t.ID != 0);

            if (model == null)
            {
                return(false);
            }
            return(true);
        }
        public async void AddMessagetoFirebase()
        {
            try
            {
                if (Common.CheckConnection())
                {
                    var item = new ChatDetailListModel()
                    {
                        sender_user_id     = user_id,
                        job_id             = JobData.job_id,
                        coordinator_id     = JobData.coordinator_id,
                        worker_id          = JobData.worker_id,
                        customer_id        = null,
                        sender_user_Name   = user_name,
                        coordinator_Name   = !string.IsNullOrEmpty(JobData.coordinator_Name) ? AppResource.coordinator_Name : JobData.coordinator_Name,
                        job_Name           = ChatDetailTitle,
                        receiver_user_Name = null,
                        worker_Name        = JobData.worker_Name,
                        customer_Name      = null,
                        image_url          = null,
                        file_url           = null,
                        is_file            = false,
                        is_image           = false,
                        is_loading         = false,
                        IsViewBtnVisible   = false,
                        is_message         = true,
                        msg_datetime       = DateTime.Now,
                        user_message       = MessageEntry,
                        user_message_time  = DateTime.Now.ToString("dd/MM/yyyy, hh:mm:ss tt"),
                        is_sender          = true,
                        time_stamp         = DependencyService.Get <IGetTimeStamp>().TimeStamp()
                    };
                    //var request = new ChatDetailModelApi()
                    //{
                    //    from_user_id = user_id,
                    //    to_user_id = JobData.job_id
                    //};
                    Chatdetailresponse response;
                    try
                    {
                        MessageEntry = string.Empty;
                        response     = await _webApiRestClient.GetAsync <Chatdetailresponse>(string.Format(ApiUrl.AddGroupChatRequest, JobData.job_id, Convert.ToInt32(Enums.UserTypeEnum.Customer)));
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("SendMsgApi_Exception:- " + ex.Message);
                        response = null;
                        await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_ServerError, msDuration : 3000);

                        return;
                    }
                    if (response != null)
                    {
                        if (response.status)
                        {
                            try
                            {
                                AllChatDetailList.Add(item);
                            }
                            catch (Exception ex)
                            {
                            }
                            ChatDetailList = AllChatDetailList;
                            MessagingCenter.Send("", "ScrollToEnd");
                            MessageEntry = string.Empty;
                            var data = await FirebaseChatHelper.AddChatMessageForGroup(item, "GroupChat");
                        }
                        else if (response.message == null)
                        {
                            try
                            {
                                AllChatDetailList.Add(item);
                            }
                            catch (Exception ex)
                            {
                            }

                            ChatDetailList = AllChatDetailList;
                            MessagingCenter.Send("", "ScrollToEnd");
                            MessageEntry = string.Empty;
                            var data = await FirebaseChatHelper.AddChatMessageForGroup(item, "GroupChat");
                        }
                        else
                        {
                            await MaterialDialog.Instance.SnackbarAsync(message : response.message,
                                                                        msDuration : 3000);
                        }

                        var msgItem = new GroupChatDBModel()
                        {
                            GroupJobId       = JobData.job_id,
                            UserMessagesList = ChatDetailList
                        };
                        if (groupChatMessagesDbService.IsGroupChatPresentInDB())
                        {
                            var newmsgItem = groupChatMessagesDbService.ReadAllItems().Where(x => x.GroupJobId == JobData.job_id).ToList();
                            if (newmsgItem != null && newmsgItem.Count > 0)
                            {
                                var msgID = newmsgItem.FirstOrDefault().ID;
                                msgItem.ID = msgID;
                                BsonValue bsonid = msgID;
                                groupChatMessagesDbService.UpdateGroupChatDataInDb(bsonid, msgItem);
                            }
                            else
                            {
                                groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                            }
                        }
                        else
                        {
                            groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                        }
                    }
                }
                else
                {
                    await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_InternetError,
                                                                msDuration : 3000);
                }
            }
            catch (Exception ex)
            {
                //await MaterialDialog.Instance.SnackbarAsync(message: ex.Message,
                //                            msDuration: 3000);
                Console.WriteLine("SendMsgCommand_Exception:- " + ex.Message);
            }
        }
        public async void AddMessageFirebase(ChatDetailListModel item)
        {
            try
            {
                if (Common.CheckConnection())
                {
                    Chatdetailresponse response;
                    try
                    {
                        response = await _webApiRestClient.GetAsync <Chatdetailresponse>(string.Format(ApiUrl.AddGroupChatRequest, JobData.job_id, Convert.ToInt32(Enums.UserTypeEnum.Customer)));
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("SendMsgApi_Exception:- " + ex.Message);
                        response    = null;
                        IsBackPress = true;
                        await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_ServerError, msDuration : 3000);

                        return;
                    }
                    if (response != null)
                    {
                        if (response.status)
                        {
                            MessagingCenter.Send("", "ScrollToEnd");
                            MessageEntry = string.Empty;
                            var data = await FirebaseChatHelper.AddChatMessageForGroup(item, "GroupChat");
                        }
                        else if (response.message == null)
                        {
                            MessagingCenter.Send("", "ScrollToEnd");
                            MessageEntry = string.Empty;
                            var data = await FirebaseChatHelper.AddChatMessageForGroup(item, "GroupChat");
                        }
                        else
                        {
                            await MaterialDialog.Instance.SnackbarAsync(message : response.message,
                                                                        msDuration : 3000);
                        }


                        var msgItem = new GroupChatDBModel()
                        {
                            GroupJobId       = JobData.job_id,
                            UserMessagesList = ChatDetailList
                        };
                        if (groupChatMessagesDbService.IsGroupChatPresentInDB())
                        {
                            var newmsgItem = groupChatMessagesDbService.ReadAllItems().Where(x => x.GroupJobId == JobData.job_id).ToList();
                            if (newmsgItem != null && newmsgItem.Count > 0)
                            {
                                var msgID = newmsgItem.FirstOrDefault().ID;
                                msgItem.ID = msgID;
                                BsonValue bsonid = msgID;
                                groupChatMessagesDbService.UpdateGroupChatDataInDb(bsonid, msgItem);
                            }
                            else
                            {
                                groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                            }
                        }
                        else
                        {
                            groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                        }
                    }

                    IsBackPress = true;
                }
                else
                {
                    await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_InternetError,
                                                                msDuration : 3000);
                }
            }
            catch (Exception ex)
            {
                //await MaterialDialog.Instance.SnackbarAsync(message: ex.Message,
                //                            msDuration: 3000);
                IsBackPress = true;
                Console.WriteLine("SendMsgCommand_Exception:- " + ex.Message);
            }
        }
        private async void UpdateChatFromFirebase()
        {
            try
            {
                try
                {
                    chatlistdetail = await FirebaseChatHelper.GetChatForGroup("GroupChat", user_id, JobData.job_id);
                }
                catch (Exception ex)
                {
                    chatlistdetail = new List <ChatDetailListModel>();
                }
                if (chatlistdetail.Count > ChatDetailList.Count)
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        MakeGroupChatRead();
                    });
                    updatechatlistdetail = chatlistdetail.Skip(ChatDetailList.Count).ToList();
                    try
                    {
                        foreach (var item in updatechatlistdetail)
                        {
                            AllChatDetailList.Add(item);
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                    ChatDetailList = AllChatDetailList;
                    COUNT          = ChatDetailList.Count;
                    MessagingCenter.Send("", "ScrollToEnd");


                    var msgItem = new GroupChatDBModel()
                    {
                        GroupJobId       = JobData.job_id,
                        UserMessagesList = ChatDetailList
                    };
                    if (groupChatMessagesDbService.IsGroupChatPresentInDB())
                    {
                        var newmsgItem = groupChatMessagesDbService.ReadAllItems().Where(x => x.GroupJobId == JobData.job_id).ToList();
                        if (newmsgItem != newmsgItem)
                        {
                            var       msgID  = newmsgItem.FirstOrDefault().ID;
                            BsonValue bsonid = msgID;
                            groupChatMessagesDbService.UpdateGroupChatDataInDb(bsonid, msgItem);
                        }
                        else
                        {
                            groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                        }
                    }
                    else
                    {
                        groupChatMessagesDbService.CreateGroupChatDataInDB(msgItem);
                    }
                }

                if (ChatDetailList != null && ChatDetailList.Count > 0)
                {
                    ToolbarIcon = "resource://Khadamat_CustomerApp.SvgImages.toolbar.svg";
                }
                else
                {
                    ToolbarIcon = string.Empty;
                }
            }
            catch (Exception ex)
            {
            }
        }
Example #6
0
 public GroupChatDBModel UpdateGroupChatDataInDb(BsonValue bsonid, GroupChatDBModel item)
 {
     return(liteDBService.UpdateItem(bsonid, item));
 }
Example #7
0
 public GroupChatDBModel DeleteGroupChatItemFromDB(BsonValue id, GroupChatDBModel item)
 {
     return(liteDBService.DeleteItem(id, item));
 }
Example #8
0
 public GroupChatDBModel CreateGroupChatDataInDB(GroupChatDBModel item)
 {
     return(liteDBService.CreateItem(item));
 }