Example #1
0
        //
        // 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();
        }
Example #2
0
        //
        // 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();
                }
            }
        }
Example #3
0
        // 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;
        }
Example #4
0
        //
        // 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");
        }
Example #5
0
        // 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();
        }
Example #7
0
        //
        // 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);
        }
Example #8
0
        //
        // 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();
        }
Example #10
0
        //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!!!");
                    }
                }
            }
        }
Example #11
0
        //
        // 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();
        }
Example #12
0
        //
        // 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();
        }
Example #13
0
        // 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;
        }
Example #14
0
        //
        // 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);
                    }
                }
            }
        }
Example #15
0
        //
        // 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();
                    }
                }
            }
        }
Example #16
0
        //
        // 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
        }