private void EClipboardPushPrefs() { //First get all of the clinic nums that have preference changes List <long> listClinicNumsWithChanges = _clinicPrefHelperEClipboard.GetClinicsWithChanges(); if (listClinicNumsWithChanges.Contains(0)) { //Default clinic has changed so find any clinics that used defaults. They have changed by association. listClinicNumsWithChanges.AddRange( //The default option only appears for users that don't have restricted clinic access, so start with the list of all non-hidden clinics Clinics.GetDeepCopy(isShort: true) //Filter to only those clinics that currently use defaults (they have no rules of their own). .Where(x => ClinicPrefs.GetBool(PrefName.EClipboardUseDefaults, x.ClinicNum)) //Only need the clinicNums. .Select(x => x.ClinicNum) ); } //Save to db. Form's _doSetInvalidClinicPrefs will trigger signals. if (_clinicPrefHelperEClipboard.SyncAllPrefs()) { _doSetInvalidClinicPrefs = true; } //Push all of the new preference values to the clinic nums that have preference changes foreach (long clinicNum in listClinicNumsWithChanges.Distinct()) { OpenDentBusiness.WebTypes.PushNotificationUtils.CI_NewEClipboardPrefs(clinicNum); } }
public void ClinicPrefHelper_GetClinicsWithChanges() { #region Test Setup //Set up clinics Prefs.UpdateBool(PrefName.EasyNoClinics, false); Clinic clinicA = ClinicT.CreateClinic(); //This clinic will always use defaults Clinic clinicB = ClinicT.CreateClinic(); //This clinic will start using defaults and then use its own values Clinic clinicC = ClinicT.CreateClinic(); //This clinic will always use its own values, which will not change Clinic clinicD = ClinicT.CreateClinic(); //This clinic will always use its own values, which will change Clinic clinicE = ClinicT.CreateClinic(); //This clinic will start using its own values, and then change to the defaults //Set up the baseline preferences //using EClipboard prefs because they are actually used as clinic prefs, but any pref could be used Prefs.UpdateBool(PrefName.EClipboardAllowSelfCheckIn, true); Prefs.UpdateBool(PrefName.EClipboardAllowSelfPortraitOnCheckIn, true); //Set up the clinic preferences ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfCheckIn, clinicC.ClinicNum, POut.Bool(false)); ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfPortraitOnCheckIn, clinicC.ClinicNum, POut.Bool(false)); ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfCheckIn, clinicD.ClinicNum, POut.Bool(false)); ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfPortraitOnCheckIn, clinicD.ClinicNum, POut.Bool(false)); ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfCheckIn, clinicE.ClinicNum, POut.Bool(false)); ClinicPrefs.InsertPref(PrefName.EClipboardAllowSelfPortraitOnCheckIn, clinicE.ClinicNum, POut.Bool(false)); ClinicPrefs.RefreshCache(); //Set up the ClinicPrefHelper OpenDental.ClinicPrefHelper clinicPrefHelper = new OpenDental.ClinicPrefHelper(PrefName.EClipboardAllowSelfCheckIn, PrefName.EClipboardAllowSelfPortraitOnCheckIn); #endregion Test Setup #region Test Body //Make the changes to the preferences //Update one of the default preference values clinicPrefHelper.ValChangedByUser(PrefName.EClipboardAllowSelfCheckIn, 0, POut.Bool(false)); //Update ClinicB to use one of its own values clinicPrefHelper.ValChangedByUser(PrefName.EClipboardAllowSelfPortraitOnCheckIn, clinicB.ClinicNum, POut.Bool(false)); //Update clinicD to change its own values clinicPrefHelper.ValChangedByUser(PrefName.EClipboardAllowSelfCheckIn, clinicD.ClinicNum, POut.Bool(true)); //Remove all clinicE prefs to indicate it should use the default clinicPrefHelper.ValChangedByUser(PrefName.EClipboardAllowSelfCheckIn, clinicE.ClinicNum, POut.Bool(clinicPrefHelper.GetDefaultBoolVal(PrefName.EClipboardAllowSelfCheckIn))); clinicPrefHelper.ValChangedByUser(PrefName.EClipboardAllowSelfPortraitOnCheckIn, clinicE.ClinicNum, POut.Bool(clinicPrefHelper.GetDefaultBoolVal(PrefName.EClipboardAllowSelfPortraitOnCheckIn))); #endregion Test Body #region Test Results //Test that GetClinicsWithChanges gets the right clinics for each EClipboardAllowSelfCheckIn List <long> listExpectedClinicNumsChanged_A = new List <long>() { 0, //We changed the default preference clinicD.ClinicNum, //We changed this preference clinicE.ClinicNum //We removed these preferences }; List <long> results = clinicPrefHelper.GetClinicsWithChanges(PrefName.EClipboardAllowSelfCheckIn); Assert.AreEqual(3, results.Union(listExpectedClinicNumsChanged_A).Distinct().Count()); //Test that GetClinicsWithChanges gets the right clinics for each EClipboardAllowSelfCheckIn List <long> listExpectedClinicNumsChanged_B = new List <long>() { clinicB.ClinicNum, //We changed this preference clinicE.ClinicNum //We removed these preferences }; results = clinicPrefHelper.GetClinicsWithChanges(PrefName.EClipboardAllowSelfPortraitOnCheckIn); Assert.AreEqual(2, results.Union(listExpectedClinicNumsChanged_B).Distinct().Count()); #endregion Test Results #region Test Clean Up ClinicPrefs.Sync(new List <ClinicPref>(), ClinicPrefs.GetPrefAllClinics(PrefName.EClipboardAllowSelfCheckIn)); ClinicPrefs.Sync(new List <ClinicPref>(), ClinicPrefs.GetPrefAllClinics(PrefName.EClipboardAllowSelfPortraitOnCheckIn)); Clinics.Delete(clinicA); Clinics.Delete(clinicB); Clinics.Delete(clinicC); Clinics.Delete(clinicD); Clinics.Delete(clinicE); #endregion Test Clean Up }