private async Task ExecuteOnSaveGlucose() { // IsBusy = true; if (Glucose.Glycemia == 0) { DependencyService.Get <IMessage>().ShortAlert("Glycemie Non Valide !"); return; } Glucose.Date = AddDateTime; Glucose.PicturePathe = PicturePath; if (Befor_Eat) { Glucose.Glucose_time = "preparandial"; } if (After_Eat) { Glucose.Glucose_time = "postparandial"; } if (No_Eat) { Glucose.Glucose_time = "fasting"; } dataStore.AddGlucose(GlycemiaConverter.ConvertBack(Glucose, Profil.GlycemiaUnit)); // System.Diagnostics.Debug.WriteLine(Glucose.Glucose_time); MessagingCenter.Send(this, "DataUpdated"); await Navigation.PopModalAsync(); // IsBusy = false; }
private async Task ExecuteOnSaveObjectifs() { if ((Objectifs.Min_Glycemia <= Objectifs.Max_Glycemia) & Objectifs.Max_Glycemia > 0 & Objectifs.Min_Glycemia > 0) { if (await DependencyService.Get <IDialog>().AlertAsync("", Resources["EditMessage"], Resources["Yes"], Resources["No"])) { var restapi = new RestApi(); Objectifs.Max_Glycemia = GlycemiaConverter.DoubleGlycemiaConvertBack(double.Parse(Max_Glycemia), Profil.GlycemiaUnit); Objectifs.Min_Glycemia = GlycemiaConverter.DoubleGlycemiaConvertBack(double.Parse(Min_Glycemia), Profil.GlycemiaUnit); Objectifs.Weight_Objectif = WeightConverter.DoubleWeightConvetBack(Objectifs.Weight_Objectif, Profil.WeightUnit); var result = await restapi.Post_Objectifs("glucose", Objectifs.Max_Glycemia, Objectifs.Min_Glycemia); var result2 = await restapi.Post_Objectifs("weight", Objectifs.Weight_Objectif, Objectifs.Weight_Objectif); var result3 = await restapi.Post_Objectifs("walk", Objectifs.Steps_Objectif, Objectifs.Steps_Objectif); if (!(result.Item1 & result2.Item1 & result3.Item1)) { DependencyService.Get <IMessage>().ShortAlert(result.Item2); return; } DataStore.UpdateObjectif(Objectifs); MessagingCenter.Send(this, "DataUpdated"); DependencyService.Get <ISnackBar>().Show(Resources["SuccesMessage"]); await Navigation.PopModalAsync(); } } else { DependencyService.Get <IMessage>().ShortAlert("Invalide Data !"); } }
public AddData_ViewModel(string source, INavigation navigation, IDataStore _datastore, Settings_Model profil, object data = null) { this.Navigation = navigation; this.dataStore = _datastore; if (source == "Add_Data") { IsVisible = true; Glucose = new Glucose_Model(); Pression = new Pression_Model(); Hb1Ac = new Hb1Ac_Model(); Drug = new Drugs_Model(); Insuline = new Insulune_Model(); Weight = new Weight_Model(); GlycemiaConverter = new GlycemiaConverter(); WeightConverter = new WeightConverter(); PermissionsRequest = new PermissionsRequest(); } else { IsVisible = false; Glucose = (typeof(Glucose_Model) == data.GetType()) ? data as Glucose_Model : null; Pression = (typeof(Pression_Model) == data.GetType()) ? data as Pression_Model : null; Hb1Ac = (typeof(Hb1Ac_Model) == data.GetType()) ? data as Hb1Ac_Model : null; Weight = (typeof(Weight_Model) == data.GetType()) ? data as Weight_Model : null; } Profil = profil; SaveGlucoseCommand = new Command(async() => { await ExecuteOnSaveGlucose(); }); SaveHb1AcCommand = new Command(async() => { await ExecuteOnSaveHb1ac(); }); SavePressionCommand = new Command(async() => { await ExecuteOnSavePression(); }); SaveWeightCommand = new Command(async() => { await ExecuteOnSaveWeight(); }); TakePictureCommand = new Command(async() => { await ExecuteOnTakePicture(); }); PictureTappedCommand = new Command(async() => { await ExecuteOnPictureTapped(); }); }
public LogBook_ViewModel(IDataStore _dataStore, INavigation _navigation) { IsBusy = true; DataStore = _dataStore; Navigation = _navigation; GlycemiaConverter = new GlycemiaConverter(); WeightConverter = new WeightConverter(); ItemTappedCommand = new Command(async() => { await ExecuteOnItemTapped(); }); DeleteCommand = new Command(async() => { await ExecuteOnDelete(); }); PictureTappedCommand = new Command(async() => { await ExecuteOnPictureTapped(); }); SyncCommand = new Command(async() => { await ExecuteOnSync(); }); UpdateData(); MessagingCenter.Subscribe <AddData_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; DataGrouped.Clear(); UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <SelectedData_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; DataGrouped.Clear(); UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <Units_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; DataGrouped.Clear(); UpdateData(); IsBusy = false; }); IsBusy = false; }
public Objectifs_ViewModel(IDataStore dataStore, INavigation navigation) { DataStore = dataStore; Navigation = navigation; Profil = DataStore.GetSettingsAsync().First(); GlycemiaConverter = new GlycemiaConverter(); WeightConverter = new WeightConverter(); Objectifs = DataStore.GetObjectifAsync().First(); var new_max = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit); var new_min = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit); var new_weght = WeightConverter.DoubleWeightConvet(Objectifs.Weight_Objectif, Profil.WeightUnit); Max_Glycemia = new_max.ToString(); Min_Glycemia = new_min.ToString(); Objectifs.Weight_Objectif = new_weght; SaveCommand = new Command(async() => { await ExecuteOnSaveObjectifs(); }); }
private void UpdateData() { Profil = DataStore.GetSettingsAsync().First(); Objectifs = DataStore.GetObjectifAsync().First(); Glucose_Data.Clear(); Weight_Data.Clear(); Last_Glycemia = null; Last_Hb1Ac = null; Last_Pression = null; Last_Weight = null; Average = 0; Nbr_Hight = 0; Nbr_Low = 0; Nbr_Normal = 0; Min = 0; Max = 0; foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date >= DateTime.Now.AddDays(-7))) { Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit)); } foreach (var item in DataStore.GetWeightAsync()) { Weight_Data.Add(WeightConverter.Convert(item, Profil.WeightUnit)); } pression_data = new ObservableCollection <Pression_Model>(DataStore.GetPressionAsync().Where(i => i.Date.Date == DateTime.Now.Date)); Hb1Ac_Data = new ObservableCollection <Hb1Ac_Model>(DataStore.GetHb1acAsync()); if (Glucose_Data.Count > 0) { Last_Glycemia = Glucose_Data.OrderBy(i => i.Date).Last(); Average = (Profil.GlycemiaUnit == "mg / dL") ? Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 0) : Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 3); Min = Glucose_Data.OrderBy(i => i.Glycemia).First().Glycemia; Max = Glucose_Data.OrderBy(i => i.Glycemia).Last().Glycemia; if (Profil.GlycemiaUnit == "mg / dL") { Nbr_Normal = Glucose_Data.Where(i => i.Glycemia >= Objectifs.Min_Glycemia & i.Glycemia <= Objectifs.Max_Glycemia).Count(); Nbr_Hight = Glucose_Data.Where(i => i.Glycemia > Objectifs.Max_Glycemia).Count(); Nbr_Low = Glucose_Data.Where(i => i.Glycemia < Objectifs.Min_Glycemia).Count(); if (Last_Glycemia.Glycemia < Objectifs.Min_Glycemia & Last_Glycemia.Glycemia != 0) { GlucoseColor = Color.FromHex("#f1c40f"); } if (Last_Glycemia.Glycemia >= Objectifs.Min_Glycemia & Last_Glycemia.Glycemia <= Objectifs.Max_Glycemia) { GlucoseColor = Color.FromHex("#0AC774"); } if (Last_Glycemia.Glycemia > Objectifs.Max_Glycemia) { GlucoseColor = Color.FromHex("#C72D14"); } } else { Nbr_Normal = Glucose_Data.Where(i => i.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & i.Glycemia <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count(); Nbr_Hight = Glucose_Data.Where(i => i.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count(); Nbr_Low = Glucose_Data.Where(i => i.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit)).Count(); if (Last_Glycemia.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average != 0) { GlucoseColor = Color.FromHex("#f1c40f"); } if (Last_Glycemia.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)) { GlucoseColor = Color.FromHex("#2ecc71"); } if (Last_Glycemia.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)) { GlucoseColor = Color.FromHex("#e74c3c"); } } } if (pression_data.Count > 0) { Last_Pression = Pression_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last(); } if (Hb1Ac_Data.Count > 0) { Last_Hb1Ac = Hb1Ac_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last(); } if (Weight_Data.Count > 0) { Last_Weight = Weight_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last(); } if (DataStore.GetStepsAsync().Count() > 0) { if (DataStore.GetStepsAsync().Where(i => i.Date.Date == DateTime.Now.Date).Count() > 0) { Steps = DataStore.GetStepsAsync().Single(i => i.Date.Date == DateTime.Now.Date).Steps; } } NextMedication(); }
public HomePage_ViewModel(INavigation navigation, IDataStore dataStore) { this.DataStore = dataStore; Navigation = navigation; Glucose_Data = new ObservableCollection <Glucose_Model>(); Weight_Data = new ObservableCollection <Weight_Model>(); GlycemiaConverter = new GlycemiaConverter(); WeightConverter = new WeightConverter(); Upload_Service = new Upload_Service(); UpdateData(); // DependencyService.Get<IStepCounter>().StepCountChanged += StepCounterService_StepCountChanged; AddDataTypeCommand = new Command(async() => { await ExecuteOnAddDataType(); }); GlucoseStatistiqueCommand = new Command(async() => { await ExecuteOnGlucoseTapped(); }); WeightStatistiqueCommand = new Command(async() => { await ExecuteOnWeightTapped(); }); Hb1acSatistiqueCommand = new Command(async() => { await ExecuteOnHb1acTapped(); }); PressionStatiqtiqueCommand = new Command(async() => { await ExecuteOnPressionTapped(); }); MedicationCommand = new Command(async() => { await ExecuteOnMedicationTapped(); }); StepsStatistiqueCommand = new Command(async() => { await ExecuteOnStepsTapped(); }); MessagingCenter.Subscribe <object, int>(Application.Current, "Steps", (sender, args) => { Steps = args; }); MessagingCenter.Subscribe <AddData_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <SelectedData_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <LogBook_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <Objectifs_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <DataTypeSelection_ViewModel>(this, "HidePopUp", async(sender) => { await Navigation.PopPopupAsync(true); }); MessagingCenter.Subscribe <Units_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); MessagingCenter.Subscribe <AddDrugs_ViewModel>(this, "DataUpdated", (sender) => { IsBusy = true; UpdateData(); IsBusy = false; }); var startTimeSpan = TimeSpan.Zero; var periodTimeSpan = TimeSpan.FromMinutes(1); var timer = new System.Threading.Timer((e) => { UpdateData(); Task.Run(async() => { await Upload_Service.Upload(); }); }, null, startTimeSpan, periodTimeSpan); }
private void UpdateData() { IsBusy = true; Glucose_Data.Clear(); Slices.Clear(); Min = null; Max = null; Average = 0; Nbr_Normal = 0; Nbr_Hight = 0; Nbr_Low = 0; if (type == "All") { foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date.Date >= Selected_MinDate & i.Date.Date <= Selected_MaxDate)) { Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit)); } } else { foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date.Date >= Selected_MinDate & i.Date.Date <= Selected_MaxDate).Where(i => i.Glucose_time == type)) { Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit)); } } if (Glucose_Data.Count > 0) { Glucose_Data = new ObservableCollection <Glucose_Model>(Glucose_Data.OrderBy(i => i.Date)); Min = Glucose_Data.OrderBy(i => i.Glycemia).First(); Max = Glucose_Data.OrderBy(i => i.Glycemia).Last(); Average = (Profil.GlycemiaUnit == "mg / dL") ? Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 0) : Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 3); Nbr_Normal = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia >= Objectifs.Min_Glycemia & i.Glycemia <= Objectifs.Max_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & i.Glycemia <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count(); Nbr_Hight = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia > Objectifs.Max_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count(); Nbr_Low = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia < Objectifs.Min_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit)).Count(); MaximumChart = (Profil.GlycemiaUnit == "mg / dL") ? Convert.ToInt32(Max.Glycemia + 100) : Convert.ToInt32(Max.Glycemia + 10); if (Average < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit)) { GlucoseColor = Color.FromHex("#f1c40f"); } if (Average >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)) { GlucoseColor = Color.FromHex("#2ecc71"); } if (Average > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)) { GlucoseColor = Color.FromHex("#e74c3c"); } Min_Glycemia = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit); Max_Glycemia = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit); Max_Widh = MaximumChart - Max_Glycemia; Good_Wigh = Max_Glycemia - Min_Glycemia; } Slices.Add(new Slice_Model { type = "Normal", value = Nbr_Normal }); Slices.Add(new Slice_Model { type = "Elevée", value = Nbr_Hight }); Slices.Add(new Slice_Model { type = "Basse", value = Nbr_Low }); IsBusy = false; }
public GlucoseStatistique_ViewModel(INavigation navigation, IDataStore dataStore) { Navigation = navigation; DataStore = dataStore; Profil = DataStore.GetSettingsAsync().First(); Objectifs = dataStore.GetObjectifAsync().First(); Glucose_Data = new ObservableCollection <Glucose_Model>(); GlycemiaConverter = new GlycemiaConverter(); Message = Resources["Target"] + " : " + GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit).ToString() + " " + Profil.GlycemiaUnit + " " + Resources["And"] + " " + GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit).ToString() + " " + Profil.GlycemiaUnit; Slices = new ObservableCollection <Slice_Model>(); type = "All"; Selected_MaxDate = DateTime.Now.Date; Selected_MinDate = DateTime.Now.Date; Selected_Index = 0; Selected_Date_Index = 0; SegmentItems = new ObservableCollection <SfSegmentItem> { new SfSegmentItem() { Text = Resources["All"] }, new SfSegmentItem() { Text = Resources["Empty"] }, new SfSegmentItem() { Text = Resources["Before_Meal"] }, new SfSegmentItem() { Text = Resources["After_Meals"] }, }; DateItems = new ObservableCollection <SfSegmentItem> { new SfSegmentItem() { Text = Resources["Today"] }, new SfSegmentItem() { Text = "7 " + Resources["Days"] }, new SfSegmentItem() { Text = "14 " + Resources["Days"] }, new SfSegmentItem() { Text = "30 " + Resources["Days"] }, new SfSegmentItem() { Text = "90 " + Resources["Days"] } }; FiltreCommand = new Command(() => { UpdateData(); }); UpdateData(); MessagingCenter.Subscribe <GlucoseStatistique_Page>(this, "Filter", (sender) => { UpdateData(); }); }
private void UpdateData() { List <LogBook_Model> _data = new List <LogBook_Model>(); Profil = DataStore.GetSettingsAsync().First(); foreach (var item in DataStore.GetGlucosAsync()) { var glucose = new LogBook_Model { Data = item, DataValue = GlycemiaConverter.Convert(item, Profil.GlycemiaUnit).Glycemia.ToString(), Date = item.Date, Activity = item.Activity, Take_Medication = item.Taking_Medication, Type = "Glucose", Unit = Profil.GlycemiaUnit, PicturePath = item.PicturePathe }; _data.Add(glucose); } foreach (var item in DataStore.GetHb1acAsync()) { var drug = new LogBook_Model { Data = item, DataValue = item.Hb1Ac.ToString(), Date = item.Date, Type = "Hb1Ac", Unit = "%", PicturePath = item.PicturePathe }; _data.Add(drug); } foreach (var item in DataStore.GetPressionAsync()) { var drug = new LogBook_Model { Data = item, DataValue = item.Diastolique.ToString() + "/" + item.Systolique.ToString(), Date = item.Date, At_Home = (item.Where == "home") ? true : false, At_Doctor = (item.Where == "clinic") ? true : false, Type = "Pression", Unit = "mmgH", PicturePath = item.PicturePathe }; _data.Add(drug); } foreach (var item in DataStore.GetWeightAsync()) { var drug = new LogBook_Model { Data = item, DataValue = WeightConverter.Convert(item, Profil.WeightUnit).Weight.ToString(), Date = item.Date, Type = "Weight", Unit = Profil.WeightUnit, PicturePath = item.PicturePathe }; _data.Add(drug); } private_list = new ObservableCollection <LogBook_Model>(_data); Selected_item = null; old_selected = null; var sorted = from data in _data orderby data.Date descending group data by data.DateSort into DataGroup select new Grouping <string, LogBook_Model>(DataGroup.Key, DataGroup); DataGrouped = new ObservableCollection <Grouping <string, LogBook_Model> >(sorted); }