private async void proceedButton_Clicked(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(NameEntry.Text))
            {
                await DisplayAlert(ResxFile.str_error, ResxFile.err_NullPlanName, ResxFile.err_confirm);

                return;
            }

            HabitPlans plan = new HabitPlans();

            plan.habitName = NameEntry.Text;

            if (TypePicker.SelectedItem.ToString().Equals(ResxFile.pker_Normal))
            {
                plan.habitType = "Normal";
            }
            else
            {
                plan.habitType = "Challenge";
                plan.endDate   = EndDatePicker.Date;
            }

            plan.startDate = StartDatePicker.Date;

            await Navigation.PushAsync(new PlanItemList_Create(plan));
        }
 public PlanItemsPage(HabitPlans plan, String coachID, Models.APIModels.Student selectedStudent)
 {
     InitializeComponent();
     ToAddItems           = new ObservableCollection <PlanItems>();
     ToAddPlan            = plan;
     this.coachID         = coachID;
     this.selectedStudent = selectedStudent;
 }
 public PlanItemList_Display(HabitPlans plan)
 {
     InitializeComponent();
     selectedPlan = plan;
     if (String.IsNullOrEmpty(plan.habitID_DB))
     {
         this.ToolbarItems.Remove(shareButton);
     }
 }
示例#4
0
        private async void PlanList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            if (PlanList.SelectedItem == null)
            {
                return;
            }

            HabitPlans planSelected = e.SelectedItem as HabitPlans;
            await Navigation.PushAsync(new PlanItemList_Display(planSelected));

            PlanList.SelectedItem = null;
        }
示例#5
0
        private async void cloneButton_Clicked(object sender, EventArgs e)
        {
            HabitPlans toAddPlan = new HabitPlans();

            toAddPlan.habitName = selectedPlan.HabitName;
            toAddPlan.habitType = selectedPlan.HabitType;
            toAddPlan.startDate = DateTime.Now.Date;
            if (selectedPlan.HabitType.Equals("Challenge"))
            {
                DateTime sdt = selectedPlan.StartDate.UtcDateTime;
                DateTime edt = selectedPlan.EndDate.Value.UtcDateTime;
                toAddPlan.endDate = toAddPlan.startDate.AddDays((edt - sdt).TotalDays).Date;
            }

            int result = await App.Database.InsertRow <HabitPlans>(toAddPlan);

            if (result != 0)
            {
                var currentPlans = await App.Database.GetPlansAsync();

                int newID = currentPlans.Count;

                foreach (PlanItem item in items)
                {
                    PlanItems toAddItem = new PlanItems();
                    toAddItem.habitID  = newID;
                    toAddItem.itemGoal = item.ItemGoal.Value;
                    toAddItem.itemType = item.ItemType;
                    toAddItem.itemName = item.ItemName;
                    int result2 = await App.Database.InsertRow <PlanItems>(toAddItem);

                    if (result2 == 0)
                    {
                        await DisplayAlert(ResxFile.str_error, ResxFile.str_error, ResxFile.err_confirm);

                        return;
                    }
                }

                await DisplayAlert(ResxFile.msg_Success, ResxFile.msg_SuccNewPlan, ResxFile.btn_ok);

                await Navigation.PopToRootAsync();
            }
            else
            {
                await DisplayAlert(ResxFile.str_error, ResxFile.str_error, ResxFile.err_confirm);

                return;
            }
        }
示例#6
0
        public static async Task <BaseModel> AssignPlan(HabitPlans plan, ObservableCollection <PlanItems> items, String coachID, String studentID)
        {
            String queryPart = PrepareQuery_assignPlan(plan, items, coachID, studentID);

            client = new HttpClient();
            String        query         = String.Format("{{\"query\":\"mutation{{ {0}  {{ message }} }}\"}}", queryPart);
            StringContent stringContent = new StringContent(query, Encoding.UTF8, "application/json");
            var           httpResponse  = await client.PostAsync(GraphQLURL, stringContent);

            var json = await httpResponse.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <BaseModel>(json);

            return(result);
        }
