Пример #1
0
        /// <summary>
        /// Retrieve the authorizations definition list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged authorizations data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                // Configuring filters with wildcards to match substrings also
                var name      = sqlFilters.FirstOrDefault(i => i.Name == "name")?.Value;
                var nameValue = string.IsNullOrEmpty(name) ? string.Empty : $"%{name}%";

                var count = await connection.QueryAsync <int>(
                    $"SELECT COUNT(*) FROM IdentityContext.def_authorizations " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND Name like @nameValue " : ""),
                    new
                {
                    nameValue
                }
                    );

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                var result = await connection.QueryAsync <dynamic>(
                    $@"SELECT * FROM ( " +
                    $"SELECT ROW_NUMBER() OVER ( ORDER BY Name ) AS RowNum, * FROM IdentityContext.def_authorizations " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name like @nameValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    nameValue,
                    startRow,
                    endRow
                }
                    );

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = result.AsList().Select(r => MapAuthResult(r)).ToList(),
                    Page = query
                });
            }
        }
Пример #2
0
        /// <summary>
        /// Retrieve roles list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged roles data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                var description      = sqlFilters.FirstOrDefault(i => i.Name == "description")?.Value;
                var descriptionValue = string.IsNullOrEmpty(description) ? string.Empty : $"%{description}%";

                var count = await connection.QueryAsync <int>(
                    "SELECT COUNT(*) FROM IdentityContext.roles " +
                    ((!string.IsNullOrEmpty(descriptionValue)) ? "WHERE Description LIKE @descriptionValue " : ""),
                    new
                {
                    descriptionValue
                }
                    );

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                var queryResult = await connection.QueryAsync <dynamic>(
                    "SELECT * FROM ( " +
                    "SELECT ROW_NUMBER() OVER ( ORDER BY Description ) AS RowNum, * FROM IdentityContext.roles " +
                    ((!string.IsNullOrEmpty(descriptionValue)) ? "WHERE Description LIKE @descriptionValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    descriptionValue,
                    startRow,
                    endRow
                });

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = queryResult.AsList().Select(item => MapRoleObject(item)).ToList(),
                    Page = query
                });
            }
        }
Пример #3
0
        /// <summary>
        /// Retrieve users list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged users data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                // Configuring filters with wildcards to match substrings also
                var name      = sqlFilters.FirstOrDefault(i => i.Name == "name")?.Value;
                var nameValue = string.IsNullOrEmpty(name) ? string.Empty : $"%{name}%";

                var surname      = sqlFilters.FirstOrDefault(i => i.Name == "surname")?.Value;
                var surnameValue = string.IsNullOrEmpty(surname) ? string.Empty : $"%{surname}%";

                var username      = sqlFilters.FirstOrDefault(i => i.Name == "username")?.Value;
                var usernameValue = string.IsNullOrEmpty(username) ? string.Empty : $"%{username}%";

                var email      = sqlFilters.FirstOrDefault(i => i.Name == "email")?.Value;
                var emailValue = string.IsNullOrEmpty(email) ? string.Empty : $"%{email}%";

                // Get the total rows count
                var count = await connection.QueryAsync <int>(
                    "SELECT COUNT(*) FROM IdentityContext.users WHERE Root = 0 AND Disabled = 0 " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name LIKE @nameValue " : "") +
                    ((!string.IsNullOrEmpty(surnameValue)) ? "AND surname LIKE @surnameValue " : "") +
                    ((!string.IsNullOrEmpty(usernameValue)) ? "AND username LIKE @usernameValue " : "") +
                    ((!string.IsNullOrEmpty(emailValue)) ? "AND email LIKE @emailValue " : ""),
                    new
                {
                    nameValue,
                    surnameValue,
                    usernameValue,
                    emailValue,
                });

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                // Get the paged users data
                var queryResult = await connection.QueryAsync <dynamic>(
                    "SELECT * FROM ( " +
                    "SELECT ROW_NUMBER() OVER ( ORDER BY Email ) AS RowNum, * FROM IdentityContext.users WHERE Root = 0 AND Disabled = 0 " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name LIKE @nameValue " : "") +
                    ((!string.IsNullOrEmpty(surnameValue)) ? "AND surname LIKE @surnameValue " : "") +
                    ((!string.IsNullOrEmpty(usernameValue)) ? "AND username LIKE @usernameValue " : "") +
                    ((!string.IsNullOrEmpty(emailValue)) ? "AND email LIKE @emailValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    nameValue,
                    surnameValue,
                    usernameValue,
                    emailValue,
                    startRow,
                    endRow
                });

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = queryResult.AsList().Select(item => MapUserObject(item)).ToList(),
                    Page = query
                });
            }
        }