Exemplo n.º 1
0
        public decimal GetAnonNumericDimension(int IdProduct, int IdDimension)
        {
            //obtiene al producto
            var product = productsRepository.GetProduct(IdProduct);

            if (product == null)
            {
                throw new Contract.Exceptions.ProductsNotFoundException("No se encontró un producto con el id " + IdProduct, null);
            }

            //validar existencia de dimension buscada
            Repository.EntityFramework.Dimensions dimension = dimensionsRepository.GetDimension(IdDimension);
            if (dimension == null)
            {
                throw new Contract.Exceptions.ProductDimensionNotFoundException("La dimensión (" + IdDimension + ") no existe para este producto", null);
            }

            //ahora va a buscar el perfil anonimo por defecto del producto
            var profile = profilesRepository.GetProfileByAnon(IdProduct);

            var profiledimension = profile.ProfilesDimensions.FirstOrDefault(e => e.IdDimension == IdDimension);

            //validar existencia de dimension del perfil anonimo buscada
            if (profiledimension == null)
            {
                throw new Contract.Exceptions.ProfileDimensionAnonNoConfiguredException("El producto (" + IdProduct + ") no tiene configurado ninguna relacion para usuario ANONIMO con la dimension (" + IdDimension + ")", null);
            }

            if (profiledimension.Value == null)
            {
                throw new Contract.Exceptions.ProfileDimensionAnonNoConfiguredException("La profiledimension(" + profiledimension.IdProfileDimension + ") no tiene ningún valor SWITCH por defecto", null);
            }

            //ahora va a buscar la dimension y su valor por defecto para ese perfil
            return((decimal)profiledimension.Value);
        }