public static ISpecification <TEntity> ToSpecification <TEntity>(this SpecificationDto specificationDto, Inflexion2.Domain.Specification.ISpecification <TEntity> specification) where TEntity : class { foreach (Filter rule in specificationDto.CompositeFilter.Filters) { if (rule.Value != "") { if (specification == null) { specification = Inflexion2.Extensions.SpecificationsLinqExtensions.CreateSpecification <TEntity>(rule.Property, rule.Value, rule.Operator); } else { if (specificationDto.CompositeFilter.LogicalOperator == CompositeFilterLogicalOperator.And) { specification = specification.AndAlso(rule.Property, rule.Value, rule.Operator); } else { specification = specification.OrElse(rule.Property, rule.Value, rule.Operator); } } } } if (specification == null) { specification = new TrueSpecification <TEntity>(); } return(specification); }
/// <summary> /// Convierte el dto de especification a una especification /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="specificationDto"></param> /// <returns></returns> public static ISpecification <TEntity> ToSpecification <TEntity>(this SpecificationDto specificationDto) where TEntity : class { return(specificationDto.ToSpecification <TEntity>(null)); }
} // GetById /// <summary> /// Recupera una lista paginada de entidades Categoria, según la especificación indicada. /// </summary> /// <param name="specificationDto"> /// Especificación que se va a aplicar. /// </param> /// <returns> /// La lista paginada de entidades Categoria, según la especificación indicada. /// </returns> public PagedElements<CategoriaDto> GetPaged(SpecificationDto specificationDto) { return this.service.GetPaged(specificationDto); }
//PagedElements<Entity1Dto> GetPaged(SpecificationDto specificationDto, UserContextDto userContextDto); public PagedElements<EntityBDto> GetPaged(SpecificationDto specificationDto) { #region Preconditions // Comprobar el DTO de entrada. Guard.ArgumentIsNotNull( specificationDto, string.Format( Inflexion2.Resources.Framework.EspecificationDataTransferObjectIsNull, "Entity B")); //// usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.EntityBAlias #endregion List<EntityBDto> result = new List<EntityBDto>(0); int totalElements = 0; try { // Creamos el repositorio de la entidad. IEntityBRepository repo = this.unityContainer.Resolve<IEntityBRepository>(); // Obtenemos las entidades aplicando la especificación. ISpecification<EntityB> filter = specificationDto.ToSpecification<EntityB>(); PagedElements<EntityB> 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.EntityBMapper.EntityMapping(entity); result.Add(entityDto); }); // Confirmamos la transacción. this.Commit(); } catch (Exception ex) { // Escribir en el Log. //logger.Error(ex.Message, ex); throw ex; } // Devolver el resultado. return new PagedElements<EntityBDto>(result, totalElements); }
//PagedElements<Entity1Dto> GetPaged(SpecificationDto specificationDto, UserContextDto userContextDto); public PagedElements<EntityADto> GetPaged(SpecificationDto specificationDto) { throw new System.NotImplementedException(); }
} // GetById public PagedElements<EntityBDto> GetPaged(SpecificationDto specificationDto) { return this.service.GetPaged(specificationDto); }