// code generated from template "ServiceGetPaged.tt" /// <summary> /// Recupera una lista paginada de entidades Persona, según la especificación indicada. /// </summary> /// <param name="specificationDto"> /// Especificación que se va a aplicar. /// </param> /// <returns> /// La lista paginada de entidades 'Persona', según la especificación indicada. /// </returns> public PagedElements <PersonaDto> GetPaged(SpecificationDto specificationDto) { #region Preconditions // Comprobar el DTO de entrada. Guard.ArgumentIsNotNull( specificationDto, string.Format( FrameworkResource.EspecificationDataTransferObjectIsNull, "Persona")); #endregion List <PersonaDto> result = new List <PersonaDto>(0); int totalElements = 0; try { // Creamos el repositorio de la entidad. IPersonaRepository repo = ApplicationLayer.IocContainer.Resolve <IPersonaRepository>(); // Obtenemos las entidades aplicando la especificación. ISpecification <Persona> filter = specificationDto.ToSpecification <Persona>(); PagedElements <Persona> entities = repo.GetPagedElements( specificationDto.PageIndex, specificationDto.PageSize, filter.IsSatisfiedBy(), entity => entity.Id, true); totalElements = entities.TotalElements; // Mapeamos los datos. entities.ToList() .ForEach(entity => { var entityDto = this.personaMapper.EntityMapping(entity); result.Add(entityDto); }); // Confirmamos la transacción. this.Commit(); } catch (Exception ex) { throw ex; } // Devolver el resultado. return(new PagedElements <PersonaDto>(result, totalElements)); }