//Get List Group Using Database public void Get_CommunitiesList_Group() { try { if (UserID == UserDetails.User_id) { //Get Group From Database var dbDatabase = new SqLiteDatabase(); var localList = dbDatabase.Get_Groups(); if (localList != null) { GroupsAdapter.mGroupsList = new ObservableCollection <Get_Community_Object.Group>(localList); GroupsAdapter.BindEnd(); } dbDatabase.Dispose(); } //Get Group From API Get_CommunitiesList_Group_API(); } catch (Exception e) { Crashes.TrackError(e); } }
//Get List Group Using API public async void Get_CommunitiesList_Group_API() { try { if (!IMethods.CheckConnectivity()) { swipeRefreshLayout.Refreshing = false; Toast.MakeText(this, GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short) .Show(); } else { var(Api_status, Respond) = await Client.Global.Get_Community(new Settings(), UserID); if (Api_status == 200) { if (Respond is Get_Community_Object result) { if (result.Groups.Count <= 0 && result.likedPages.Count <= 0 && result.Pages.Count <= 0) { swipeRefreshLayout.Refreshing = false; } var dbDatabase = new SqLiteDatabase(); //Add Data //======================================= if (GroupsManage_Type == "Manage_UserGroups") { GroupsAdapter.mGroupsList = new ObservableCollection <Get_Community_Object.Group>(result.Groups); GroupsAdapter.BindEnd(); } else if (GroupsManage_Type == "Manage_MyGroups") { // Groups if (GroupsAdapter.mGroupsList.Count > 0) { //Bring new groups var listNew = result.Groups.Where(c => !GroupsAdapter.mGroupsList.Select(fc => fc.GroupId).Contains(c.GroupId)) .ToList(); if (listNew.Count > 0) { var chkList = listNew.Where(a => a.UserId != UserDetails.User_id).ToList(); if (chkList.Count > 0) { //Results differ Classes.AddRange(GroupsAdapter.mGroupsList, chkList); GroupsAdapter.BindEnd(); //Insert Or Replace Just New Data To Database if (UserID == UserDetails.User_id) { dbDatabase.Insert_Or_Replace_GroupsTable( new ObservableCollection <Get_Community_Object.Group>(chkList)); } } } } else { var chkList = result.Groups.Where(a => a.UserId != UserDetails.User_id).ToList(); if (chkList.Count > 0) { GroupsAdapter.mGroupsList = new ObservableCollection <Get_Community_Object.Group>(chkList); GroupsAdapter.BindEnd(); //Insert Or Replace Just New Data To Database if (UserID == UserDetails.User_id) { dbDatabase.Insert_Or_Replace_GroupsTable( new ObservableCollection <Get_Community_Object.Group>(chkList)); } } } //==================================== //Manage if (ManageGroupsAdapter.mUserGroupsList.Count > 0) { var chkListManage = result.Groups.Where(a => a.UserId == UserDetails.User_id) .ToList(); if (chkListManage.Count > 0) { //Bring new groups var listNew = chkListManage.Where(c => !ManageGroupsAdapter.mUserGroupsList.Select(fc => fc.group_id) .Contains(c.GroupId)).ToList(); if (listNew.Count > 0) { var list = chkListManage.Select(group => new Get_User_Data_Object.Joined_Groups { id = group.Id, user_id = group.UserId, group_name = group.GroupName, group_title = group.GroupTitle, avatar = group.Avatar, cover = group.Cover, about = group.About, category = group.Category, privacy = group.Privacy, join_privacy = group.JoinPrivacy, active = group.Active, registered = group.Registered, group_id = group.GroupId, url = group.Url, name = group.Name, category_id = group.CategoryId, type = group.Type, username = group.Username }).ToList(); //Results differ Classes.AddRange(ManageGroupsAdapter.mUserGroupsList, list); ManageGroupsAdapter.BindEnd(); //Insert Or Replace Just New Data To Database if (UserID == UserDetails.User_id) { dbDatabase.InsertOrReplace_ManageGroupsTable( new ObservableCollection <Get_User_Data_Object.Joined_Groups>(list)); } } } } else { var chkListManage = result.Groups.Where(a => a.UserId == UserDetails.User_id) .ToList(); if (chkListManage.Count > 0) { var list = chkListManage.Select(group => new Get_User_Data_Object.Joined_Groups { id = group.Id, user_id = group.UserId, group_name = group.GroupName, group_title = group.GroupTitle, avatar = group.Avatar, cover = group.Cover, about = group.About, category = group.Category, privacy = group.Privacy, join_privacy = group.JoinPrivacy, active = group.Active, registered = group.Registered, group_id = group.GroupId, url = group.Url, name = group.Name, category_id = group.CategoryId, type = group.Type, username = group.Username }).ToList(); ManageGroupsAdapter.mUserGroupsList = new ObservableCollection <Get_User_Data_Object.Joined_Groups>(list); ManageGroupsAdapter.BindEnd(); //Insert Or Replace Just New Data To Database if (UserID == UserDetails.User_id) { dbDatabase.InsertOrReplace_ManageGroupsTable( new ObservableCollection <Get_User_Data_Object.Joined_Groups>(list)); } } } //==================================== // pages if (result.Pages.Count > 0) { var pagesList = new ObservableCollection <Get_Community_Object.Page>(result.Pages); //Update All Data To Database if (UserID == UserDetails.User_id) { dbDatabase.Insert_Or_Replace_PagesTable(pagesList); } } //==================================== // likedPages if (result.likedPages.Count > 0) { var likedPagesList = new ObservableCollection <Get_Community_Object.LikedPages>(result.likedPages); //Update All Data To Database if (UserID == UserDetails.User_id) { var list = likedPagesList.Select(page => new Get_Community_Object.Page { PageId = page.PageId, UserId = page.UserId, PageName = page.PageName, PageTitle = page.PageTitle, PageDescription = page.PageDescription, Avatar = page.Avatar, Cover = page.Cover, PageCategory = page.PageCategory, Website = page.Website, Facebook = page.Facebook, Google = page.Google, Vk = page.Vk, Twitter = page.Twitter, Linkedin = page.Linkedin, Company = page.Company, Phone = page.Phone, Address = page.Address, CallActionType = page.CallActionType, CallActionTypeUrl = page.CallActionTypeUrl, BackgroundImage = page.BackgroundImage, BackgroundImageStatus = page.BackgroundImageStatus, Instgram = page.Instgram, Youtube = page.Youtube, Verified = page.Verified, Registered = page.Registered, Boosted = page.Boosted, About = page.About, Id = page.Id, Type = page.Type, Url = page.Url, Name = page.Name, //Rating = page.Rating, Category = page.Category, IsPageOnwer = page.IsPageOnwer, Username = page.Username }).ToList(); dbDatabase.Insert_Or_Replace_PagesTable( new ObservableCollection <Get_Community_Object.Page>(list)); } } } dbDatabase.Dispose(); } } else if (Api_status == 400) { if (Respond is Error_Object error) { var errorText = error._errors.Error_text; //Toast.MakeText(this, errortext, ToastLength.Short).Show(); if (errorText.Contains("Invalid or expired access_token")) { API_Request.Logout(this); } } } else if (Api_status == 404) { var error = Respond.ToString(); //Toast.MakeText(this, error, ToastLength.Short).Show(); } } //Show Empty Page >> //=============================================================== if (GroupsAdapter.mGroupsList.Count > 0) { GroupsSection.Visibility = ViewStates.Visible; GroupsRecylerView.Visibility = ViewStates.Visible; } else { GroupsSection.Visibility = ViewStates.Gone; GroupsRecylerView.Visibility = ViewStates.Gone; } //if Manage_MyGroups list count == 0 >> show empty page if (ManageGroupsAdapter.mUserGroupsList.Count > 0) { Txt_Count_ManageGroups.Text = ManageGroupsAdapter.mUserGroupsList.Count.ToString(); ManageGroupsSection.Visibility = ViewStates.Visible; ManageGroupsRecylerView.Visibility = ViewStates.Visible; } else { Txt_Count_ManageGroups.Text = "0"; ManageGroupsSection.Visibility = ViewStates.Gone; ManageGroupsRecylerView.Visibility = ViewStates.Gone; } if (GroupsAdapter.mGroupsList.Count == 0 && ManageGroupsAdapter.mUserGroupsList.Count == 0) { Groups_Empty.Visibility = ViewStates.Visible; ManageGroupsSection.Visibility = ViewStates.Gone; ManageGroupsRecylerView.Visibility = ViewStates.Gone; GroupsSection.Visibility = ViewStates.Gone; GroupsRecylerView.Visibility = ViewStates.Gone; } else { Groups_Empty.Visibility = ViewStates.Gone; } swipeRefreshLayout.Refreshing = false; } catch (Exception e) { Crashes.TrackError(e); Get_CommunitiesList_Group_API(); } }