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++;
                }
            }
        }
示例#3
0
        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());
            }
        }