private Controller()
        {
            IPersistable persistable = new DbController();

            _clientRepo = ClientRepo.GetInstance(persistable);
            _clientRepo.NewClientEventHandler += NewClientEventHandler;

            _practitionerRepo = PractitionerRepo.GetInstance(persistable);

            _departmentRepo = DepartmentRepo.GetInstance(persistable, _practitionerRepo.GetPractitioners());

            _appointmentRepo = AppointmentRepo.GetInstance(persistable, GetUsers(), _departmentRepo.GetDepartments());
            _appointmentRepo.AppointmentsChangedEventHandler += AppointmentsChangedEventHandler;

            UpdateFromDatabase updateFromDatabase = UpdateFromDatabase.GetInstance(persistable,
                                                                                   _clientRepo.GetClients(), _appointmentRepo.GetAppointments(), _practitionerRepo.GetPractitioners(),
                                                                                   _departmentRepo.GetDepartments());

            updateFromDatabase.ClientsUpdatedEventHandler      += _clientRepo.Update;
            updateFromDatabase.AppointmentsUpdatedEventHandler += _appointmentRepo.Update;
        }
 public void StopRunning()
 {
     AppointmentNotification.StopThread();
     UpdateFromDatabase.StopThread();
 }
 public static UpdateFromDatabase GetInstance(IPersistable persistable, List <Client> clients,
                                              List <Appointment> appointments, List <Practitioner> practitioners, List <Department> departments)
 {
     return(_instance ?? (_instance =
                              new UpdateFromDatabase(persistable, clients, appointments, practitioners, departments)));
 }