public PageModelData GetPageModelData(int pageId, Localization localization, bool addIncludes)
        {
            try
            {
                PageModelRequest request = new PageModelRequest
                {
                    CmUriScheme   = localization.CmUriScheme,
                    PublicationId = int.Parse(localization.Id),
                    PageId        = pageId,
                    PageInclusion = addIncludes ? PageInclusion.INCLUDE : PageInclusion.EXCLUDE,
                    Binder        = _binder
                };

                ModelServiceResponse <PageModelData> response = _modelServiceClient.PerformRequest <PageModelData>(request);
                if (response.Response != null)
                {
                    response.Response.SerializationHashCode = response.Hashcode;
                }
                return(response.Response);
            }
            catch (ModelServiceException e)
            {
                Log.Error("{0} returned an unexpected response for URL '{1}':\n{2} ", ModelServiceName, _modelServiceClient.ModelServiceBaseUri,
                          e.Message);
                throw new DxaException($"{ModelServiceName} returned an unexpected response.", e);
            }
            catch (ItemNotFoundException)
            {
                return(null);
            }
        }
        /// <summary>
        /// Obtiene un listado paginado segun el filtro aplicado
        /// </summary>
        /// <param name="filterPage">filter page model</param>
        /// <param name="transaction">transaccion sql</param>
        /// <returns>PagineModel</returns>
        public PagineModel <TModel> GetPageList(PageModelRequest filterPage, IDbTransaction transaction = null)
        {
            try
            {
                var model = new PagineModel <TModel>();

                var pageModel = Connection.GetListPaged <TModel>(pageNumber: filterPage.PageNumber, rowsPerPage: filterPage.RowsPerPage, conditions: filterPage.Conditions, orderby: filterPage.OrderBy, parameters: filterPage.Parameters, transaction: transaction);
                model.Data           = pageModel.ToList() ?? new List <TModel>();
                model.PageNumber     = filterPage.PageNumber;
                model.RecordsPerPage = filterPage.RowsPerPage;
                model.TotalRecords   = Count(conditions: filterPage.Conditions, parameters: filterPage.Parameters, transaction: transaction);

                return(model);
            }
            catch (Exception ex)
            {
                throw new DataErrorException("Error in GetPageList", ex);
            }
        }
        /// <summary>
        /// Gets the raw string (xml) from the broker db by URL
        /// </summary>
        /// <param name="Url">URL of the page</param>
        /// <returns>String with page xml or empty string if no page was found</returns>
        public string GetContentByUrl(string url)
        {
            LoggerService.Debug(">>DD4T.Providers.DxaModelService::GetContentByUrl({0})", LoggingCategory.Performance, url);
            string           content = null;
            PageModelRequest req     = new PageModelRequest
            {
                PublicationId = PublicationId,
                DataModelType = DataModelType.DD4T,
                PageInclusion = PageInclusion.INCLUDE,
                Path          = url
            };

            try
            {
                content = ModelServiceClient.PerformRequest(req).Response;
            }
            catch
            {
            }
            //  LoggerService.Debug(">>DD4T.Providers.DxaModelService::GetContentByUrl({0}) returns {1}", LoggingCategory.Performance, url, content);
            return(content);
        }
        /// <summary>
        /// Gets the raw string (xml) from the broker db by URI
        /// </summary>
        /// <param name="Url">TCM URI of the page</param>
        /// <returns>String with page xml or empty string if no page was found</returns>
        public string GetContentByUri(string tcmUri)
        {
            LoggerService.Debug(">>DD4T.Providers.DxaModelService::GetContentByUri({0})", LoggingCategory.Performance, tcmUri);
            string           content     = null;
            TcmUri           tcm         = new TcmUri(tcmUri);
            PageMetaFactory  metaFactory = GetPageMetaFactory(tcm.PublicationId);
            PageModelRequest req         = new PageModelRequest
            {
                PublicationId = tcm.PublicationId,
                DataModelType = DataModelType.DD4T,
                PageInclusion = PageInclusion.INCLUDE,
                Path          = metaFactory.GetMeta(tcm.ItemId).UrlPath
            };

            try
            {
                content = ModelServiceClient.PerformRequest(req).Response;
            }
            catch
            {
            }
            //  LoggerService.Debug(">>DD4T.Providers.DxaModelService::GetContentByUrl({0}) returns {1}", LoggingCategory.Performance, tcmUri, content);
            return(content);
        }