Exemple #1
0
        ///<summary>Sets Clinics.ClinicNum. Used when logging on to determines what clinic to start with based on user and workstation preferences.</summary>
        public static void LoadClinicNumForUser()
        {
            _clinicNum = 0;          //aka headquarters clinic when clinics are enabled.
            if (!PrefC.HasClinicsEnabled || Security.CurUser == null)
            {
                return;
            }
            List <Clinic> listClinics = Clinics.GetForUserod(Security.CurUser);

            switch (PrefC.GetString(PrefName.ClinicTrackLast))
            {
            case "Workstation":
                if (Security.CurUser.ClinicIsRestricted && Security.CurUser.ClinicNum != ComputerPrefs.LocalComputer.ClinicNum)                       //The user is restricted and it's not the clinic this computer has by default
                //User's default clinic isn't the LocalComputer's clinic, see if they have access to the Localcomputer's clinic, if so, use it.
                {
                    Clinic clinic = listClinics.Find(x => x.ClinicNum == ComputerPrefs.LocalComputer.ClinicNum);
                    if (clinic != null)
                    {
                        _clinicNum = clinic.ClinicNum;
                    }
                    else
                    {
                        _clinicNum = Security.CurUser.ClinicNum;                              //Use the user's default clinic if they don't have access to LocalComputer's clinic.
                    }
                }
                else                          //The user is not restricted, just use the clinic in the ComputerPref table.
                {
                    _clinicNum = ComputerPrefs.LocalComputer.ClinicNum;
                }
                return;                        //Error

            case "User":
                List <UserOdPref> prefs = UserOdPrefs.GetByUserAndFkeyType(Security.CurUser.UserNum, UserOdFkeyType.ClinicLast);                      //should only be one or none.
                if (prefs.Count == 0)
                {
                    UserOdPref pref =
                        new UserOdPref()
                    {
                        UserNum  = Security.CurUser.UserNum,
                        FkeyType = UserOdFkeyType.ClinicLast,
                        Fkey     = Security.CurUser.ClinicNum                                  //default clinic num
                    };
                    UserOdPrefs.Insert(pref);
                    prefs.Add(pref);
                }
                if (listClinics.Any(x => x.ClinicNum == prefs[0].Fkey))                       //user is restricted and does not have access to the computerpref clinic
                {
                    _clinicNum = prefs[0].Fkey;
                }
                return;

            case "None":
            default:
                if (listClinics.Any(x => x.ClinicNum == Security.CurUser.ClinicNum))
                {
                    _clinicNum = Security.CurUser.ClinicNum;
                }
                break;
            }
        }
Exemple #2
0
        ///<summary>This should be called when the user is changed (excluding temporay logins such as job review logins).
        ///In the future, we could also call this if we detect the office theme has changed via signal preference cache refresh or if
        ///another person using the same login information changes the theme for a group of users.</summary>
        public static void SetThemeForUserIfNeeded()
        {
            OdTheme themeDefault = OdTheme.Standard;

            try {
                themeDefault = (OdTheme)PrefC.GetInt(PrefName.ColorTheme);
            }
            catch {
                //try/catch in case you are trying to convert from an older version of OD and need to update the DB.
            }
            if (Security.CurUser == null)           //no current user, set to the default practice theme.
            {
                ODColorTheme.SetTheme(themeDefault);
                return;
            }
            UserOdPref themePref = UserOdPrefs.GetByUserAndFkeyType(Security.CurUser.UserNum, UserOdFkeyType.UserTheme).FirstOrDefault();

            //user theme not allowed or hasn't been set
            if (!PrefC.GetBool(PrefName.ThemeSetByUser) || themePref == null)
            {
                ODColorTheme.SetTheme(themeDefault);
            }
            else if (themePref != null)           //user theme allowed but needs to update for user pref
            {
                ODColorTheme.SetTheme((OdTheme)themePref.Fkey);
            }
        }
