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 ResetInstance()
 {
     _instance = null;
 }
 public static DepartmentRepo GetInstance(IPersistable persistable, List <Practitioner> practitioners)
 {
     return(_instance ?? (_instance = new DepartmentRepo(persistable, practitioners)));
 }