/// <summary>
        /// On Validate List Request / Used for Custom Validation or Tweaking of Parameters
        /// </summary>
        /// <typeparam name="T">Entity Type</typeparam>
        /// <typeparam name="R">Request Type</typeparam>
        /// <param name="request">Request</param>
        /// <returns>Response</returns>
        public override R OnValidateListRequest <T, R>(BaseServiceListRequest request)
        {
            SecurityUserMaintenanceListRequest listRequest = request as SecurityUserMaintenanceListRequest;

            if (string.IsNullOrEmpty(listRequest.OrderBy) == true)
            {
                listRequest.OrderBy = "UserName";
            }

            return(null);
        }
        /// <summary>
        /// Apply List Filter - Applies the Filters from the Request to the Query
        /// </summary>
        /// <typeparam name="T">Entity Type</typeparam>
        /// <param name="request">Request Type</param>
        /// <param name="query">Query</param>
        /// <returns>Updated Query</returns>
        public override IQueryable <T> ApplyListFilter <T>(BaseServiceListRequest request, IQueryable <T> query)
        {
            SecurityUserMaintenanceListRequest listRequest = request as SecurityUserMaintenanceListRequest;
            var listQuery = (IQueryable <VWSecurityUser>)query;

            // apply filters to the IQueryable
            if (!String.IsNullOrEmpty(listRequest.UserName))
            {
                listQuery = listQuery.Where(p => p.UserName.Contains(listRequest.UserName));
            }
            if (!String.IsNullOrEmpty(listRequest.LastName))
            {
                listQuery = listQuery.Where(p => p.LastName.Contains(listRequest.LastName));
            }
            if (!String.IsNullOrEmpty(listRequest.FirstName))
            {
                listQuery = listQuery.Where(p => p.FirstName.Contains(listRequest.FirstName));
            }
            if (listRequest.SecurityRoleIds != null && listRequest.SecurityRoleIds.Any())
            {
                listQuery = listQuery.Where(p => p.RoleMemberships.Any(s => listRequest.SecurityRoleIds.Contains(s.SecurityRoleId)));
            }
            if (listRequest.SystemAdmin != null && listRequest.SystemAdmin.Value)
            {
                listQuery = listQuery.Where(p => p.SystemAdmin == true);
            }
            if (listRequest.Active != null && listRequest.Active.Value)
            {
                listQuery = listQuery.Where(p => p.Active == true);
            }
            if (listRequest.LastLoginDateStart != null)
            {
                listQuery = listQuery.Where(p => p.LastLoginDate >= listRequest.LastLoginDateStart);
            }
            if (listRequest.LastLoginDateEnd != null)
            {
                //Add 1 day to the end date and subtract a millisecond so we get all users who logged in on the end date
                var endDate = listRequest.LastLoginDateEnd.Value.AddDays(1).AddMilliseconds(-1);
                listQuery = listQuery.Where(p => p.LastLoginDate <= endDate);
            }

            return((IQueryable <T>)listQuery);
        }