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);
            }
        }
예제 #2
0
 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
 }