示例#7
0
        public static String PrepareQuery_assignPlan(HabitPlans plan, ObservableCollection <PlanItems> items, String coachID, String studentID)
        {
            String returnQuery = "assignPlan(coachId: \\\"" + coachID + "\\\", studentId: \\\"" + studentID + "\\\", newPlan: {";

            returnQuery += "habitName: \\\"" + plan.habitName + "\\\", ";
            returnQuery += "habitType: \\\"" + plan.habitType + "\\\", ";

            DateTime startTime = plan.startDate;

            startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc);
            DateTimeOffset startTime2 = startTime;

            returnQuery += "startDate: \\\"" + startTime2.ToString() + "\\\",";

            if (plan.habitType.Equals("Challenge"))
            {
                DateTime endTime = plan.endDate;
                startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc);
                DateTimeOffset endTime2 = endTime;
                returnQuery += "endDate: \\\"" + endTime2.ToString() + "\\\",";
            }

            returnQuery += "Items: [";

            Boolean isFirst = true;

            foreach (PlanItems item in items)
            {
                if (!isFirst)
                {
                    returnQuery += ", ";
                }
                returnQuery += "{itemName: \\\"" + item.itemName + "\\\", ";
                returnQuery += "itemType: \\\"" + item.itemType + "\\\", ";
                returnQuery += "itemGoal: " + item.itemGoal + "}";
                isFirst      = false;
            }

            returnQuery += "]})";
            return(returnQuery);
        }
示例#8
0
 public void AddRecordsToAppointment()
 {
     foreach (PlanRecords record in records)
     {
         var        appointment = new CalendarInlineEvent();
         PlanItems  item        = items.Where(x => x.itemID == record.itemID).FirstOrDefault();
         HabitPlans plan        = plans.Where(x => x.habitID == item.habitID).FirstOrDefault();
         if (Appointments.Where(x => x.Subject.Equals(plan.habitName) && x.StartTime.Equals(record.recordDate)).Count() == 0)
         {
             appointment.Subject = plan.habitName;
             if (record.isDone)
             {
                 appointment.Color = limeColor;
             }
             else
             {
                 appointment.Color = redColor;
             }
             appointment.StartTime = record.recordDate;
             appointment.EndTime   = appointment.StartTime.AddHours(2);
             appointment.IsAllDay  = true;
             this.appointments.Add(appointment);
         }
         else
         {
             int targetIndex = Appointments.IndexOf(Appointments.Where(x => x.Subject.Equals(plan.habitName) && x.StartTime.Equals(record.recordDate)).FirstOrDefault());
             if (record.isDone)
             {
                 Appointments[targetIndex].Color = limeColor;
             }
             else
             {
                 Appointments[targetIndex].Color = limeColor;
             }
         }
     }
     this.OnPropertyChanged("Appointments");
 }
        private async void ProceedButton_Clicked(object sender, EventArgs e)
        {
            var check = await DisplayAlert(ResxFile.err_confirm, ResxFile.msg_confirmCoachPlan, ResxFile.btn_accept, ResxFile.btn_decline);

            if (check)
            {
                HabitPlans newPlan = new HabitPlans();
                newPlan.habitName = ToAddPlan.HabitName;
                newPlan.habitType = ToAddPlan.HabitType;
                newPlan.startDate = ToAddPlan.StartDate.UtcDateTime.Date;
                if (ToAddPlan.HabitType.Equals("Challenge"))
                {
                    newPlan.endDate = ToAddPlan.EndDate.Value.UtcDateTime.Date;
                }

                int result = await App.Database.InsertRow <HabitPlans>(newPlan);

                if (result == 0)
                {
                    await DisplayAlert(ResxFile.str_error, ResxFile.str_error, ResxFile.err_confirm);

                    return;
                }

                var temp = await App.Database.GetPlansAsync();

                int newID = temp.Count;
                foreach (CoachItem item in ToAddItems)
                {
                    PlanItems newItem = new PlanItems();
                    newItem.habitID  = newID;
                    newItem.itemGoal = item.ItemGoal.Value;
                    newItem.itemName = item.ItemName;
                    newItem.itemType = item.ItemType;

                    int result2 = await App.Database.InsertRow <PlanItems>(newItem);

                    if (result2 == 0)
                    {
                        await DisplayAlert(ResxFile.str_error, ResxFile.str_error, ResxFile.err_confirm);

                        return;
                    }
                }
                var replyPlan = await APIConnection.replyCoachPlan(ToAddPlan.Id, "Accepted");

                if (replyPlan.Errors != null)
                {
                    await DisplayAlert(ResxFile.str_error, replyPlan.Errors[0].Message, ResxFile.err_confirm);
                }
                else
                {
                    await DisplayAlert(ResxFile.msg_Success, ResxFile.msg_SuccNewPlan, ResxFile.btn_ok);
                }
                await Navigation.PopToRootAsync();
            }
            else
            {
                var replyPlan = await APIConnection.replyCoachPlan(ToAddPlan.Id, "Declined");

                if (replyPlan.Errors != null)
                {
                    await DisplayAlert(ResxFile.str_error, replyPlan.Errors[0].Message, ResxFile.err_confirm);
                }
                else
                {
                    await DisplayAlert(ResxFile.msg_Success, ResxFile.msg_DeclinePlanSucc, ResxFile.btn_ok);
                }
            }
        }
