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); }
private async void UpdateChatFromFirebase() { try { try { supportchatlistdetail = await FirebaseChatHelper.GetChatForUserID(user_id, recieverUserId : RecieverId); } catch (Exception ex) { supportchatlistdetail = new List <SingleChatListModel>(); } //var _sortedlist = supportchatlistdetail.OrderBy(x => x.TimeStamp).ToList(); //supportchatlistdetail = _sortedlist; if (supportchatlistdetail.Count > SupportChatList.Count) { Device.BeginInvokeOnMainThread(() => { MakeChatRead(); }); updatesupportchatlistdetail = supportchatlistdetail.Skip(SupportChatList.Count).ToList(); try { foreach (var item in updatesupportchatlistdetail) { //if (!string.IsNullOrEmpty(item.image_url) && !string.IsNullOrWhiteSpace(item.image_url)) //{ // item.displayimage_url = new UriImageSource() // { // Uri = new Uri(item.image_url), // CachingEnabled = true, // CacheValidity = new TimeSpan(5, 0, 0, 0) // }; //} AllSupportChatList.Add(item); } } catch (Exception ex) { } SupportChatList = AllSupportChatList; COUNT = SupportChatList.Count; MessagingCenter.Send("", "ScrollToEnd"); var msgItem = new SingleChatDBModel() { SingleMessageName = ChatDetailTitle, UserMessagesList = SupportChatList, RecieverId = RecieverId }; if (singleChatMessagesDbService.IsSingleChatPresentInDB()) { var newmsgItem = singleChatMessagesDbService.ReadAllItems().Where(x => x.RecieverId == RecieverId).ToList(); if (newmsgItem != null && newmsgItem.Count > 0) { var msgID = newmsgItem.FirstOrDefault().ID; msgItem.ID = msgID; BsonValue id = new BsonValue(msgID); singleChatMessagesDbService.UpdateSingleChatDataInDb(id, msgItem); } else { singleChatMessagesDbService.CreateSingleChatDataInDB(msgItem); } } else { singleChatMessagesDbService.CreateSingleChatDataInDB(msgItem); } } if (SupportChatList != null && SupportChatList.Count > 0) { DeleteChatIcon = "resource://Khadamat_CustomerApp.SvgImages.delete.svg"; } else { DeleteChatIcon = string.Empty; } } catch (Exception ex) { } }
public async void AddMessageFirebase(SingleChatListModel item) { try { if (Common.CheckConnection()) { var request = new ChatDetailModelApi() { from_user_id = user_id, to_user_id = RecieverId }; Chatdetailresponse response; try { response = await _webApiRestClient.PostAsync <ChatDetailModelApi, Chatdetailresponse>(ApiUrl.AddChatRequest, request); } 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.AddChatMessage(item); } else if (response.message == null) { MessagingCenter.Send("", "ScrollToEnd"); MessageEntry = string.Empty; var data = await FirebaseChatHelper.AddChatMessage(item); } else { await MaterialDialog.Instance.SnackbarAsync(message : response.message, msDuration : 3000); } var msgItem = new SingleChatDBModel() { SingleMessageName = ChatDetailTitle, UserMessagesList = SupportChatList, RecieverId = RecieverId }; if (singleChatMessagesDbService.IsSingleChatPresentInDB()) { var newmsgItem = singleChatMessagesDbService.ReadAllItems().Where(x => x.RecieverId == RecieverId).ToList(); if (newmsgItem != null && newmsgItem.Count > 0) { var msgID = newmsgItem.FirstOrDefault().ID; msgItem.ID = msgID; BsonValue id = new BsonValue(msgID); singleChatMessagesDbService.UpdateSingleChatDataInDb(id, msgItem); } else { singleChatMessagesDbService.CreateSingleChatDataInDB(msgItem); } } else { singleChatMessagesDbService.CreateSingleChatDataInDB(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); } }
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) { } }
private async void DeleteChat(ChatUserModel data) { if (data.job_request_id != null && data.job_request_id.Value > 0) { var deleteChatResult = await App.Current.MainPage.DisplayAlert(AppResource.DeleteGroup, AppResource.DeleteGroupConfirm, AppResource.Yes, AppResource.No); if (deleteChatResult) { try { if (Common.CheckConnection()) { await App.Current.MainPage.Navigation.PushPopupAsync(new LoaderPopup()); Chatdetailresponse response; var request = new GroupChatreadRequestModel() { user_id = user_id, job_request_id = data.job_request_id.Value }; try { response = await _webApiRestClient.PostAsync <GroupChatreadRequestModel, Chatdetailresponse>(ApiUrl.DeleteGroupChatRequest, request); } catch (Exception ex) { response = null; LoaderPopup.CloseAllPopup(); IsRefreshing = false; await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_ServerError, msDuration : 3000); return; } if (response != null) { if (response.status) { await FirebaseChatHelper.DeleteGroupChat("GroupChat", user_id, data.job_request_id.Value); GetChat(); } else { await MaterialDialog.Instance.SnackbarAsync(message : response.message, msDuration : 3000); } } } else { await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_InternetError, msDuration : 3000); } } catch (Exception ex) { } finally { //await Task.Delay(1500); LoaderPopup.CloseAllPopup(); IsRefreshing = false; } } } else { var deleteChatResult = await App.Current.MainPage.DisplayAlert(AppResource.DeleteChat, AppResource.DeleteChatConfirm, AppResource.Yes, AppResource.No); if (deleteChatResult) { try { if (Common.CheckConnection()) { await App.Current.MainPage.Navigation.PushPopupAsync(new LoaderPopup()); Chatdetailresponse response; var request = new ChatDetailModelApi() { from_user_id = user_id, to_user_id = data.user_id.Value }; try { response = await _webApiRestClient.PostAsync <ChatDetailModelApi, Chatdetailresponse>(ApiUrl.DeleteChatRequest, request); } catch (Exception ex) { response = null; LoaderPopup.CloseAllPopup(); IsRefreshing = false; await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_ServerError, msDuration : 3000); return; } if (response != null) { if (response.status) { await FirebaseChatHelper.DeleteSingleChat("Chat", user_id, data.user_id.Value); GetChat(); } else { await MaterialDialog.Instance.SnackbarAsync(message : response.message, msDuration : 3000); } } } else { await MaterialDialog.Instance.SnackbarAsync(message : AppResource.error_InternetError, msDuration : 3000); } } catch (Exception ex) { } finally { await Task.Delay(1500); LoaderPopup.CloseAllPopup(); IsRefreshing = false; } } } }