// GET api/<controller>
        public List<UserRole> Get()
        {
            UserRoleManager roleManager = new UserRoleManager();
            int roleId  =roleManager.GetRoleID();

            //string query = "select * from roles;";
            //DataSet aDataSet = aGateway.Select(query);
            //List<UserRole> userRoles = new List<UserRole>();
            //foreach (DataRow dataRow in aDataSet.Tables[0].Rows)
            //{
            //    UserRole aUserRole = new UserRole();
            //    aUserRole.Id = Convert.ToInt32(dataRow["ID"].ToString());
            //    aUserRole.RoleName = dataRow["RoleName"].ToString();
            //    aUserRole.ParentRoleName = dataRow["ParentRoleName"].ToString();
            //    userRoles.Add(aUserRole);
            //}

            List<UserRole> userRolesFinal = roleManager.GetRoleLevels(roleId);

            return userRolesFinal;
        }
        // [ApiAuthorize]
        // GET api/customers
        public PagedResult<UserInfo> Get(int pageNo = 1, int pageSize = 50, [FromUri] string[] sort = null, string search = null)
        {
            TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
            // search = textInfo.ToTitleCase(search);
            // Determine the number of records to skip
            int skip = (pageNo - 1) * pageSize;
            UserRoleManager aRoleManager=new UserRoleManager();
            int roleId=aRoleManager.GetRoleID();
            List<UserRole> rolesList=new List<UserRole>();
            rolesList=aRoleManager.GetRoleLevels(roleId);
            string inClause =string.Empty;
            int i =1;
            int j = rolesList.Count;
            foreach (UserRole aRole in rolesList)
            {
                if (i < j)
                {
                    inClause += aRole.Id + ",";
                }
                else { inClause += aRole.Id; }
                i++;
            }

            string query = "SELECT * FROM `userInfo` LIMIT 1000;";
            string query1 = "select * from userInfo where userID in (select id from users where userroleid in ("+inClause+"))";
            DataSet aSet = aGateway.Select(query1);
            //IQueryable<Customer> queryable;
            List<UserInfo> aUsersList = new List<UserInfo>();
            //UserInfo aUserInfo = new UserInfo();
            foreach (DataRow dataRow in aSet.Tables[0].Rows)
            {

                UserInfo aUserInfo = new UserInfo();
                aUserInfo.Id = Convert.ToInt32(dataRow["ID"].ToString());
                aUserInfo.UserId = Convert.ToInt32(dataRow["UserID"].ToString());
                aUserInfo.UserName = dataRow["UserName"].ToString();
                aUserInfo.FullName = dataRow["FullName"].ToString();
                aUserInfo.FatherName = dataRow["FatherName"].ToString();
                aUserInfo.MotherName = dataRow["MotherName"].ToString();
                aUserInfo.PhoneNumber = dataRow["CellNumber"].ToString();
                aUserInfo.BirthDate = (DateTime)dataRow["BirthDay"];
                aUserInfo.CurrentAddress = dataRow["CurrentAddress"].ToString();
                aUserInfo.PermanentAddress = dataRow["PermanentAddress"].ToString();
                aUserInfo.BirthCertificateID = dataRow["BirthCertificateID"].ToString();

                aUsersList.Add(aUserInfo);

            }
            IQueryable<UserInfo> queryable = aUsersList.AsQueryable();

            // Apply the search
            if (!String.IsNullOrEmpty(search))
            {
                string[] searchElements = search.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string searchElement in searchElements)
                {
                    string element = searchElement;
                    queryable = queryable.Where(c => c.UserName.ToLower().Contains(element.ToLower()) || c.FullName.ToLower().Contains(element.ToLower()) || c.FatherName.ToLower().Contains(element.ToLower()) || c.MotherName.ToLower().Contains(element.ToLower()) || c.PhoneNumber.ToLower().Contains(element.ToLower()));
                }
                pageNo = 1;
            }

            // Add the sorting
            if (sort != null)
            {
                queryable = queryable.ApplySorting(sort);
                pageNo = 1;
            }
            else
                queryable = queryable.OrderBy(c => c.Id);
            List<UserInfo> aList = new List<UserInfo>();
            // Get the total number of records
            int totalItemCount = queryable.Count();
            var users = aList;
            // Retrieve the customers for the specified page
            if (String.IsNullOrEmpty(search))
            {
                users = queryable
                    .Skip(skip)
                    .Take(pageSize)
                    .ToList();
            }
            else
            {
                users = queryable
                    //.Skip(0)
                    //.Take(pageSize)
                .ToList();
                if (users.Count >= skip)
                {
                    users = users.Skip(skip).Take(pageSize).ToList();
                }
                else { users = users.Skip(0).Take(pageSize).ToList(); }

            }

            // Return the paged results
            return new PagedResult<UserInfo>(users, pageNo, pageSize, totalItemCount);
        }