public async void nextpage(object sender, EventArgs args) { var completeActionCounter = 0; var goalId = App.User.goals[a].id; var actionId = App.User.goals[a].actions[b].id; if (next.Text == "Done") { var firestoreService = new FirestoreService(); firebaseFunctionsService.UpdateTask(goalId, actionId, App.User.goals[a].actions[b].dbIdx.ToString()); // Set data model completion status App.User.goals[a].actions[b].isComplete = true; App.User.goals[a].actions[b].isInProgress = false; TaskItemModel.IsComplete = true; TaskItemModel.IsInProgress = false; App.User.goals[a].actions[b].dateTimeCompleted = DateTime.Now; foreach (action action in App.User.goals[a].actions) { if (action.isComplete) { completeActionCounter++; } } if (completeActionCounter == App.User.goals[a].actions.Count) { firebaseFunctionsService.CompleteRoutine(goalId, App.User.goals[a].dbIdx.ToString()); // Set data model completion status App.User.goals[a].isComplete = true; App.User.goals[a].isInProgress = false; if (App.ParentPage != "ListView") { GRItemModel.IsComplete = true; GRItemModel.IsInProgress = false; GRItemModel.Text = "Done"; } App.User.goals[a].dateTimeCompleted = DateTime.Now; } await Navigation.PopAsync(); } else if (next.Text == "Start") { int idx = 0; while (App.User.goals[a].actions[b].instructions[idx].isComplete) { idx++; Console.WriteLine("instruction complete idx: " + idx); } //App.user.goals[a].actions[b].instructions[0].isComplete = true; next.Text = "Next"; CarouselTasks.Position = idx; Console.WriteLine("CarouselTasks.Position: " + CarouselTasks.Position); await Task.Delay(2000); } else if (CarouselTasks.Position != App.User.goals[a].actions[b].instructions.Count - 1) { /*var firestoreService = new FirestoreService(App.User.id); * var goalId = App.user.goals[a].id; * var actionId = App.user.goals[a].actions[b].id; * var isInstructionComplete = await firestoreService.UpdateInstruction(goalId, actionId, App.user.goals[a].actions[b].instructions[CarouselTasks.Position].dbIdx.ToString()); * if (isInstructionComplete) * { * App.user.goals[a].actions[b].instructions[CarouselTasks.Position].isComplete = true; * App.user.goals[a].actions[b].instructions[CarouselTasks.Position].dateTimeCompleted = DateTime.Now; * }*/ App.User.goals[a].actions[b].instructions[CarouselTasks.Position].isComplete = true; pageModel.Items[CarouselTasks.Position].OkToCheckmark = true; firebaseFunctionsService.UpdateInstruction(goalId, actionId, App.User.goals[a].actions[b].instructions[CarouselTasks.Position].dbIdx.ToString()); CarouselTasks.Position = CarouselTasks.Position + 1; } else if (CarouselTasks.Position == App.User.goals[a].actions[b].instructions.Count - 1) { App.User.goals[a].actions[b].instructions[CarouselTasks.Position].isComplete = true; pageModel.Items[CarouselTasks.Position].OkToCheckmark = true; firebaseFunctionsService.UpdateInstruction(goalId, actionId, App.User.goals[a].actions[b].instructions[CarouselTasks.Position].dbIdx.ToString()); next.Text = "Done"; } else if (CarouselTasks.Position != App.User.goals[a].actions[b].instructions.Count - 1) { App.User.goals[a].actions[b].instructions[CarouselTasks.Position].isComplete = true; pageModel.Items[CarouselTasks.Position].OkToCheckmark = true; firebaseFunctionsService.UpdateInstruction(goalId, actionId, App.User.goals[a].actions[b].instructions[CarouselTasks.Position].dbIdx.ToString()); next.Text = "Done"; } }
public TaskGridViewModel(TaskPage mainPage, int a, bool isRoutine, GRItemModel _GRItemModel) { this.mainPage = mainPage; Items = new ObservableCollection <TaskItemModel>(); GRItemModel = _GRItemModel; if (isRoutine) { TopImage = App.User.routines[a].photo; TopLabel = App.User.routines[a].title; BackgroundColor = Color.WhiteSmoke; TitleTextColor = Color.FromHex("#272E32"); BackImage = "arrowicon.png"; //if(App.user.routines[a].audio != "") SoundButton = "waveicon.png"; int taskIdx = 0; foreach (task task in App.User.routines[a].tasks) { Items.Add(new TaskItemModel( App.User.routines[a].tasks[taskIdx].photo, App.User.routines[a].tasks[taskIdx].title, Color.FromHex("#272E32"), App.User.routines[a].tasks[taskIdx].isComplete, App.User.routines[a].tasks[taskIdx].isInProgress, new Command <int>( async(int _taskIdx) => { string routineId = App.User.routines[a].id; string taskId = App.User.routines[a].tasks[_taskIdx].id; int taskDbIdx = App.User.routines[a].tasks[_taskIdx].dbIdx; bool isTaskInProgress = App.User.routines[a].tasks[_taskIdx].isInProgress; bool isTaskComplete = App.User.routines[a].tasks[_taskIdx].isComplete; if (App.User.routines[a].tasks[_taskIdx].isSublistAvailable) { if (!isTaskComplete) { App.User.routines[a].tasks[_taskIdx].isInProgress = true; Items[_taskIdx].IsInProgress = true; firebaseFunctionsService.StartAT(routineId, taskId, taskDbIdx.ToString()); } await mainPage.Navigation.PushAsync(new StepsPage(a, _taskIdx, isRoutine, Items[_taskIdx], GRItemModel)); } else { if (!isTaskComplete) { if (isTaskInProgress) { App.User.routines[a].tasks[_taskIdx].isInProgress = false; App.User.routines[a].tasks[_taskIdx].isComplete = true; Items[_taskIdx].IsInProgress = false; Items[_taskIdx].IsComplete = true; firebaseFunctionsService.UpdateTask(routineId, taskId, taskDbIdx.ToString()); } else { App.User.routines[a].tasks[_taskIdx].isInProgress = true; Items[_taskIdx].IsInProgress = true; firebaseFunctionsService.StartAT(routineId, taskId, taskDbIdx.ToString()); } } } }), taskIdx )); taskIdx++; } } else { TopImage = App.User.goals[a].photo; TopLabel = App.User.goals[a].title; BackgroundColor = Color.FromHex("#272E32"); TitleTextColor = Color.WhiteSmoke; BackImage = "arrowiconwhite.png"; int actionIdx = 0; foreach (action action in App.User.goals[a].actions) { Items.Add(new TaskItemModel( App.User.goals[a].actions[actionIdx].photo, App.User.goals[a].actions[actionIdx].title, Color.WhiteSmoke, App.User.goals[a].actions[actionIdx].isComplete, App.User.goals[a].actions[actionIdx].isInProgress, new Command <int>( async(int _actionIdx) => { string goalId = App.User.goals[a].id; string actionId = App.User.goals[a].actions[_actionIdx].id; int actionDbIdx = App.User.goals[a].actions[_actionIdx].dbIdx; bool isActionInProgress = App.User.goals[a].actions[_actionIdx].isInProgress; bool isActionComplete = App.User.goals[a].actions[_actionIdx].isComplete; if (App.User.goals[a].actions[_actionIdx].isSublistAvailable) { if (!isActionComplete) { App.User.goals[a].actions[_actionIdx].isInProgress = true; Items[_actionIdx].IsInProgress = true; firebaseFunctionsService.StartAT(goalId, actionId, actionDbIdx.ToString()); } await mainPage.Navigation.PushAsync(new TaskCompletePage(a, _actionIdx, isRoutine, Items[_actionIdx], GRItemModel)); } else { if (!isActionComplete) { if (isActionInProgress) { App.User.goals[a].actions[_actionIdx].isInProgress = false; App.User.goals[a].actions[_actionIdx].isComplete = true; Items[_actionIdx].IsInProgress = false; Items[_actionIdx].IsComplete = true; firebaseFunctionsService.UpdateTask(goalId, actionId, actionDbIdx.ToString()); } else { App.User.goals[a].actions[_actionIdx].isInProgress = true; Items[_actionIdx].IsInProgress = true; firebaseFunctionsService.StartAT(goalId, actionId, actionDbIdx.ToString()); } } } }), actionIdx )); actionIdx++; } } }
public async void DoneClicked(object sender, EventArgs args) { DoneButton.IsEnabled = false; var completeCounter = 0; var completeTasksCounter = 0; foreach (step step in App.User.routines[a].tasks[b].steps) { if (step.isComplete) { completeCounter++; } } if (completeCounter == App.User.routines[a].tasks[b].steps.Count) { DoneButton.IsEnabled = false; var routineId = App.User.routines[a].id; var taskId = App.User.routines[a].tasks[b].id; firebaseFunctionsService = new FirebaseFunctionsService(); taskItemModel.IsComplete = true; taskItemModel.IsInProgress = false; App.User.routines[a].tasks[b].isComplete = true; App.User.routines[a].tasks[b].isInProgress = false; App.User.routines[a].tasks[b].dateTimeCompleted = DateTime.Now; //TaskPage.pageModel.Items[b].IsComplete = true; firebaseFunctionsService.UpdateTask(routineId, taskId, App.User.routines[a].tasks[b].dbIdx.ToString()); await Navigation.PopAsync(); } else { DoneButton.IsEnabled = true; await DisplayAlert("Oops!", "Please complete all steps before marking this task as done", "OK"); } foreach (task task in App.User.routines[a].tasks) { if (task.isComplete) { completeTasksCounter++; } } if (completeTasksCounter == App.User.routines[a].tasks.Count) { var routineId = App.User.routines[a].id; App.User.routines[a].isComplete = true; App.User.routines[a].isInProgress = false; App.User.routines[a].dateTimeCompleted = DateTime.Now; if (App.ParentPage != "ListView") { GRItemModel.IsComplete = true; GRItemModel.IsInProgress = false; GRItemModel.Text = "Done"; } var firebaseFunctionsService = new FirebaseFunctionsService(); var okToCheckmark = await firebaseFunctionsService.CompleteRoutine(routineId, App.User.routines[a].dbIdx.ToString()); } }