public void Dispose() { masterLayout = null; progressBar = null; listContainer = null; gemsList = null; mainTitleBar = null; masterScroll = null; masterStack = null; headingLayout = null; gemsGoalsObject = null; pendingGoalsObject = null; GC.Collect(); }
public bool SavePendingGoalsDetails(PendingGoalsObject pendingGoals) { try { if (pendingGoals == null || pendingGoals.resultarray == null ) { return false; } List<PendingGoalsDetailsDB> listPendingGoalsDetails = new List<PendingGoalsDetailsDB>(); List<PendingActionTitle> listPendingActionTitle = new List<PendingActionTitle>(); foreach (var item in pendingGoals.resultarray) { // Emotion details PendingGoalsDetailsDB goal = new PendingGoalsDetailsDB() { goal_details = item.goal_details, goal_id = item.goal_id, goal_media = item.goal_media, user_id = item.user_id, code = pendingGoals.code, }; listPendingGoalsDetails.Add(goal); foreach (var itemTitle in item.pending_action_title) { listPendingActionTitle.Add(itemTitle); } } Connection.InsertAll(listPendingGoalsDetails); Connection.InsertAll(listPendingActionTitle); listPendingActionTitle.Clear(); listPendingGoalsDetails.Clear(); listPendingActionTitle = null; listPendingGoalsDetails = null; return true; } catch (Exception ex) { return false; } }
async void OnAppearing(object sender, EventArgs e) { if (gemsGoalsObject != null && gemsGoalsObject.resultarray != null && gemsGoalsObject.resultarray.Count > 0) return; IProgressBar progress = DependencyService.Get<IProgressBar>(); progress.ShowProgressbar("Loading pending items.."); try { pendingGoalsObject = await ServiceHelper.GetAllPendingGoalsAndActions (); if( pendingGoalsObject == null || pendingGoalsObject.resultarray == null ) { progress.HideProgressbar(); var success = await DisplayAlert (Constants.ALERT_TITLE, "Error in fetching Pending goals", Constants.ALERT_OK, Constants.ALERT_RETRY); if (!success) { OnAppearing (sender, EventArgs.Empty); return; } else { if (Device.OS != TargetPlatform.WinPhone) pendingGoalsObject = App.Settings.GetPendingGoalsObject(); progress.HideProgressbar (); } } else { App.Settings.DeleteAllPendingGoals(); App.Settings.SavePendingGoalsDetails( pendingGoalsObject ); } gemsGoalsObject = await ServiceHelper.GetAllMyGoals(); if( gemsGoalsObject == null || gemsGoalsObject.resultarray == null ) { var success = await DisplayAlert (Constants.ALERT_TITLE, "Error in fetching all goals", Constants.ALERT_OK, Constants.ALERT_RETRY); if (!success) { OnAppearing (sender, EventArgs.Empty); return; } else { if (Device.OS != TargetPlatform.WinPhone) gemsGoalsObject = App.Settings.GetCompletedGoalsObject(); progress.HideProgressbar(); } } else { App.Settings.DeleteAllCompletedGoals(); App.Settings.SaveCompletedGoalsDetails(gemsGoalsObject); } if( pendingGoalsObject.resultarray.Count + gemsGoalsObject.resultarray.Count < 30 ) { #region PENDING GOALS CreatePendingGoalsView( true ); #endregion #region ALL GOALS HEADING CreateAllGoalsHeading(); #endregion #region ALL GOALS CreateAllGoalsView(); #endregion } else if( pendingGoalsObject.resultarray.Count > 30 ) { pendingGoalsObject.resultarray = pendingGoalsObject.resultarray.Skip(0).Take(30).ToList(); #region PENDING GOALS CreatePendingGoalsView( true ); #endregion } masterScroll.Padding = new Thickness(10, 10, 10, 0); masterScroll.Scrolled += OnScroll; masterScroll.Content = masterStack; masterLayout.AddChildToLayout(mainTitleBar, 0, 0); // masterLayout.AddChildToLayout(subTitleBar, 0, Device.OnPlatform(9, 10, 10)); masterLayout.AddChildToLayout(masterScroll, 0, 10); Content = masterLayout; } catch (Exception) { } progress.HideProgressbar(); }
public PendingGoalsObject GetPendingGoalsObject() { try { PendingGoalsObject masterObject = new PendingGoalsObject(); List<PendingActionTitle> listPendingActionTitle = new List<PendingActionTitle>(); List<PendingGoalsDetailsDB> listPendingDetailsDB = new List<PendingGoalsDetailsDB>(); listPendingActionTitle = (from t in Connection.Table<PendingActionTitle>() select t).ToList(); listPendingDetailsDB = (from t in Connection.Table<PendingGoalsDetailsDB>() select t).ToList(); masterObject.resultarray = new List<PendingGoalsDetails>(); foreach (var item in listPendingDetailsDB) { PendingGoalsDetails resultArray = new PendingGoalsDetails(); resultArray.pending_action_title = new List<PendingActionTitle>(); resultArray.user_id = item.user_id; resultArray.goal_id = item.goal_id; resultArray.goal_title = item.goal_title; resultArray.goal_details = item.goal_details; resultArray.goal_media = item.goal_media; masterObject.code = item.code; resultArray.pending_action_title = new List<PendingActionTitle>(); // Title foreach (var titeObject in listPendingActionTitle) { if (titeObject.goal_id == item.goal_id) resultArray.pending_action_title.Add(titeObject); } masterObject.resultarray.Add(resultArray); } masterObject.code = (listPendingDetailsDB != null && listPendingDetailsDB.Count > 0) ? listPendingDetailsDB[0].code : ""; return masterObject; } catch (Exception) { return null; } }
async void OnAppearing(object sender, EventArgs e) { if (commonGoalsObject != null && commonGoalsObject.GoalsDetails != null && commonGoalsObject.GoalsDetails.Count > 0) return; commonGoalsObject = null; commonGoalsObject = new CommonGoalsObject (); commonGoalsObject.GoalsDetails = new List<CommonGoalsDetails>(); IProgressBar progress = DependencyService.Get<IProgressBar>(); progress.ShowProgressbar("Loading pending items.."); try { pendingGoalsObject = await ServiceHelper.GetAllPendingGoalsAndActions (); if( pendingGoalsObject == null || pendingGoalsObject.resultarray == null ) { var success = await DisplayAlert (Constants.ALERT_TITLE, "Error in fetching Pending goals", Constants.ALERT_OK, Constants.ALERT_RETRY); if (!success) { OnAppearing (sender, EventArgs.Empty); return; } else { if (Device.OS != TargetPlatform.WinPhone) pendingGoalsObject = App.Settings.GetPendingGoalsObject(); progress.HideProgressbar (); } } else { foreach (var goalItem in pendingGoalsObject.resultarray) { CommonGoalsDetails commonGoalsDetails = new CommonGoalsDetails(); commonGoalsDetails.GoalMedia = goalItem.goal_media; commonGoalsDetails.GoalTitle = goalItem.goal_title; commonGoalsDetails.GoalID = goalItem.goal_id; commonGoalsDetails.GoalDesc = goalItem.goal_details; commonGoalsDetails.IsPending = true; commonGoalsDetails.ActionTitle = new List<CommonActionTitle>(); foreach (var actionItem in goalItem.pending_action_title) { CommonActionTitle commonTitle = new CommonActionTitle(); commonTitle.actionstatus_id = actionItem.actionstatus_id; commonTitle.action_title = actionItem.action_title; commonTitle.goalaction_id = actionItem.goalaction_id; commonTitle.goal_id = actionItem.goal_id; commonTitle.savedgoal_id = actionItem.savedgoal_id; commonGoalsDetails.ActionTitle.Add( commonTitle ); } if ( null == commonGoalsObject.GoalsDetails.Find( tst => tst.GoalID == commonGoalsDetails.GoalID )) commonGoalsObject.GoalsDetails.Add( commonGoalsDetails ); } App.Settings.DeleteAllPendingGoals(); App.Settings.SavePendingGoalsDetails( pendingGoalsObject ); } commonGoalsObject.GoalsDetails.Add( new CommonGoalsDetails{ GoalID="header"} ); gemsGoalsObject = await ServiceHelper.GetAllMyGoals(); if( gemsGoalsObject == null || gemsGoalsObject.resultarray == null ) { var success = await DisplayAlert (Constants.ALERT_TITLE, "Error in fetching all goals", Constants.ALERT_OK, Constants.ALERT_RETRY); if (!success) { OnAppearing (sender, EventArgs.Empty); return; } else { if (Device.OS != TargetPlatform.WinPhone) gemsGoalsObject = App.Settings.GetCompletedGoalsObject(); progress.HideProgressbar(); } } else { foreach (var allGoalItem in gemsGoalsObject.resultarray) { CommonGoalsDetails commonGoalsDetails = new CommonGoalsDetails(); commonGoalsDetails.GoalMedia = allGoalItem.goal_media; commonGoalsDetails.GoalTitle = allGoalItem.goal_title; commonGoalsDetails.GoalID = allGoalItem.goal_id; commonGoalsDetails.GoalDesc = allGoalItem.goal_details; commonGoalsDetails.ActionTitle = new List<CommonActionTitle>(); commonGoalsDetails.IsPending = false; if( allGoalItem.action_title != null && allGoalItem.action_title.Count > 0 ) { foreach (var allActionItem in allGoalItem.action_title) { CommonActionTitle commonTitle = new CommonActionTitle(); commonTitle.action_title = allActionItem.action_title; commonTitle.goalaction_id = allActionItem.goalaction_id; commonTitle.goal_id = allActionItem.goal_id; commonGoalsDetails.ActionTitle.Add( commonTitle ); } } if ( null == commonGoalsObject.GoalsDetails.Find( tst => tst.GoalID == commonGoalsDetails.GoalID )) commonGoalsObject.GoalsDetails.Add( commonGoalsDetails ); } App.Settings.DeleteAllCompletedGoals(); App.Settings.SaveCompletedGoalsDetails(gemsGoalsObject); } allCommonGoalsObject = new CommonGoalsObject(); allCommonGoalsObject.GoalsDetails = commonGoalsObject.GoalsDetails.Skip(0).Take( commonGoalsObject.GoalsDetails.Count ).ToList(); /*if( pendingGoalsObject.resultarray.Count + gemsGoalsObject.resultarray.Count < 30 ) { #region PENDING GOALS CreatePendingGoalsView( true ); #endregion #region ALL GOALS HEADING CreateAllGoalsHeading(); #endregion #region ALL GOALS CreateAllGoalsView(); #endregion } else if( pendingGoalsObject.resultarray.Count > 30 ) { pendingGoalsObject.resultarray = pendingGoalsObject.resultarray.Skip(0).Take(30).ToList(); #region PENDING GOALS CreatePendingGoalsView( true ); #endregion }*/ commonGoalsObject.GoalsDetails = commonGoalsObject.GoalsDetails.Skip(0).Take( MAX_ROWS_AT_A_TIME ).ToList(); await DownloadMedias(); RenderGoalsPage( false ); masterScroll.Padding = new Thickness(10, 10, 10, 0); masterScroll.Scrolled += OnScroll; masterScroll.Content = masterStack; masterLayout.AddChildToLayout(mainTitleBar, 0, 0); // masterLayout.AddChildToLayout(subTitleBar, 0, Device.OnPlatform(9, 10, 10)); masterLayout.AddChildToLayout(masterScroll, 0, 10); Content = masterLayout; } catch (Exception) { } progress.HideProgressbar(); }
bool OnLoadMoreGemsClicked (object sender, EventArgs e) { try { pendingGoalsObject = null; gemsGoalsObject = null; CommonGoalsDetails lastItem = commonGoalsObject.GoalsDetails.Last (); CommonGoalsObject gemsObj = new CommonGoalsObject(); gemsObj.GoalsDetails = allCommonGoalsObject.GoalsDetails.Skip(0).Take( allCommonGoalsObject.GoalsDetails.Count ).ToList(); int lastRendererItemIndex = gemsObj.GoalsDetails.FindIndex (itm => itm.GoalID == lastItem.GoalID); if (lastRendererItemIndex > 0 && ( lastRendererItemIndex + 1 ) < gemsObj.GoalsDetails.Count ) { reachedEnd = false; reachedFront = false; int itemCountToCopy = gemsObj.GoalsDetails.Count - lastRendererItemIndex; itemCountToCopy = (itemCountToCopy > MAX_ROWS_AT_A_TIME) ? MAX_ROWS_AT_A_TIME : itemCountToCopy; commonGoalsObject = null; commonGoalsObject = new CommonGoalsObject (); commonGoalsObject.GoalsDetails = new List<CommonGoalsDetails>(); commonGoalsObject.GoalsDetails = gemsObj.GoalsDetails.Skip (lastRendererItemIndex).Take (itemCountToCopy).ToList(); gemsObj = null; masterStack.Children.Clear(); masterScroll.Content = null; GC.Collect(); if( itemCountToCopy < MAX_ROWS_AT_A_TIME ) RenderGoalsPage( true ); else RenderGoalsPage( false ); masterScroll.Content = masterStack; return true; } else { reachedEnd = true; return false; } } catch (Exception ex) { //DisplayAlert ( Constants.ALERT_TITLE, "Low memory error.", Constants.ALERT_OK ); return false; } }
bool OnLoadPreviousGemsClicked (object sender, EventArgs e) { try { pendingGoalsObject = null; gemsGoalsObject = null; CommonGoalsDetails firstItem = commonGoalsObject.GoalsDetails.First (); CommonGoalsObject gemsObj = new CommonGoalsObject(); gemsObj.GoalsDetails = allCommonGoalsObject.GoalsDetails.Skip(0).Take( allCommonGoalsObject.GoalsDetails.Count ).ToList(); int firstRendererItemIndex = gemsObj.GoalsDetails.FindIndex (itm => itm.GoalID == firstItem.GoalID);;//gemsObj.resultarray.IndexOf ( lastItem ); if (firstRendererItemIndex > 0 && ( firstRendererItemIndex + 1 ) < gemsObj.GoalsDetails.Count ) { reachedEnd = false; reachedFront = false; int itemCountToCopy = MAX_ROWS_AT_A_TIME; commonGoalsObject = null; commonGoalsObject = new CommonGoalsObject (); commonGoalsObject.GoalsDetails = new List<CommonGoalsDetails>(); gemsObj.GoalsDetails.RemoveRange( firstRendererItemIndex, gemsObj.GoalsDetails.Count - firstRendererItemIndex ); if( firstRendererItemIndex > MAX_ROWS_AT_A_TIME ) gemsObj.GoalsDetails.RemoveRange( 0, firstRendererItemIndex - MAX_ROWS_AT_A_TIME ); commonGoalsObject.GoalsDetails = gemsObj.GoalsDetails; gemsObj = null; masterStack.Children.Clear(); masterScroll.Content = null; GC.Collect(); RenderGoalsPage( false ); masterScroll.Content = masterStack; return true; } else { reachedFront = true; return false; } } catch (Exception ex) { DisplayAlert ( Constants.ALERT_TITLE, "Low memory error.", Constants.ALERT_OK ); return false; } }
async void OnPendingGoalsTapped(object sender, EventArgs e) { StackLayout layout = sender as StackLayout; if( layout != null && layout.Children != null && layout.Children.Count > 0 ) { Image img = (Image)layout.Children[0]; if (img != null && img.ClassId != null ) { string[] delimiters = { "&&" }; string[] clasIDArray = img.ClassId.Split(delimiters, StringSplitOptions.None); string selectedSavedGoalID = clasIDArray [1]; string selectedGoalID = clasIDArray [0]; if (!string.IsNullOrEmpty (selectedSavedGoalID)) { IProgressBar progress = DependencyService.Get<IProgressBar> (); progress.ShowProgressbar ( "Completing action...." ); var change = await ServiceHelper.ChangePendingActionStatus ( selectedSavedGoalID ); if (!change) { progress.HideProgressbar(); DisplayAlert (Constants.ALERT_OK, "Failed to complete action", Constants.ALERT_OK); return; } else { await DisplayAlert (Constants.ALERT_OK, "Action is completed", Constants.ALERT_OK); /*App.masterPage.IsPresented = false; App.masterPage.Detail = new NavigationPage(new GoalsPage()); await DeletePendingActionRowFromStack(selectedGoalID, selectedSavedGoalID);*/ masterScroll.Scrolled -= OnScroll; commonGoalsObject = null; pendingGoalsObject = null; gemsGoalsObject = null; masterStack.Children.Clear(); masterScroll.Content = null; OnAppearing ( this, EventArgs.Empty ); masterScroll.Scrolled += OnScroll; } progress.HideProgressbar (); } } } }