Beispiel #1
0
        public IEnumerable <TModel> GetTest <TModel>(QDescriptor descriptor)
        {
            using (var client = new HttpClient())
            {
                var dateTimeConverter = new IsoDateTimeConverter();
                // Default for IsoDateTimeConverter is yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK
                dateTimeConverter.DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm";

                var settings = new JsonSerializerSettings();
                settings.Converters = new List <JsonConverter> {
                    dateTimeConverter
                };

                var json    = JsonConvert.SerializeObject(descriptor, settings);
                var content = new StringContent(json, Encoding.UTF8, "application/json");
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                using (
                    Task <HttpResponseMessage> response =
                        client.PostAsync(new Uri("http://localhost/Example.WebApi/api/crm/customer"), content))
                {
                    if (response.Result.IsSuccessStatusCode)
                    {
                        string jsonContent = response.GetAwaiter().GetResult().Content.ReadAsStringAsync().Result;

                        return(JsonConvert.DeserializeObject <IEnumerable <TModel> >(jsonContent));
                    }

                    return(null);
                }
            }

            return(null);
        }
Beispiel #2
0
        public HttpResponseMessage PostContact([FromBody] QDescriptor param)
        {
            var repository = (CrmModel)CrmModel.GetInstance();
            var result     = repository.Find <ContactDto>(param);

            return(this.Request.CreateResponse(HttpStatusCode.OK, result));
        }
Beispiel #3
0
        public object Find(QDescriptor node, IQueryable query)
        {
            var provider        = new ExpressionProvider(this.mapperConfiguration, query.Expression);
            var epressionResult = provider.ConvertToExpression(node);

            var data = query.Provider.CreateQuery(epressionResult.Expression);

            if (epressionResult.HasProjection)
            {
                List <object> result     = new List <object>();
                IEnumerator   enumerator = data.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    result.Add(enumerator.Current);
                }
                return(result);
            }
            var target = this.mapperConfiguration.GetAllTypeMaps()
                         .FirstOrDefault(x => x.SourceType == query.ElementType)
                         .DestinationType;
            var listType   = typeof(IEnumerable <>);
            var sourceType = listType.MakeGenericType(query.ElementType);
            var targetType = listType.MakeGenericType(target);

            return(this.mapperConfiguration.CreateMapper().Map(data, sourceType, targetType));
        }
Beispiel #4
0
        public HttpResponseMessage PostCustomer([FromBody] QDescriptor param)
        {
            var model  = CrmModel.GetInstance();
            var result = model.Find <CustomerDto>(param);

            return(this.Request.CreateResponse(HttpStatusCode.OK, result));
        }
Beispiel #5
0
 public Result ConvertToExpression(QDescriptor descriptor)
 {
     descriptor.Root.Accept(this.converter);
     return(new Result()
     {
         Expression = this.converter.ContextExpression.Pop(),
         HasProjection = this.converter.HasProjection
     });
 }
Beispiel #6
0
        public object Find <TM>(QDescriptor param)
            where TM : IModelEntity
        {
            using (var ctx = new CrmDataModel())
            {
                var typeMap =
                    this.Mapping.GetAllTypeMaps()
                    .FirstOrDefault(x => x.DestinationType == typeof(TM));


                var query  = ctx.Set(typeMap.SourceType).AsQueryable();
                var repo   = new Model(this.Mapping, ctx.Set <DB.User>());
                var result = repo.Find(param, query);
                return(result);
            }
        }
Beispiel #7
0
        public IEnumerable <TP> GetProjection <TP>(Uri accsessPoint, QDescriptor descriptor) where TP : IProjection
        {
            var json    = JsonConvert.SerializeObject(descriptor, Settings);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            Task <HttpResponseMessage> response =
                Client.PostAsync(accsessPoint, content);

            if (response.Result.IsSuccessStatusCode)
            {
                string jsonContent = response.GetAwaiter().GetResult().Content.ReadAsStringAsync().Result;

                return(JsonConvert.DeserializeObject <IEnumerable <TP> >(jsonContent));
            }

            return(null);
        }
Beispiel #8
0
        public void Get(Uri accsessPoint, QDescriptor descriptor, Type returnType, object result)
        {
            var json    = JsonConvert.SerializeObject(descriptor, Settings);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            Task <HttpResponseMessage> response =
                Client.PostAsync(accsessPoint, content);

            if (response.Result.IsSuccessStatusCode)
            {
                string jsonContent = response.GetAwaiter().GetResult().Content.ReadAsStringAsync().Result;

                var listType   = typeof(IEnumerable <>);
                var targetType = listType.MakeGenericType(returnType);
                var res        = JsonConvert.DeserializeObject(jsonContent, targetType);
                var methodInfo = result.GetType().GetTypeInfo().GetMethod("AddRange");
                methodInfo.Invoke(result, new object[] { res });
            }
        }