private NavBarTabCollection GetNavBarTabCollection(NavBarSettings settings)
        {
            NavBarTabCollection navBarTabCollection = new NavBarTabCollection();

            foreach (NavBarTab tab in settings.Tabs)
            {
                navBarTabCollection.Add(tab);
            }
            return(navBarTabCollection);
        }
        public void Create(NavBarSettings settings, IUnitOfWork unitOfWork = null)
        {
            NavBarTabCollection navBarTabCollection = GetNavBarTabCollection(settings);
            IUnitOfWork         localUnitOfWork     = unitOfWork == null?_unitOfWorkFactory.CreateUnitOfWork() : null;

            try
            {
                IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork ?? localUnitOfWork);
                string           sql = _sqlManager.GetSql("Sql.CreateNavBar.sql");
                dbm.SetSQL(sql);
                dbm.AddParameter("@TenantId", FieldType.BigInt, settings.TenantId);
                dbm.AddParameter("@ElementId", FieldType.BigInt, settings.ElementId);
                dbm.AddParameter("@Name", FieldType.NVarChar, 50, settings.NavBarName ?? (object)DBNull.Value);
                dbm.AddParameter("@ShowLoggedOnUserOptions", FieldType.Bit, settings.ShowLoggedOnUserOptions);
                dbm.AddParameter("@ShowLoggedOffUserOptions", FieldType.Bit, settings.ShowLoggedOffUserOptions);
                dbm.AddTypedParameter("@NavBarTabs", FieldType.Structured, navBarTabCollection.Count == 0 ? null : navBarTabCollection, "element.NavBarTabTableType");
                dbm.ExecuteNonQuery();
                if (localUnitOfWork != null)
                {
                    localUnitOfWork.Commit();
                }
            }
            catch
            {
                if (localUnitOfWork != null)
                {
                    localUnitOfWork.Rollback();
                }
                throw;
            }
            finally
            {
                if (localUnitOfWork != null)
                {
                    localUnitOfWork.Dispose();
                }
            }
        }