public CompetencyUser GetCompetencyUserByUserId(string userId)
        {
            CompetencyUser User = new CompetencyUser();

            DataProvider.ExecuteCmd(GetConnection, "dbo.Competency_Users_SelectByUserId"
                                    , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@UserId", userId);
            }, map : delegate(IDataReader reader, short set)
            {
                int startingIndex = 0;

                User.competencyUserId = reader.GetSafeInt32(startingIndex++);
                User.Id           = reader.GetSafeString(startingIndex++);
                User.FirstName    = reader.GetSafeString(startingIndex++);
                User.LastName     = reader.GetSafeString(startingIndex++);
                User.CompetencyId = reader.GetSafeInt32(startingIndex++);
                User.Status       = reader.GetSafeString(startingIndex++);
                User.Notes        = reader.GetSafeString(startingIndex++);
                User.ActivityType = reader.GetSafeString(startingIndex++);
                User.Attachments  = reader.GetSafeString(startingIndex++);
            });

            return(User);
        }
        //get all competency users. this is used to populate the index page.
        //some dir-paginate calls in here that do not work yet.
        public PaginateItemsResponse <CompetencyUser> GetCompetencyUsers()
        {
            PaginatedRequest      model    = new PaginatedRequest();
            List <CompetencyUser> userList = null;
            PaginateItemsResponse <CompetencyUser> response = null;

            DataProvider.ExecuteCmd(GetConnection, "dbo.Competency_Users_SelectAll"
                                    , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@CurrentPage", model.CurrentPage);
                paramCollection.AddWithValue("@ItemsPerPage", model.ItemsPerPage);
                paramCollection.AddWithValue("@Query", model.Query);
            }, map : delegate(IDataReader reader, short set)
            {
                if (set == 0)
                {
                    CompetencyUser CompetencyUser = new CompetencyUser();
                    int startingIndex             = 0;

                    CompetencyUser.Id               = reader.GetSafeString(startingIndex++);
                    CompetencyUser.FirstName        = reader.GetSafeString(startingIndex++);
                    CompetencyUser.LastName         = reader.GetSafeString(startingIndex++);
                    CompetencyUser.CompetencyId     = reader.GetSafeInt32(startingIndex++);
                    CompetencyUser.CompetencyName   = reader.GetSafeString(startingIndex++);
                    CompetencyUser.Email            = reader.GetSafeString(startingIndex++);
                    CompetencyUser.AuthorizedBy     = reader.GetSafeString(startingIndex++);
                    CompetencyUser.CreatedDate      = reader.GetDateTime(startingIndex++);
                    CompetencyUser.Status           = reader.GetSafeString(startingIndex++);
                    CompetencyUser.ActivityType     = reader.GetSafeString(startingIndex++);
                    CompetencyUser.Notes            = reader.GetSafeString(startingIndex++);
                    CompetencyUser.Attachments      = reader.GetSafeString(startingIndex++);
                    CompetencyUser.competencyUserId = reader.GetSafeInt32(startingIndex++);


                    if (userList == null)
                    {
                        userList = new List <CompetencyUser>();
                    }
                    userList.Add(CompetencyUser);
                }
                else if (set == 1)
                {
                    response = new PaginateItemsResponse <CompetencyUser>();

                    response.TotalItems = reader.GetSafeInt32(0);
                }
            }

                                    );
            response.Items        = userList;
            response.CurrentPage  = model.CurrentPage;
            response.ItemsPerPage = model.ItemsPerPage;
            return(response);
        }