Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 /// <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));
 }
Esempio n. 3
0
        } // 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);
        }
Esempio n. 4
0
        //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);
        }
Esempio n. 5
0
 //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);
        }