public AppointmentNotification(List <Appointment> tempAppointments, AppointmentRepo appointmentRepo, IPersistable persistable)
        {
            _appointments = tempAppointments;

            _persistable = persistable;

            _clientRepo       = ClientRepo.GetInstance(_persistable);
            _mailNotification = new MailNotification(_persistable);

            _appointmentRepo = appointmentRepo;
            appointmentRepo.AppointmentsChangedEventHandler += UpdateAppointments;

            EmailUpdateThread();
        }
        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 AppointmentRepo GetInstance(IPersistable persistable, List <User> users, List <Department> departments)
 {
     return(_instance ?? (_instance = new AppointmentRepo(persistable, users, departments)));
 }