示例#10
0
        private async void btn_pullPlans_Clicked(object sender, EventArgs e)
        {
            var result1 = await DisplayAlert(ResxFile.msg_rusure, ResxFile.msg_coachResponsibility, ResxFile.btn_yes, ResxFile.btn_cancel);

            if (result1)
            {
                String userID = await Constants.GetUserId();

                var pullPlan = await APIConnection.pullPlans(userID);

                if (pullPlan.Errors != null)
                {
                    await DisplayAlert(ResxFile.str_error, pullPlan.Errors[0].Message, ResxFile.err_confirm);

                    return;
                }
                else
                {
                    ObservableCollection <HabitPlan> plans = new ObservableCollection <HabitPlan>(pullPlan.Data.PullPlans);
                    if (plans.Count == 0)
                    {
                        await DisplayAlert(ResxFile.str_error, ResxFile.err_noPlanPull, ResxFile.err_confirm);

                        return;
                    }
                    foreach (HabitPlan plan in plans)
                    {
                        String query1 = "SELECT * FROM [HabitPlans] WHERE habitID_DB='" + plan.Id + "'";
                        ObservableCollection <HabitPlans> checkPlan = new ObservableCollection <HabitPlans>(await App.Database.QueryHabitPlans(query1));
                        if (checkPlan.Count == 0)
                        {
                            HabitPlans newPlan = new HabitPlans();
                            newPlan.habitID_DB = plan.Id;
                            newPlan.habitName  = plan.HabitName;
                            newPlan.habitType  = plan.HabitType;
                            newPlan.startDate  = DateTime.Now.Date;
                            if (newPlan.habitType.Equals("Challenge"))
                            {
                                DateTime sdt = plan.StartDate.UtcDateTime.Date;
                                DateTime edt = plan.EndDate.Value.UtcDateTime.Date;
                                newPlan.startDate = sdt;
                                newPlan.endDate   = edt;
                            }

                            var result2 = await App.Database.InsertRow <HabitPlans>(newPlan);

                            if (result2 != 0)
                            {
                                checkPlan = new ObservableCollection <HabitPlans>(await App.Database.QueryHabitPlans(query1));
                                var localID = checkPlan[0].habitID;
                                foreach (PlanItem item in plan.CreatedItems)
                                {
                                    PlanItems newItem = new PlanItems();
                                    newItem.habitID  = localID;
                                    newItem.itemGoal = item.ItemGoal.Value;
                                    newItem.itemName = item.ItemName;
                                    newItem.itemType = item.ItemType;

                                    var result3 = await App.Database.InsertRow <PlanItems>(newItem);

                                    if (result3 == 0)
                                    {
                                        await DisplayAlert(ResxFile.str_error, "result3", ResxFile.err_confirm);

                                        return;
                                    }
                                }
                            }
                        }
                    }
                    await DisplayAlert(ResxFile.msg_Success, ResxFile.msg_pullPlanSucc, ResxFile.btn_ok);
                }
            }
        }
 public PlanItemList_Create(HabitPlans plan)
 {
     InitializeComponent();
     ToAddItems = new ObservableCollection<PlanItems>();
     ToAddPlan = plan;
 }