public void SelectRack()
        {
            //foreach (ComboBoxItem comboItem in RackComboBox.Items)
            //{
            //    if (comboItem.IsSelected == true)
            //    {
            ComboBoxPairs cbp = (ComboBoxPairs)RackComboBox.SelectedItem;

            item.RackId   = cbp._Key;
            item.RackGuid = Guid.Parse(cbp._Value);
            //item.RackId = comboItem.Content.ToString();
            //item.RackGuid = Guid.Parse(comboItem.Tag.ToString());
            //    }
            //}
        }
        public RoomDetailsViewModel(String ID)
        {
            RoomID            = ID;
            assignNurse       = new RelayCommand(AssignNurse);
            EditRoom          = new RelayCommand(EditRooms);
            DeleteRoom        = new RelayCommand(DeleteRooms);
            NursesList        = new ObservableCollection <ComboBoxPairs>();
            PatientsList      = new ObservableCollection <ComboBoxPairs>();
            NurseSelectedItem = new ComboBoxPairs("Key", "Value");
            ListSelectedNurse = new ComboBoxPairs("Key", "Value");
            RoomNumber        = Hospital.Rooms[ID].RoomNumber.ToString();
            editedRoomNumber  = RoomNumber;

            //Initializing Displayed Data Properties
            foreach (Patient patient in Hospital.Rooms[ID].Patients.Values)
            {
                PatientsList.Add(new ComboBoxPairs(patient.ID, patient.Name));
            }

            NursesComboBoxItems = new ObservableCollection <ComboBoxPairs>();

            foreach (Nurse nurse in Hospital.Rooms[ID].Nurses.Values)
            {
                NursesList.Add(new ComboBoxPairs(nurse.ID, nurse.Name));
            }

            foreach (Employee nurse in Hospital.Employees.Values)
            {
                Boolean valid = true;
                foreach (Nurse invalidNurse in Hospital.Rooms[ID].Nurses.Values)
                {
                    if (nurse.ID == invalidNurse.ID && nurse.GetType() == typeof(Nurse))
                    {
                        valid = false;
                    }
                }
                if (valid && nurse.GetType() == typeof(Nurse))
                {
                    NursesComboBoxItems.Add(new ComboBoxPairs(nurse.ID, nurse.Name));
                }
            }
            PatientsNumber = $"Patients : {PatientsList.Count}";
            NursesNumber   = $"Nurses : {NursesList.Count}";
        }
        public void SaveDonation(object sender, RoutedEventArgs e)
        {
            //Only accept if fields aren't blank and points amount is an integer
            ComboBoxPairs cbp = (ComboBoxPairs)ChosenDonation.SelectedItem;

            if (ManualDonationOption.Text.Trim() != "" && cbp._Value != "" /*  && ManualDonationAmount.Text.Trim() != ""&& IsTextAllowed(ManualDonationAmount.Text)*/)
            {
                Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

                using (SqliteConnection db = new SqliteConnection("Filename=donations.db"))
                {
                    db.Open();
                    SqliteCommand ud = new SqliteCommand("UPDATE allDonations7 SET Message = @NewMessage WHERE Id = @Id", db);
                    ud.Parameters.AddWithValue("@NewMessage", cbp._OriginalMessage + " " + ManualDonationOption.Text);
                    ud.Parameters.AddWithValue("@Id", cbp._Value);
                    try
                    {
                        ud.ExecuteNonQuery();
                        List <string> lines = new List <string>();
                        lines.Add(unixTimestamp + " [META] Manually updated donation " + cbp._Value + ": " + cbp._OriginalMessage + " " + ManualDonationOption.Text);
                        File.AppendAllLines("output/logs.txt", lines);
                        db.Close();
                        this.Close();
                    }
                    catch (SqliteException exe)
                    {
                        MessageBox.Show("Something went wrong with updating the donation. Please send a screenshot of this to pidge: " + exe.Message);
                        db.Close();
                        this.Close();
                    }

                    /*Console.WriteLine("manual_" + unixTimestamp.ToString() + " " + uid.ToString() + " " + ManualDonationAmount.Text + " " + ManualDonationOption.Text);
                     * SqliteCommand insertSQL = new SqliteCommand("INSERT INTO allDonations7 (Id, User, Created_At, Amount, Currency, Donator, Donator_Email, Message) SELECT @Id1, @User1, @Created_At1, @Amount1, @Currency1, @Donator1, @Donator_Email1, @Message1 WHERE NOT EXISTS(SELECT 1 FROM allDonations7 WHERE Id = @Id AND User = @User AND Created_At = @Created_At AND Amount = @Amount AND Currency = @Currency AND Donator = @Donator AND Donator_Email = @Donator_Email AND Message = @Message)", db);
                     * insertSQL.Parameters.AddWithValue("@Id1", "manual_" + unixTimestamp.ToString());
                     * insertSQL.Parameters.AddWithValue("@User1", uid);
                     * insertSQL.Parameters.AddWithValue("@Created_At1", unixTimestamp);
                     * insertSQL.Parameters.AddWithValue("@Amount1", Int32.Parse(ManualDonationAmount.Text));
                     * insertSQL.Parameters.AddWithValue("@Currency1", "BIT");
                     * insertSQL.Parameters.AddWithValue("@Donator1", "");
                     * insertSQL.Parameters.AddWithValue("@Donator_Email1", "");
                     * insertSQL.Parameters.AddWithValue("@Message1", ManualDonationOption.Text);
                     * insertSQL.Parameters.AddWithValue("@Id", "manual_" + unixTimestamp.ToString());
                     * insertSQL.Parameters.AddWithValue("@User", uid);
                     * insertSQL.Parameters.AddWithValue("@Created_At", unixTimestamp);
                     * insertSQL.Parameters.AddWithValue("@Amount", Int32.Parse(ManualDonationAmount.Text));
                     * insertSQL.Parameters.AddWithValue("@Currency", "BIT");
                     * insertSQL.Parameters.AddWithValue("@Donator", "");
                     * insertSQL.Parameters.AddWithValue("@Donator_Email", "");
                     * insertSQL.Parameters.AddWithValue("@Message", ManualDonationOption.Text);
                     * try
                     * {
                     *  insertSQL.ExecuteNonQuery();
                     *  db.Close();
                     *  this.Close();
                     * }
                     * catch (SqliteException exe)
                     * {
                     *  db.Close();
                     *  this.Close();
                     * }*/
                }
            }
        }
        public ResidentPatientDetailsViewModel(String id)
        {
            // Bill
            PatientBill = ((ResidentPatient)Hospital.Patients[id]).getBill().ToString("0.00") + '$';
            PatientID   = id;
            if (((ResidentPatient)Hospital.Patients[id]).Department != null)
            {
                PatientDepartment = ((ResidentPatient)Hospital.Patients[id]).Department.Name;
            }
            else
            {
                PatientDepartment = "N/A";
            }

            // set main page data and edit default content
            DoctorsList                = new ObservableCollection <ComboBoxPairs>();
            NursesList                 = new ObservableCollection <ComboBoxPairs>();
            MedicalHistoryList         = new ObservableCollection <ComboBoxPairs>();
            PatientRoomNumberComboBox  = new ObservableCollection <ComboBoxPairs>();
            EditDepartmentComboBox     = new ObservableCollection <ComboBoxPairs>();
            EditPatientBirthDatePicker = DateTime.Today;
            EditPatientAddressTextBox  = Hospital.Patients[id].Address;
            EditPatientBirthDatePicker = Hospital.Patients[id].BirthDate;
            EditPatientNameTextBox     = Hospital.Patients[id].Name;
            RoomNumberInEdit           = ((ResidentPatient)Hospital.Patients[id]).Room.RoomNumber.ToString();
            // rooms in combobox inside edit
            foreach (Room room in Hospital.Rooms.Values)
            {
                if (room.hasAvailableBed())
                {
                    PatientRoomNumberComboBox.Add(new ComboBoxPairs(room.ID, room.RoomNumber.ToString()));
                }
            }
            // departments in combobox inside edit
            foreach (Department department in Hospital.Departments.Values)
            {
                EditDepartmentComboBox.Add(new ComboBoxPairs(department.ID, department.Name));
            }
            // Lists
            foreach (Doctor doctor in Hospital.Patients[id].Doctors.Values)
            {
                DoctorsList.Add(new ComboBoxPairs(doctor.ID, doctor.Name));
            }
            DoctorsNumber = "Doctors: " + Hospital.Patients[id].Doctors.Count().ToString();

            foreach (Nurse nurse in ((ResidentPatient)Hospital.Patients[id]).Room.Nurses.Values)
            {
                NursesList.Add(new ComboBoxPairs(nurse.ID, nurse.Name));
            }
            NursesNumber = "Nurses:" + ((ResidentPatient)Hospital.Patients[id]).Room.Nurses.Count().ToString();

            foreach (Medicine medicine in ((ResidentPatient)Hospital.Patients[id]).History.Values)
            {
                MedicalHistoryList.Add(new ComboBoxPairs(medicine.ID, medicine.Name + " - Starting Date: " + medicine.StartingDate.ToShortDateString() + " | " + medicine.EndingDate.ToShortDateString()));
            }


            // Assigns Content
            DoctorsComboBox = new ObservableCollection <ComboBoxPairs>();
            foreach (Employee employee in Hospital.Employees.Values)
            {
                Boolean valid = true;

                if (employee.GetType() == typeof(Doctor) && valid)
                {
                    foreach (Employee invalidEmployee in Hospital.Patients[id].Doctors.Values)
                    {
                        if (employee.ID == invalidEmployee.ID)
                        {
                            valid = false;
                        }
                    }
                    if (valid)
                    {
                        DoctorsComboBox.Add(new ComboBoxPairs(employee.ID, employee.Name));
                    }
                }
            }


            editResidentPatient   = new RelayCommand(EditResidentPatient);
            deleteResidentPatient = new RelayCommand(DeleteResidentPatient);
            DoctorComboBox        = new ComboBoxPairs("Key", "Value");
            assignDoctor          = new RelayCommand(AssignDoctor);
            addMedicine           = new RelayCommand(AddMedicine);
            ListSelectedDoctor    = new ComboBoxPairs("Key", "Value");
            ListSelectedMedicine  = new ComboBoxPairs("Key", "Value");
            ListSelectedNurse     = new ComboBoxPairs("Key", "Value");
            MedicineStartDate     = DateTime.Today;
            MedicineEndDate       = DateTime.Today;
        }