Exemple #3
0
 ///<summary></summary>
 public static long Insert(UserOdPref userOdPref)
 {
     if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
     {
         userOdPref.UserOdPrefNum = Meth.GetLong(MethodBase.GetCurrentMethod(), userOdPref);
         return(userOdPref.UserOdPrefNum);
     }
     return(Crud.UserOdPrefCrud.Insert(userOdPref));
 }
Exemple #4
0
        /*
         * //If this table type will exist as cached data, uncomment the CachePattern region below and edit.
         #region CachePattern
         *
         * private class UserOdPrefCache : CacheListAbs<UserOdPref> {
         *      protected override List<UserOdPref> GetCacheFromDb() {
         *              string command="SELECT * FROM UserOdPref ORDER BY ItemOrder";
         *              return Crud.UserOdPrefCrud.SelectMany(command);
         *      }
         *      protected override List<UserOdPref> TableToList(DataTable table) {
         *              return Crud.UserOdPrefCrud.TableToList(table);
         *      }
         *      protected override UserOdPref Copy(UserOdPref UserOdPref) {
         *              return UserOdPref.Clone();
         *      }
         *      protected override DataTable ListToTable(List<UserOdPref> listUserOdPrefs) {
         *              return Crud.UserOdPrefCrud.ListToTable(listUserOdPrefs,"UserOdPref");
         *      }
         *      protected override void FillCacheIfNeeded() {
         *              UserOdPrefs.GetTableFromCache(false);
         *      }
         *      protected override bool IsInListShort(UserOdPref UserOdPref) {
         *              return !UserOdPref.IsHidden;
         *      }
         * }
         *
         * ///<summary>The object that accesses the cache in a thread-safe manner.</summary>
         * private static UserOdPrefCache _UserOdPrefCache=new UserOdPrefCache();
         *
         * ///<summary>A list of all UserOdPrefs. Returns a deep copy.</summary>
         * public static List<UserOdPref> ListDeep {
         *      get {
         *              return _UserOdPrefCache.ListDeep;
         *      }
         * }
         *
         * ///<summary>A list of all visible UserOdPrefs. Returns a deep copy.</summary>
         * public static List<UserOdPref> ListShortDeep {
         *      get {
         *              return _UserOdPrefCache.ListShortDeep;
         *      }
         * }
         *
         * ///<summary>A list of all UserOdPrefs. Returns a shallow copy.</summary>
         * public static List<UserOdPref> ListShallow {
         *      get {
         *              return _UserOdPrefCache.ListShallow;
         *      }
         * }
         *
         * ///<summary>A list of all visible UserOdPrefs. Returns a shallow copy.</summary>
         * public static List<UserOdPref> ListShort {
         *      get {
         *              return _UserOdPrefCache.ListShallowShort;
         *      }
         * }
         *
         * ///<summary>Refreshes the cache and returns it as a DataTable. This will refresh the ClientWeb's cache and the ServerWeb's cache.</summary>
         * public static DataTable RefreshCache() {
         *      return GetTableFromCache(true);
         * }
         *
         * ///<summary>Fills the local cache with the passed in DataTable.</summary>
         * public static void FillCacheFromTable(DataTable table) {
         *      _UserOdPrefCache.FillCacheFromTable(table);
         * }
         *
         * ///<summary>Always refreshes the ClientWeb's cache.</summary>
         * public static DataTable GetTableFromCache(bool doRefreshCache) {
         *      if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) {
         *              DataTable table=Meth.GetTable(MethodBase.GetCurrentMethod(),doRefreshCache);
         *              _UserOdPrefCache.FillCacheFromTable(table);
         *              return table;
         *      }
         *      return _UserOdPrefCache.GetTableFromCache(doRefreshCache);
         * }
         *
         #endregion
         */
        /*
         * ///<summary></summary>
         * public static List<UserOdPref> Refresh(long userNum){
         *      if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) {
         *              return Meth.GetObject<List<UserOdPref>>(MethodBase.GetCurrentMethod(),userNum);
         *      }
         *      string command="SELECT * FROM userodpref WHERE UserNum = "+POut.Long(userNum);
         *      return Crud.UserOdPrefCrud.SelectMany(command);
         * }
         *
         * ///<summary>Gets one UserOdPref from the db.</summary>
         * public static UserOdPref GetOne(long userOdPrefNum){
         *      if(RemotingClient.RemotingRole==RemotingRole.ClientWeb){
         *              return Meth.GetObject<UserOdPref>(MethodBase.GetCurrentMethod(),userOdPrefNum);
         *      }
         *      return Crud.UserOdPrefCrud.SelectOne(userOdPrefNum);
         * }
         */

        ///<summary></summary>
        public static void Update(UserOdPref userOdPref)
        {
            if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
            {
                Meth.GetVoid(MethodBase.GetCurrentMethod(), userOdPref);
                return;
            }
            Crud.UserOdPrefCrud.Update(userOdPref);
        }
