public HttpResponseMessage Page(UsersPageParams parameters)
        {
            PageResult result = null;

            ExecuteInSession(session =>
            {
                IList <User> data = GetPageCriteriaByParams(session, parameters)
                                    .SetFirstResult((parameters.Page - 1) * parameters.PageSize)
                                    .SetMaxResults(parameters.PageSize)
                                    .List <User>();

                result = new PageResult()
                {
                    Total = GetPageCriteriaByParams(session, parameters).SetProjection(Projections.Count(Projections.Id())).UniqueResult <int>(),
                    Data  = ModelMapper.Map <IEnumerable <User>, IEnumerable <UserDto> >(data)
                };
            });

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
 private ICriteria GetPageCriteriaByParams(ISession session, UsersPageParams parameters)
 {
     return(session.CreateCriteria <User>());
 }