public Stream SearchWithGenericSpecification(string domainObject, string limit, string offset, string order, string count, Stream body)
        {
            var doType = Utility.CheckDomainObject(DomainModel, domainObject);
            var spec   = Serialization.ParseGenericSpecification(doType, body);

            return(Search(doType, limit, offset, order, spec, count));
        }
        public Stream SearchTemplaterWithGenericSpecification(string file, string domainObject, Stream body)
        {
            var type = Utility.CheckDomainObject(DomainModel, domainObject);
            var spec = Serialization.ParseGenericSpecification(type, body);

            return(SearchTemplater(file, domainObject, spec));
        }
        public Task SearchTemplaterWithGenericSpecification(string file, string domainObject, HttpContext context)
        {
            var type = Utility.CheckDomainObject(DomainModel, domainObject, context.Response);
            var spec = Serialization.ParseGenericSpecification(type, context);

            return(SearchTemplater(file, domainObject, spec, context));
        }
        public Stream OlapCubeWithGenericSpecification(
            string cube,
            string templater,
            string dimensions,
            string facts,
            string order,
            string limit,
            string offset,
            Stream body)
        {
            var ci = Utility.CheckCube(DomainModel, cube);

            if (ci.IsFailure)
            {
                return(ci.Error);
            }
            var spec = Serialization.ParseGenericSpecification(ci.Result.Value, body);

            return(OlapCube(ci.Result.Key, templater, dimensions, facts, order, spec, limit, offset));
        }
        public void OlapCubeWithGenericSpecification(
            string cube,
            [FromQuery(Name = "dimensions")] string dimensions = null,
            [FromQuery(Name = "facts")] string facts           = null,
            [FromQuery(Name = "order")] string order           = null,
            [FromQuery(Name = "limit")] int?limit   = null,
            [FromQuery(Name = "offset")] int?offset = null)
        {
            var cubeType = Utility.CheckDomainObject(DomainModel, cube, HttpContext.Response);
            var spec     = Serialization.ParseGenericSpecification(cubeType, HttpContext);

            OlapCube(cubeType, dimensions, facts, order, limit, offset, spec, HttpContext);
        }
        public void ExistsGeneric(string domainObject)
        {
            var doType = Utility.CheckDomainObject(DomainModel, domainObject, HttpContext.Response);
            var spec   = Serialization.ParseGenericSpecification(doType, HttpContext);

            if (spec.IsFailure)
            {
                return;
            }

            Converter.PassThrough <DomainObjectExists, DomainObjectExists.Argument <object> >(
                HttpContext,
                new DomainObjectExists.Argument <object>
            {
                Name = doType.Result.FullName,
                SpecificationName = null,
                Specification     = spec.Result,
            });
        }