Exemple #5
0
        ///<summary>Called when logging user off or closing opendental.</summary>
        public static void LogOff()
        {
            if (!PrefC.HasClinicsEnabled)
            {
                _clinicNum = 0;
                return;
            }
            switch (PrefC.GetString(PrefName.ClinicTrackLast))
            {
            case "Workstation":
                ComputerPref compPref = ComputerPrefs.LocalComputer;
                compPref.ClinicNum = Clinics.ClinicNum;
                ComputerPrefs.Update(compPref);
                break;

            case "User":
                List <UserOdPref> UserPrefs = UserOdPrefs.GetByUserAndFkeyType(Security.CurUser.UserNum, UserOdFkeyType.ClinicLast);                      //should only be one or none.
                if (UserPrefs.Count == 0)
                {
                    //this situation should never happen.
                    UserOdPref pref =
                        new UserOdPref()
                    {
                        UserNum  = Security.CurUser.UserNum,
                        FkeyType = UserOdFkeyType.ClinicLast,
                        Fkey     = Clinics.ClinicNum
                    };
                    UserOdPrefs.Insert(pref);
                    break;
                }
                UserPrefs.ForEach(x => x.Fkey = Clinics.ClinicNum);
                UserPrefs.ForEach(UserOdPrefs.Update);
                break;

            case "None":
            default:
                break;
            }
            _clinicNum = 0;
        }
Exemple #6
0
        ///<summary>Called when logging user off or closing opendental.</summary>
        public static void LogOff()
        {
            if (!PrefC.HasClinicsEnabled)
            {
                _clinicNum = 0;
                return;
            }
            switch (PrefC.GetString(PrefName.ClinicTrackLast))
            {
            case "Workstation":
                ComputerPrefs.LocalComputer.ClinicNum = Clinics.ClinicNum;
                ComputerPrefs.Update(ComputerPrefs.LocalComputer);
                break;

            case "User":                    //handled below
            case "None":
            default:
                break;
            }
            //We want to always upsert a user pref for the user because we will be looking at it for MobileWeb regardless of the preference for
            //ClinicTrackLast.
            List <UserOdPref> UserPrefs = UserOdPrefs.GetByUserAndFkeyType(Security.CurUser.UserNum, UserOdFkeyType.ClinicLast);        //should only be one or none.

            if (UserPrefs.Count == 0)
            {
                UserOdPref pref = new UserOdPref()
                {
                    UserNum  = Security.CurUser.UserNum,
                    FkeyType = UserOdFkeyType.ClinicLast,
                    Fkey     = Clinics.ClinicNum
                };
                UserOdPrefs.Insert(pref);
            }
            UserPrefs.ForEach(x => {
                x.Fkey = Clinics.ClinicNum;
                UserOdPrefs.Update(x);
            });
            _clinicNum = 0;
        }