Exemplo n.º 1
0
            public virtual List <ChildObject> _SelectListInternal(DbManagerProxy manager
                                                                  , Int64?ID
                                                                  , on_action loading, on_action loaded
                                                                  )
            {
                ChildObject _obj = null;

                try
                {
                    MapResultSet[]     sets = new MapResultSet[1];
                    List <ChildObject> objs = new List <ChildObject>();
                    sets[0] = new MapResultSet(typeof(ChildObject), objs);

                    manager
                    .SetSpCommand("spChildObject_SelectDetail"
                                  , manager.Parameter("@ID", ID)
                                  , manager.Parameter("@LangID", ModelUserContext.CurrentLanguage)

                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 2
0
            public virtual List <SampleTypeForDiagnosisLookup> _SelectListInternal(DbManagerProxy manager
                                                                                   , Int32?intHACode
                                                                                   , on_action loading, on_action loaded
                                                                                   )
            {
                SampleTypeForDiagnosisLookup _obj = null;

                try
                {
                    MapResultSet[] sets = new MapResultSet[1];
                    List <SampleTypeForDiagnosisLookup> objs = new List <SampleTypeForDiagnosisLookup>();
                    sets[0] = new MapResultSet(typeof(SampleTypeForDiagnosisLookup), objs);

                    manager
                    .SetSpCommand("spSampleTypeForDiagnosis_SelectLookup"
                                  , manager.Parameter("@intHACode", intHACode)
                                  , manager.Parameter("@LangID", ModelUserContext.CurrentLanguage)

                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 3
0
            private CountryLookup _CreateNew(DbManagerProxy manager, IObject Parent, int?HACode, on_action creating, on_action created, bool isFake = false)
            {
                CountryLookup obj = null;

                try
                {
                    obj         = CountryLookup.CreateInstance();
                    obj.m_CS    = m_CS;
                    obj.m_IsNew = true;
                    obj.Parent  = Parent;

                    if (creating != null)
                    {
                        creating(obj);
                    }

                    // creating extenters - begin
                    // creating extenters - end

                    _LoadLookups(manager, obj);
                    _SetupHandlers(obj);
                    _SetupChildHandlers(obj, null);

                    obj._SetupMainHandler();
                    obj._setParent();

                    // created extenters - begin
                    // created extenters - end

                    if (created != null)
                    {
                        created(obj);
                    }
                    obj.Created(manager);
                    _SetPermitions(obj._permissions, obj);
                    _SetupRequired(obj);
                    _SetupPersonalDataRestrictions(obj);
                    return(obj);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(obj, e);
                }
            }
Exemplo n.º 4
0
            public virtual List <AnimalAgeLookup> _SelectListInternal(DbManagerProxy manager
                                                                      , String idfsSpecies
                                                                      , on_action loading, on_action loaded
                                                                      )
            {
                AnimalAgeLookup _obj = null;

                try
                {
                    MapResultSet[]         sets = new MapResultSet[1];
                    List <AnimalAgeLookup> objs = new List <AnimalAgeLookup>();
                    sets[0] = new MapResultSet(typeof(AnimalAgeLookup), objs);

                    manager
                    .SetSpCommand("spAnimalAgeList_SelectLookup"
                                  , manager.Parameter("@idfsSpecies", idfsSpecies)
                                  , manager.Parameter("@LangID", ModelUserContext.CurrentLanguage)

                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 5
0
            public virtual List <Lookup2ParamTable> _SelectListInternal(DbManagerProxy manager
                                                                        , Int32?ParentID
                                                                        , on_action loading, on_action loaded
                                                                        )
            {
                Lookup2ParamTable _obj = null;

                try
                {
                    MapResultSet[]           sets = new MapResultSet[1];
                    List <Lookup2ParamTable> objs = new List <Lookup2ParamTable>();
                    sets[0] = new MapResultSet(typeof(Lookup2ParamTable), objs);

                    manager
                    .SetSpCommand("spLookupTable2Param_SelectLookup"
                                  , manager.Parameter("@ParentID", ParentID)
                                  , manager.Parameter("@LangID", ModelUserContext.CurrentLanguage)

                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 6
0
            public virtual List <SmphBaseReferenceTranslationLookup> _SelectListInternal(DbManagerProxy manager
                                                                                         , Int64?idfsReferenceType
                                                                                         , String lang
                                                                                         , on_action loading, on_action loaded
                                                                                         )
            {
                SmphBaseReferenceTranslationLookup _obj = null;

                try
                {
                    MapResultSet[] sets = new MapResultSet[1];
                    List <SmphBaseReferenceTranslationLookup> objs = new List <SmphBaseReferenceTranslationLookup>();
                    sets[0] = new MapResultSet(typeof(SmphBaseReferenceTranslationLookup), objs);

                    manager
                    .SetSpCommand("spSmphBaseReferenceTranslation_SelectLookup"
                                  , manager.Parameter("@idfsReferenceType", idfsReferenceType)
                                  , manager.Parameter("@lang", lang)
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 7
0
            public List <CustomMandatoryField> GetCustomMandatoryFields(long?idfCustomizationPackage = null)
            {
                using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
                {
                    try
                    {
                        DataTable dt = manager.SetSpCommand("dbo.spContext_GetCustomMandatoryFields",
                                                            manager.Parameter("@idfCustomizationPackage", idfCustomizationPackage)
                                                            ).ExecuteDataTable();

                        return((from DataRow row in dt.Rows
                                select(CustomMandatoryField) Convert.ToInt64(row["idfMandatoryField"])).ToList());
                    }
                    catch (DataException e)
                    {
                        throw DbModelException.Create(null, e);
                    }
                }
            }
Exemplo n.º 8
0
 public int SetPassword(object userID, string password)
 {
     using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
     {
         try
         {
             manager.SetSpCommand("dbo.spSetPassword",
                                  manager.Parameter("@UserID", userID),
                                  manager.Parameter("@Password", PasswordHash(password)),
                                  manager.Parameter(ParameterDirection.Output, "@Result", 0)
                                  ).ExecuteNonQuery();
             return(Convert.ToInt32(manager.Parameter("@Result").Value));
         }
         catch (DataException e)
         {
             throw DbModelException.Create(null, e);
         }
     }
 }
Exemplo n.º 9
0
 internal int CheckVersion()
 {
     using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
     {
         try
         {
             manager.SetSpCommand("dbo.spCheckVersion",
                                  manager.Parameter("@ModuleName", ModelUserContext.ApplicationName),
                                  manager.Parameter("@ModuleVersion", ModelUserContext.Version),
                                  manager.Parameter(ParameterDirection.Output, "@Result", 0)
                                  ).ExecuteNonQuery();
             return(Convert.ToInt32(manager.Parameter("@Result").Value));
         }
         catch (DataException e)
         {
             throw DbModelException.Create(null, e);
         }
     }
 }
Exemplo n.º 10
0
            public virtual List <RuleConstant> _SelectListInternal(DbManagerProxy manager
                                                                   , Int64?idfsRule
                                                                   , on_action loading, on_action loaded
                                                                   )
            {
                RuleConstant _obj = null;

                try
                {
                    MapResultSet[]      sets = new MapResultSet[1];
                    List <RuleConstant> objs = new List <RuleConstant>();
                    sets[0] = new MapResultSet(typeof(RuleConstant), objs);

                    manager
                    .SetSpCommand("spFFGetRuleConstant"
                                  , manager.Parameter("@idfsRule", idfsRule)
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 11
0
            public virtual List <SmphInvisibleFieldsLookup> _SelectListInternal(DbManagerProxy manager
                                                                                , Int64?idfCustomizationPackage
                                                                                , on_action loading, on_action loaded
                                                                                )
            {
                SmphInvisibleFieldsLookup _obj = null;

                try
                {
                    MapResultSet[] sets = new MapResultSet[1];
                    List <SmphInvisibleFieldsLookup> objs = new List <SmphInvisibleFieldsLookup>();
                    sets[0] = new MapResultSet(typeof(SmphInvisibleFieldsLookup), objs);

                    manager
                    .SetSpCommand("spSmphInvisibleFields_SelectLookup"
                                  , manager.Parameter("@idfCustomizationPackage", idfCustomizationPackage)
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 12
0
            public virtual List <PostalCodeLookup> _SelectListInternal(DbManagerProxy manager
                                                                       , Int64?SettlementID
                                                                       , on_action loading, on_action loaded
                                                                       )
            {
                PostalCodeLookup _obj = null;

                try
                {
                    MapResultSet[]          sets = new MapResultSet[1];
                    List <PostalCodeLookup> objs = new List <PostalCodeLookup>();
                    sets[0] = new MapResultSet(typeof(PostalCodeLookup), objs);

                    manager
                    .SetSpCommand("spPostalCode_SelectLookup"
                                  , manager.Parameter("@SettlementID", SettlementID)
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 13
0
            public virtual List <Observation> _SelectListInternal(DbManagerProxy manager
                                                                  , String observationList
                                                                  , on_action loading, on_action loaded
                                                                  )
            {
                Observation _obj = null;

                try
                {
                    MapResultSet[]     sets = new MapResultSet[1];
                    List <Observation> objs = new List <Observation>();
                    sets[0] = new MapResultSet(typeof(Observation), objs);

                    manager
                    .SetSpCommand("spFFGetObservations"
                                  , manager.Parameter("@observationList", observationList)
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 14
0
 private List <EidssSiteOptions> GetSiteOptions(string spName)
 {
     Utils.CheckNotNullOrEmpty(spName, "spName");
     using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
     {
         try
         {
             List <EidssSiteOptions> eidssSiteOptionses = manager.SetSpCommand(spName).ExecuteList <EidssSiteOptions>();
             return(eidssSiteOptionses);
         }
         catch (Exception e)
         {
             if (e is DataException)
             {
                 throw DbModelException.Create(null, e as DataException);
             }
             throw;
         }
     }
 }
Exemplo n.º 15
0
            public int ChangePassword(string organization, string userName, string currentPassword, string newPassword)
            {
                int res = CheckVersion();

                if (res != 0)
                {
                    return(res);
                }

                object hash = null;

                res = EvaluateHash(currentPassword, ref hash);
                if (res != 0)
                {
                    return(res);
                }

                using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
                {
                    try
                    {
                        DataTable dt = manager.SetSpCommand("dbo.spChangePassword",
                                                            manager.Parameter("@Organization", organization),
                                                            manager.Parameter("@UserName", userName),
                                                            manager.Parameter("@CurrentPassword", hash),
                                                            manager.Parameter("@NewPassword", PasswordHash(newPassword)),
                                                            manager.Parameter(ParameterDirection.Output, "@Result", 0)
                                                            ).ExecuteDataTable();
                        res = Convert.ToInt32(manager.Parameter("@Result").Value);
                        if (res == 0)
                        {
                            SetEidssUser(dt);
                        }
                        return(res);
                    }
                    catch (DataException e)
                    {
                        throw DbModelException.Create(null, e);
                    }
                }
            }
Exemplo n.º 16
0
 public virtual List<FFTemplateLookup> _SelectListInternal(DbManagerProxy manager
     , Int64? idfsFormTemplate
     , Int64? idfsFormType
     , on_action loading, on_action loaded
     )
 {
     FFTemplateLookup _obj = null;
     try
     {
         MapResultSet[] sets = new MapResultSet[1];
         List<FFTemplateLookup> objs = new List<FFTemplateLookup>();
         sets[0] = new MapResultSet(typeof(FFTemplateLookup), objs);
         
         manager
             .SetSpCommand("spFFGetTemplates"
                 , manager.Parameter("@idfsFormTemplate", idfsFormTemplate)
                 , manager.Parameter("@idfsFormType", idfsFormType)
                 , manager.Parameter("@LangID", ModelUserContext.CurrentLanguage)
                 
                 )
             .ExecuteResultSet(sets);
         foreach(var obj in objs) 
         {
             _obj = obj;
             obj.m_CS = m_CS;
             
             if (loading != null)
                 loading(obj);
             _SetupLoad(manager, obj);
             
             if (loaded != null)
                 loaded(obj);
         }
         
         return objs;
     }
     catch(DataException e)
     {
         throw DbModelException.Create(_obj, e);
     }
 }
Exemplo n.º 17
0
 private List <long> GetDenyPermissionOnDiagnosis(object userId)
 {
     using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
     {
         try
         {
             DataTable table =
                 manager.SetCommand(
                     "select idfsDiagnosis from dbo.fnGetPermissionOnDiagnosis(@ObjectOperation, @Employee) where intPermission = 1",
                     manager.Parameter("@ObjectOperation", Convert.ToInt64(ObjectOperation.Read)),
                     manager.Parameter("@Employee", userId)
                     ).ExecuteDataTable();
             return((from DataRow row in table.Rows
                     select(long) row["idfsDiagnosis"]).ToList());
         }
         catch (DataException e)
         {
             throw DbModelException.Create(null, e);
         }
     }
 }
Exemplo n.º 18
0
            public virtual List <SmphDiagnosisLookup> _SelectListInternal(DbManagerProxy manager
                                                                          , on_action loading, on_action loaded
                                                                          )
            {
                SmphDiagnosisLookup _obj = null;

                try
                {
                    MapResultSet[]             sets = new MapResultSet[1];
                    List <SmphDiagnosisLookup> objs = new List <SmphDiagnosisLookup>();
                    sets[0] = new MapResultSet(typeof(SmphDiagnosisLookup), objs);

                    manager
                    .SetSpCommand("spSmphDiagnosis_SelectLookup"
                                  )
                    .ExecuteResultSet(sets);
                    foreach (var obj in objs)
                    {
                        _obj     = obj;
                        obj.m_CS = m_CS;

                        if (loading != null)
                        {
                            loading(obj);
                        }
                        _SetupLoad(manager, obj);

                        if (loaded != null)
                        {
                            loaded(obj);
                        }
                    }

                    return(objs);
                }
                catch (DataException e)
                {
                    throw DbModelException.Create(_obj, e);
                }
            }
Exemplo n.º 19
0
        private void CreateEvent(DbManagerProxy manager, int isProcessed, EventType eventType, long?objectIdent, string info)
        {
            try
            {
                Type cacheManager = Type.GetType("bv.common.db.Core.LookupCache, bvdb_common");
                if (cacheManager != null)
                {
                    MethodInfo method = cacheManager.GetMethod("Refresh", BindingFlags.Static | BindingFlags.Public, null,
                                                               new[] { typeof(string), typeof(bool), typeof(IDbTransaction), typeof(object) }, null);
                    if (method != null)
                    {
                        method.Invoke(null, new object[] { info, false, manager.Transaction, null });
                    }
                }

                var lEventID = manager.SetSpCommand("dbo.spEventLog_CreateNewEvent",
                                                    eventType,
                                                    objectIdent,
                                                    info,
                                                    DBNull.Value,
                                                    ClientID,
                                                    DBNull.Value,
                                                    isProcessed,
                                                    DBNull.Value,
                                                    DBNull.Value,
                                                    DBNull.Value,
                                                    DBNull.Value
                                                    ).ExecuteScalar <long>(ScalarSourceType.OutputParameter, "EventID");

                m_EventIdents.Add(lEventID);
            }
            catch (Exception e)
            {
                if (e is DataException)
                {
                    throw DbModelException.Create(null, e as DataException);
                }
                throw;
            }
        }
Exemplo n.º 20
0
 public int LogIn(string ticketId, bool repeatAfterDeadlock = true)
 {
     using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
     {
         try
         {
             DataTable dt = manager.SetSpCommand("dbo.spLoginByTicket",
                                                 manager.Parameter("@strTicket", ticketId),
                                                 manager.Parameter("@intExpirationInterval", BaseSettings.TicketExpiration),
                                                 manager.Parameter(ParameterDirection.Output, "@Result", 0)
                                                 ).ExecuteDataTable();
             int res = Convert.ToInt32(manager.Parameter("@Result").Value);
             if (res == 0)
             {
                 PerformLogin(dt);
             }
             m_LoginTry = 0;
             return(res);
         }
         catch (Exception e)
         {
             Dbg.Debug("login by ticket failed, error: {0}", e);
             Dbg.Trace();
             m_LoginTry++;
             if (DbModelException.IsDeadlockException(e) && m_LoginTry < DedalockRepeatCount)
             {
                 Debug.WriteLine("user login deadlock found");
                 return(LogIn(ticketId, m_LoginTry < DedalockRepeatCount - 1));
             }
             var dataException = e as DataException;
             if (dataException != null)
             {
                 m_LoginTry = 0;
                 throw DbModelException.Create(null, dataException);
             }
             m_LoginTry = 0;
             throw;
         }
     }
 }
Exemplo n.º 21
0
            public string CreateTicket(long userId)
            {
                var dbType = DatabaseType.Main;
                var connectionCredentials = new ConnectionCredentials(null, "Avr");

                if (connectionCredentials.IsCorrect)
                {
                    DbManagerFactory.SetSqlFactory(connectionCredentials.ConnectionString, DatabaseType.AvrTicket);
                    using (var avrManager = DbManagerFactory.Factory[DatabaseType.AvrTicket].Create())
                    {
                        if (avrManager.TestConnection())
                        {
                            dbType = DatabaseType.AvrTicket;
                        }
                    }
                }
                using (DbManagerProxy manager = DbManagerFactory.Factory[dbType].Create(ModelUserContext.Instance))
                {
                    try
                    {
                        manager.SetSpCommand("dbo.spLoginCreateTicket",
                                             manager.Parameter("@idfUserID", userId),
                                             manager.Parameter(ParameterDirection.Output, "@strTicket", ""),
                                             manager.Parameter(ParameterDirection.Output, "@Result", 0)
                                             ).ExecuteNonQuery();
                        int res = Convert.ToInt32(manager.Parameter("@Result").Value);
                        if (res == 0)
                        {
                            return(Utils.Str(manager.Parameter("@strTicket").Value));
                        }
                        return(null);
                    }
                    catch (DataException e)
                    {
                        throw DbModelException.Create(null, e);
                    }
                }
            }
Exemplo n.º 22
0
        public ActionResult HttpError()
        {
            Exception ex = null;

            ViewData["SessionExpired"] = false;
            try
            {
                ex = (Exception)HttpContext.Application[Request.UserHostAddress];
                ViewData["Description"] = ex.Message;
            }
            catch
            {
                ViewData["Description"] = EidssMessages.Get("Error_Unknown");
            }

            if (ex != null)
            {
                if (ex is ObjectNotFoundException)
                {
                    ViewData["Description"] = EidssMessages.Get("Error_ObjectExpired");
                }
                else if (ex is DbModelException)
                {
                    DbModelException ex1 = ex as DbModelException;
                    // ViewData["Description"] = ex.Message;
                    //if (ex1 != null)
                    //{
                    //    ViewData["Description"] = ex1.Message;
                    //}
                    if (string.IsNullOrEmpty(ex1.MessageId))
                    {
                        ViewData["Description"] = ex1.Message;
                    }
                    else
                    {
                        string err = EidssMessages.Get(ex1.MessageId);
                        if (string.IsNullOrEmpty(err))
                        {
                            err = BvMessages.Get(ex1.MessageId, ex1.Message);
                        }
                        ViewData["Description"] = err;
                    }
                }
                else
                {
                    if (EidssUserContext.User == null || Session == null || String.IsNullOrEmpty(EidssUserContext.User.FullName))
                    {
                        ViewData["Description"]    = EidssMessages.Get("SessionExpired");
                        ViewData["SessionExpired"] = true;
                    }
                    else
                    {
                        ViewData["Description"] = ex.Message;
                    }
                }
            }
            else
            {
                ViewData["Description"] = EidssMessages.Get("Error_Custom");
            }

            ViewData["Title"] = EidssMessages.Get("Error_Custom");

            return(View("Error"));
        }
Exemplo n.º 23
0
            public List <PersonalDataGroup> GetPersonalDataGroups(long?idfUser = null,
                                                                  long?idfCustomizationPackage = null)
            {
                using (DbManagerProxy manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance))
                {
                    var result = new List <PersonalDataGroup>();
                    try
                    {
                        Dictionary <string, bool> permissions;
                        if (EidssUserContext.User == null)
                        {
                            //check if user has restrictions
                            permissions = ParsePermissions(
                                manager.SetSpCommand("dbo.spEvaluatePermissions",
                                                     manager.Parameter("@idfEmployee", idfUser)
                                                     ).ExecuteDataTable());
                        }
                        else
                        {
                            permissions = (Dictionary <string, bool>)EidssUserContext.User.Permissions;
                        }

                        List <PersonalDataGroup> personalGroups = ParsePersonalDataGroups(
                            manager.SetSpCommand("[dbo].[spContext_GetPersonalDataGroups]",
                                                 manager.Parameter("@idfCustomizationPackage", idfCustomizationPackage)
                                                 ).ExecuteDataTable());

                        if (personalGroups.Count == 0)
                        {
                            return(result);
                        }

                        var splitter = new[] { '.' };

                        foreach (KeyValuePair <string, bool> permission in permissions)
                        {
                            string[] parser = permission.Key.Split(splitter);

                            if (parser[1].Equals(AccessToPersonalDataString, StringComparison.InvariantCultureIgnoreCase) &&
                                !permission.Value)
                            {
                                bool human = parser[0] == EIDSSPermissionObject.HumanCase.ToString();
                                bool vet   = parser[0] == EIDSSPermissionObject.VetCase.ToString();
                                foreach (PersonalDataGroup pg in personalGroups)
                                {
                                    if (pg.ToString().StartsWith("Human") && human)
                                    {
                                        result.Add(pg);
                                        continue;
                                    }
                                    if (pg.ToString().StartsWith("Vet") && vet)
                                    {
                                        result.Add(pg);
                                    }
                                }
                            }
                            if (personalGroups.Count == result.Count)
                            {
                                break;
                            }
                        }

                        return(result);
                    }
                    catch (DataException e)
                    {
                        throw DbModelException.Create(null, e);
                    }
                }
            }