// // Usuwa zadania i przypomnienia związane z lekarstwem o podanym Id // private void DeleteTasksAndRemindersOfMedicinId(MediboxDataContext dataContext, int medicinId) { /* * CEL: * Usuwa zadania i przypomnienia związane z lekarstwem o podanym Id * * PARAMETRY WEJŚCIOWE: * dataContext:MediboxDataContext - dataContext * medicinId - id lekarstwa */ // Wyszukaj wszystkie wystąpienia zadań dla tego lekarstwa IQueryable <MediTask> tasks = from task in dataContext.MediTasksTable where task.MedicineId == medicinId select task; // Usuń wszystkie przypomnienia związane z lekarstwem foreach (var task in tasks) { MediboxReminder.RemoveReminder(task.ReminderName); } // Usuń zadania wszystkie zadania związane z lekarstwem dataContext.MediTasksTable.DeleteAllOnSubmit <MediTask>(tasks); // Zapisz zmiany w bazie dataContext.SubmitChanges(); }
// // Usuń stare zadania // public static void OldTaskAdministrator() { /* * CEL: * Usuń stare zadania */ using (MediboxDataContext dc = new MediboxDataContext(DATA_BASE_FILE)) { // Wyszukaj nieaktualne zadania IQueryable <MediTask> oldTasks = from task in dc.MediTasksTable where task.StartDate < DateTime.Now select task; // Jeśli zadań jest więciej od 0 if (oldTasks.Count() > 0) { // Sprawdź czy dla wyszukanych zadań uruchomiono przypomnienia i usuń je foreach (var task in oldTasks) { // Sprawdź czy uruchomiono przypomnienie i usuń je if (task.IsReminder) { MediboxReminder.RemoveReminder(task.ReminderName); } } // Usuń zakończone zadania dc.MediTasksTable.DeleteAllOnSubmit <MediTask>(oldTasks); // Zapisz zmiany w bazie dc.SubmitChanges(); } } }
// 1.0.0.2 #region Usuń lek // // Usuwa lek i związane z nim zadania // public void DeleteMedicine(int id) { /* * CEL: * Usuwa lek i związane z nim zadania * * PARAMETRY: * id:int - id lekarstwa */ // Wykorzystaj data context using (MediboxDataContext dc = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { // Usuń lek o podanym id DeleteMedicineOfId(dc, id); // Usuń wszystkie zadania i przypomnienia związane z lekarstwem DeleteTasksAndRemindersOfMedicinId(dc, id); //TODO: Może dodać przypomnienia // Uaktualnij kafelek //MediboxAdministrator.TileAdministrator(dc); } // Odśwież listę leków i zadań SetMedicinesList(); SetTasksList(); // Można dodać przypomnienia LetAddReminders = true; }
// // Ustawia wybrany lek // public void SetSelecteMedicine(int id) { /* * CEL: * Ustawia wybrany lek na podstawie id leku * * PARAMETRY: * id:int - id wybranego leku */ // Wybrany cytat Medicine selectedMedicine = null; // Wybierz cytat o podanym Id using (MediboxDataContext dc = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { // Wyszukaj lek o podanym id selectedMedicine = (from med in dc.MedicinesTable where med.Id == id select med).FirstOrDefault(); } // Przekaż lek do zmiennej SelectedMedicine = selectedMedicine; // Wybierz dzisiejsze dawki wybranego lekarstwa List <MediTask> todaysTask = (from task in TasksList where task.MedicineId == id select task).ToList(); // Przekaż dawki do zmiennej SelectedTodaysDoses = todaysTask; // Odśwież NotifyPropertyChanged("SelectedMedicine"); NotifyPropertyChanged("SelectedTodaysDoses"); }
// 1.0.0.2 #region Aktualizuj lek // // Aktualizuje lek w bazie // public void UpdateMedicine(int id, Medicine updatedMedicine) { /* * CEL: * Aktualizuje lek w bazie * * PARAMETRY: * id:int - id leku * updateMedicine:Medicine - aktualizowany lek */ // Użyj dataContext using (MediboxDataContext dc = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { // Wyszukaj modyfikowane lekarstwo IQueryable <Medicine> med = from me in dc.MedicinesTable where me.Id == id select me; Medicine medicine = med.FirstOrDefault(); // Wprowadź zmiany medicine.MedicinName = updatedMedicine.MedicinName; medicine.Dose = updatedMedicine.Dose; medicine.NumberOfDosesPerDay = updatedMedicine.NumberOfDosesPerDay; medicine.StartDate = updatedMedicine.StartDate; medicine.StopDate = updatedMedicine.StopDate; medicine.IsReminder = updatedMedicine.IsReminder; medicine.IsHighPriority = updatedMedicine.IsHighPriority; medicine.Note = updatedMedicine.Note; // Wprowadź zmiany w bazie dc.SubmitChanges(); // Usuń powiązane zadania DeleteTasksAndRemindersOfMedicinId(dc, medicine.Id); // Odstępy czasu w jakich należy przyjąć lekarstwo - w godzinach int timeInterval = 24 / medicine.NumberOfDosesPerDay; // Dodaj nowe powiązane zadania MediboxDataBaseManagement.AddMediTaskToDataBase(dc, medicine.MedicinName, medicine.Dose, medicine.StartDate, medicine.StopDate, medicine.IsReminder, medicine.IsHighPriority, medicine.Id, medicine.Note, timeInterval); // Wprowadź zmiany dc.SubmitChanges(); //TODO: Może dodać przypomnienia // Uaktualnij kafelek //MediboxAdministrator.TileAdministrator(dc); } // Odśwież listę leków i zadań SetMedicinesList(); SetTasksList(); // Można dodać przypomnienia LetAddReminders = true; }
// // Dodaje zadanie do bazy danych // public static void AddMediTaskToDataBase(MediboxDataContext dataContext, string medicinName, string medicinDose, DateTime startDate, DateTime stopDate, bool isReminder, bool isHighPriority, int medicineId, string medicinNote, int timeInterval) { /* * CEL: * Dodaje zadanie do bazy danych * * PARAMETRY: * dataContext:MediboxDataContext - dataContext * medicinName:string - nazwa lekarstwa * medicinDose:string - wielkość dawki * startDate:DateTime - data przyjęcia dawki * isReminder:bool - określa czy dodać przypomnienie * isHighPriority:bool - określa czy jest ważne * medicinNote:string - notatka * numberOfDoseInstances:int - całkowita liczba wystąpień zadańa przyjęcia leku * timeInterval:int - odstępy czasu w jakich należy przyjąć lekarstwo - w godzinach */ // Treść przypomnienia - pojedyńcza dawka leku //string reminderContent = string.Format("{0} {1}", AppResources.TextSingleDose, medicinDose); // Nazwa przypomnienia string reminderName = null; // Dodaj wszystkie zadania do { // Jeśli czas wystąpienia zadania i przypomnienia jest mniejszy od aktualnego to nie dodawaj if (startDate > (DateTime.Now.AddMinutes(1))) { // Wygeneruj niepowtarzalną nazwe reminderName = Guid.NewGuid().ToString(); // Utwórz nowe zadanie MediTask newTask = new MediTask() { MedicineName = medicinName, SingleDose = medicinDose, StartDate = startDate, IsReminder = isReminder, ReminderName = reminderName, ReminderContent = string.Format("{0} {1}", AppResources.TextSingleDose, medicinDose), IsHighPriority = isHighPriority, MedicineId = medicineId, Note = medicinNote }; // Dodaj zadanie do bazy dataContext.MediTasksTable.InsertOnSubmit(newTask); } // Zwiększ datę startDate += new TimeSpan(0, timeInterval, 0, 0); }while(startDate < stopDate); // Zapisz zmiany w bazie dataContext.SubmitChanges(); }
// // Dodaje przypomnienia na kolejen 24 godziny // public static bool LongRemindersAdministrator(bool letAdd) { /* * CEL: * Dodaje przypomnienia na kolejen 24 godziny * * PARAMETRY: * letAdd:bool - określa czy można dodać przypomnienia. True - można dodać */ try { // Sprawdź czy można dodać przypomnienia if (letAdd) { // Kolejne godziny const int NEXT_HOURS = 24; // Użyj dataContext using (MediboxDataContext dc = new MediboxDataContext(DATA_BASE_FILE)) { // Wyszukaj zadania na kolejne godziny IQueryable <MediTask> nextTasks = from ct in dc.MediTasksTable where (ct.StartDate > DateTime.Now) && (ct.StartDate <= DateTime.Now.AddHours(NEXT_HOURS)) select ct; // Jeśli liczba zadań jest większa od 0 if (nextTasks.Count() > 0) { // Dodaj przypomnienia dla wyszukanych zadań foreach (var ct in nextTasks) { // Sprawdź czy można dodać przypomnienie i dodaj je if (ct.IsReminder) { // Dodaj przypomnienie MediboxReminder.AddReminder(ct.ReminderName, ct.StartDate, ct.MedicineName, ct.ReminderContent, ct.MedicineId); } } } } // Ustaw że dodano przypomnienia //letAdd = false; } } catch (Exception ex) { } finally { // Ustaw że dodano przypomnienia letAdd = false; } // Zwróć return(letAdd); }
// // Uaktualnia kafelek na ekranie startowym // public static void TileAdministrator() { /* * CEL: * Uaktualnia kafelek na ekranie startowy */ // Koniec dnia DateTime endDay = DateTime.Today.AddHours(24); using (MediboxDataContext dc = new MediboxDataContext(DATA_BASE_FILE)) { // Zwróć liczbę zadań w bazie int allTasksCount = (from at in dc.MediTasksTable select at).Count(); // Liczba zadań do końca dnia int currentTasksCount = (from ct in dc.MediTasksTable where (ct.StartDate > DateTime.Now) && (ct.StartDate < endDay) select ct).Count(); // Domyślny kafelek na ekranie start ShellTile currentTile = ShellTile.ActiveTiles.First(); // Nowy kafelek Iconic IconicTileData newTile = new IconicTileData(); // Ustaw kafelek newTile.Title = "Medibox"; newTile.Count = currentTasksCount; newTile.BackgroundColor = System.Windows.Media.Colors.Red; newTile.IconImage = new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative); newTile.SmallIconImage = new Uri("/Assets/Tiles/IconicTileSmall.png", UriKind.Relative); // Jeśli allTasksCount > 0 to dodaj informacje // Jeśli allTasksCount == 0 to nie dodawaj informacji if (allTasksCount > 0) { // Następne zadanie MediTask nextTask = (from ct in dc.MediTasksTable where ct.StartDate > DateTime.Now orderby ct.StartDate ascending select ct).First(); // Dodaj informacje na kafelku newTile.WideContent1 = nextTask.MedicineName; newTile.WideContent2 = nextTask.ReminderContent; newTile.WideContent3 = string.Format("{0:ddd, dd MMM yyyy, HH:mm}", nextTask.StartDate); } else { // Nie dodawaj informacji na kafelku newTile.WideContent1 = ""; newTile.WideContent2 = ""; newTile.WideContent3 = ""; } // Uaktualnij kafelek currentTile.Update(newTile); } }
// // Dodaje nowe lekarstwo do bazy danych // public static void AddMedicineToDataBase(MediboxDataContext dataContext, Medicine medicine) { /* * CEL: * Dodaje nowe lekarstwo do bazy danych * * PARAMETRY: * dataContext:MediboxDataContext - dataContext * medicine:Medicin - nowy lek */ // Dodaj lekarstwo do bazy dataContext.MedicinesTable.InsertOnSubmit(medicine); // Zapisz zmiany w bazie dataContext.SubmitChanges(); }
//TODO: Pierwszy start - wprowadzić zmianę #region Pierwszy start // // Tworzy bazę danych // private void CreateDataBase(bool create) { // Sprawdź czy utowrzyć if (create) { using (MediboxDataContext dataBase = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { if (dataBase.DatabaseExists() == false) { // Utwórz bazę danych dataBase.CreateDatabase(); } else { //MessageBox.Show("Employee Database already exists!!!"); } } } }
// // Przenosi do historii lekarstwo o podanym id // private void MoveToHistoryMedicineOfId(MediboxDataContext dataContext, int medicineId) { /* * CEL: * Przenosi do historii lekarstwa o podanym Id * * PARAMETRY WEJŚCIOWE: * dataContext:MediboxDataContext - dataContext * medicinId - id lekarstwa */ // Wyszukaj przenoszone lekarstwo Medicine movedMedicine = (from med in dataContext.MedicinesTable where med.Id == medicineId select med).FirstOrDefault(); // Ustaw jako nie aktywny movedMedicine.IsActive = false; // Zapisz miany dataContext.SubmitChanges(); }
// // Usuwa lekarstwo o podanym id // private void DeleteMedicineOfId(MediboxDataContext dataContext, int medicineId) { /* * CEL: * Usuwa lekarstwa o podanym Id * * PARAMETRY WEJŚCIOWE: * dataContext:MediboxDataContext - dataContext * medicinId - id lekarstwa */ // Wyszukaj usuwane lekarstwo //Medicine deletedMedicine = (from med in dataContext.MedicinesTable where med.Id == medicineId select med).FirstOrDefault(); IQueryable <Medicine> deletedMedicines = from med in dataContext.MedicinesTable where med.Id == medicineId select med; // Usuń z bazy danych dataContext.MedicinesTable.DeleteAllOnSubmit <Medicine>(deletedMedicines); // Zapisz miany dataContext.SubmitChanges(); }
// 1.0.0.2 #region Dodaj lekarstwo // // Dodaje nowy lek do bazy // public void AddNewMedicine(Medicine newMedicine) { /* * CEL: * Dodaje nowy lek do bazy * * PARAMETRY WEJSCIOWE: * newMedicine:Medicine - nowy lek */ // Odstępy czasu w jakich należy przyjąć lekarstwo - w godzinach int timeInterral = 24 / newMedicine.NumberOfDosesPerDay; // Utwórz DataContext using (MediboxDataContext dc = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { // Dodaj lekarstwo do bazy MediboxDataBaseManagement.AddMedicineToDataBase(dc, newMedicine); // Dodaj zadanie do bazy MediboxDataBaseManagement.AddMediTaskToDataBase(dc, newMedicine.MedicinName, newMedicine.Dose, newMedicine.StartDate, newMedicine.StopDate, newMedicine.IsReminder, newMedicine.IsHighPriority, newMedicine.Id, newMedicine.Note, timeInterral); //TODO: Może dodać przypomnienia // Uaktualnij kafelek //MediboxAdministrator.TileAdministrator(dc); // // Zmiany w bazie zapisano w podfunkcjach // } // Odśwież listę leków i zadań SetMedicinesList(); SetTasksList(); // Można dodać przypomnienia LetAddReminders = true; }
// // Dodaje przypomnienia dla kolejnych godzin // public static void ShortRemindersAdministrator(MediboxDataContext dc) { // Kolejne godziny const int NEXT_HOURS = 4; // Wyszukaj zadania na kolejne godziny IQueryable <MediTask> nextTasks = from ct in dc.MediTasksTable where (ct.StartDate > DateTime.Now) && (ct.StartDate <= DateTime.Now.AddHours(NEXT_HOURS)) select ct; // Jeśli liczba zadań jest większa od 0 if (nextTasks.Count() > 0) { // Dodaj przypomnienia dla wyszukanych zadań foreach (var ct in nextTasks) { // Sprawdź czy można dodać przypomnienie i dodaj je if (ct.IsReminder) { // Dodaj przypomnienie MediboxReminder.AddReminder(ct.ReminderName, ct.StartDate, ct.MedicineName, ct.ReminderContent, ct.MedicineId); } } } }
// // Ustawia stare lekarstwa jako wymagające uwagi // public static void OldMedicineAdministrator() { /* * CEL: * Ustawia stare lekarstwa jako wymagające uwagi */ using (MediboxDataContext dc = new MediboxDataContext(DATA_BASE_FILE)) { // Wyszukaj nieaktualne leki IQueryable <Medicine> oldMedicins = from med in dc.MedicinesTable where med.StopDate < DateTime.Now select med; // Jeśli wybranych leków jest wiecej od 0 if (oldMedicins.Count() > 0) { // Ustaw leki jako wymagające uwagi foreach (var med in oldMedicins) { med.IsActive = false; dc.SubmitChanges(); } } } }
// // Zarządza zadaniami // public void Administrator() { /* * CEL: * Wyszukuje zakończone zadania - usuwa je wraz z przypomnieniami * Dodaje przypomnienia na kolejne 12 godzin * Odświeża kafelek - jeśli można * Odświeża informacje na ekranie blokady - jeśli można */ // Obecna data DateTime nowTime = DateTime.Now; // 12 godzin później DateTime laterTime = DateTime.Now.AddHours(8); // Koniec dnia DateTime endDay = DateTime.Today.AddHours(24); // Treść przypomnienia - pojedyńcza dawka leku //string reminderContent; // Użyj dataContext using (MediboxDataContext dc = new MediboxDataContext(MediboxDataContext.DBConnectionString)) { // // Usuń zakończone zadania // Wyszukaj zakończone zadania - których data jest mniejsza od obecnej IQueryable <MediTask> oldTasks = from task in dc.MediTasksTable where task.StartDate < DateTime.Now select task; // Jeśli zadań jest więciej od 0 if (oldTasks.Count() > 0) { // Sprawdź czy dla wyszukanych zadań uruchomiono przypomnienia i usuń je foreach (var task in oldTasks) { // Sprawdź czy uruchomiono przypomnienie i usuń je if (task.IsReminder) { MediboxReminder.RemoveReminder(task.ReminderName); } } // Usuń zakończone zadania dc.MediTasksTable.DeleteAllOnSubmit <MediTask>(oldTasks); // Zapisz zmiany w bazie dc.SubmitChanges(); } // // Dodaj przypomnienia na kolejne 8 godzin // Wyszukaj zadania z przedziału 8 godzin IQueryable <MediTask> otherTasks = from task in dc.MediTasksTable where (task.StartDate > DateTime.Now) && (task.StartDate <= laterTime) select task; // Jeśli liczba zadań jest większa od 0 if (otherTasks.Count() > 0) { // Dodaj przypomnienia dla wyszukanych zadań foreach (var task in otherTasks) { // Sprawdź czy można dodać przypomnienie i dodaj je // Przypomnienia można dodać gdy zadania w tle są uruchomione if (task.IsReminder && LetTaskAgent) { // Dodaj przypomnienie MediboxReminder.AddReminder(task.ReminderName, task.StartDate, task.MedicineName, task.ReminderContent, task.MedicineId); } } } // // Odśwież kafelek //MediboxAdministrator.TileAdministrator(dc); } //TODO: Odśwież ekran blokady }