Beispiel #1
0
 public Address(string name, string street, int number, KeyValueEntity country)
 {
     Name    = name;
     Street  = street;
     Number  = number;
     Country = country;
 }
 public KeyValueModel(KeyValueEntity entry)
 {
     Key                = entry.RowKey;
     ETag               = entry.ETag;
     Value              = entry.Value;
     Override           = entry.Override;
     IsDuplicated       = entry.IsDuplicated;
     UseNotTaggedValue  = entry.UseNotTaggedValue;
     IsUsedInRepository = entry.RepositoryNames != null && entry.RepositoryNames.Length > 0;
     Types              = entry.Types;
     RepositoryNames    = entry.RepositoryNames;
     Tag                = entry.Tag;
     EmptyValueType     = entry.EmptyValueType;
     HasFullAccess      = entry.HasFullAccess;
     IsJsonType         = entry?.Types != null && (entry.Types.Contains(KeyValueTypes.Json) || entry.Types.Contains(KeyValueTypes.JsonArray));
     MustGenerateValue  = entry?.Types != null && entry.Types.Any(t => _mustBeGeneratedTypes.Contains(t));
 }
Beispiel #3
0
        private List <KeyValuePair <Guid, object> > GetTopFields(string topEntityName, string topEntityReferenceIdName, string resultFieldName)
        {
            XDocument xDocument = new XDocument
                                  (
                new XElement("fetch",
                             new XElement("entity", new XAttribute("name", topEntityName),
                                          new XElement("attribute", new XAttribute("name", topEntityReferenceIdName), new XAttribute("alias", "key")),
                                          new XElement("attribute", new XAttribute("name", resultFieldName), new XAttribute("alias", "value"))
                                          )
                             )
                                  );


            List <KeyValuePair <Guid, object> > resultById = KeyValueEntity <Guid, object> .GetAll(_dynamicsCrmConnection, xDocument, topEntityName, topEntityReferenceIdName);

            return(resultById);
        }
        /// <summary>
        /// 数据格式:1|男;2|女
        /// </summary>
        /// <param name="comboData"></param>
        /// <returns></returns>
        public static IList <KeyValueEntity> TranslateData(string comboData, char firstSplitChar, char secondSplitChar)
        {
            string[] arr = comboData.Split(firstSplitChar);

            //JArray jarr = new JArray();
            List <KeyValueEntity> list = new List <KeyValueEntity>();

            foreach (string item in arr)
            {
                string[]       strArr = item.Split(secondSplitChar);
                KeyValueEntity entity = new KeyValueEntity();
                entity.code = strArr[0];
                entity.name = strArr[1];

                list.Add(entity);
            }

            return(list);
            //return JsonConvert.SerializeObject(list);
        }
Beispiel #5
0
 public HttpResponseMessage SetEntity([FromBody] KeyValueEntity item)
 {
     try
     {
         var  db     = new RedisOperation(_RedisDB);
         bool result = db.Insert(item.Key, item.Value);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = result ? ResponseCode.Success : ResponseCode.Fail,
             Message = result ? "success" : "fail"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Beispiel #6
0
        /// <summary>
        /// REST @POST 方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="methodURL"></param>
        /// <param name="jsonBody"></param>
        /// <returns></returns>
        public static T doPostWidthDict <T>(string methodURL, Dictionary <string, object> jsonBody)
        {
            List <KeyValueEntity> keyValueList = new List <KeyValueEntity>();

            foreach (KeyValuePair <string, object> item in jsonBody)
            {
                KeyValueEntity e1 = new KeyValueEntity()
                {
                    Key   = item.Key.ToString(),
                    Value = item.Value,
                };
                keyValueList.Add(e1);
            }
            string json = JsonConvert.SerializeObject(keyValueList);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
                string.Format(
                    "{0}{1}",
                    restFulServer_URL,
                    methodURL));

            request.Method      = "POST";
            request.ContentType = "application/json;charset=UTF-8";

            var stream = request.GetRequestStream();

            using (var writer = new StreamWriter(stream))
            {
                writer.Write(json);
                writer.Flush();
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string          resJson  = getResponseString(response);

            return(JsonConvert.DeserializeObject <T>(resJson));
        }
Beispiel #7
0
        public static T doPostWidthClass <T>(string methodURL, object jsonBody)
        {
            List <KeyValueEntity> keyValueList = new List <KeyValueEntity>();

            foreach (PropertyInfo pi in jsonBody.GetType().GetProperties())
            {
                KeyValueEntity e1 = new KeyValueEntity()
                {
                    Key   = pi.Name,
                    Value = pi.GetValue(jsonBody, null).ToString(),
                };
                keyValueList.Add(e1);
            }

            string         json    = JsonConvert.SerializeObject(keyValueList);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
                string.Format(
                    "{0}{1}",
                    restFulServer_URL,
                    methodURL));

            request.Method      = "POST";
            request.ContentType = "application/json;charset=UTF-8";

            var stream = request.GetRequestStream();

            using (var writer = new StreamWriter(stream))
            {
                writer.Write(json);
                writer.Flush();
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string          resJson  = getResponseString(response);

            return(JsonConvert.DeserializeObject <T>(resJson));
        }
Beispiel #8
0
        public async Task <ApiOverrideModel> Put([FromBody] KeyValueToUpdate entity)
        {
            try
            {
                var keyValues = await _keyValuesRepository.GetKeyValuesAsync();

                var keyValue = keyValues.FirstOrDefault(x => x.RowKey == entity.RowKey);
                if (keyValue == null)
                {
                    return(new ApiOverrideModel
                    {
                        Status = UpdateSettingsStatus.NotFound
                    });
                }

                var duplicatedKeys = keyValues.Where(x => x.RowKey != keyValue.RowKey && x.Value == entity.Value).ToList();
                if (entity.Forced == false && IS_PRODUCTION)
                {
                    if (duplicatedKeys.Count > 0)
                    {
                        return(new ApiOverrideModel
                        {
                            Status = UpdateSettingsStatus.HasDuplicated,
                            DuplicatedKeys = duplicatedKeys.Select(x => x.RowKey)
                        });
                    }
                }

                var keyValueEntity = new KeyValueEntity
                {
                    RowKey          = keyValue.RowKey,
                    Value           = entity.Value,
                    IsDuplicated    = duplicatedKeys.Count > 0,
                    Override        = keyValue.Override,
                    Types           = keyValue.Types,
                    RepositoryNames = keyValue.RepositoryNames,
                    EmptyValueType  = keyValue.EmptyValueType
                };
                var entitiesToUpload = new List <IKeyValueEntity>()
                {
                    keyValueEntity
                };

                if (duplicatedKeys.Any())
                {
                    var duplicationsToUpload = duplicatedKeys.Where(x => !x.IsDuplicated.HasValue || !x.IsDuplicated.Value);
                    duplicationsToUpload.ToList().ForEach(item =>
                    {
                        item.IsDuplicated = true;
                        entitiesToUpload.Add(item);
                    });
                }

                var oldDuplications = keyValues.Where(x => x.RowKey != keyValue.RowKey && x.Value == keyValue.Value);
                if (oldDuplications.Count() == 1)
                {
                    var oldDuplication = oldDuplications.First();
                    oldDuplication.IsDuplicated = false;
                    entitiesToUpload.Add(oldDuplication);
                }

                var result = await _keyValuesRepository.UpdateKeyValueAsync(entitiesToUpload);

                string strObj = JsonConvert.SerializeObject(keyValues);
                await _keyValueHistoryRepository.SaveKeyValueHistoryAsync(
                    keyValueEntity?.RowKey,
                    keyValueEntity?.Value,
                    strObj,
                    UserInfo.UserEmail,
                    UserInfo.Ip);

                var updatedKeyValues = await _keyValuesRepository.GetKeyValuesAsync();

                return(new ApiOverrideModel
                {
                    Status = result ? UpdateSettingsStatus.Ok : UpdateSettingsStatus.InternalError,
                    KeyValues = updatedKeyValues
                });
            }
            catch (Exception ex)
            {
                _log.Error(ex, context: entity);
                return(new ApiOverrideModel {
                    Status = UpdateSettingsStatus.InternalError
                });
            }
        }
        private async Task <List <KeyValueEntity> > InitKeyValuesAsync(
            IRepository repositoryEntity,
            IEnumerable <KeyValue> placeholders,
            string repositoryTag,
            string keyRepoName,
            bool isCreate)
        {
            var keyValues = new List <KeyValueEntity>();

            // save key values history
            foreach (var keyValue in placeholders)
            {
                if (!string.IsNullOrEmpty(repositoryTag))
                {
                    if (isCreate)
                    {
                        var baseKeyValueEntity = await _keyValuesRepository.GetKeyValueAsync(keyValue.RowKey);

                        if (baseKeyValueEntity?.RepositoryNames != null && baseKeyValueEntity.RepositoryNames.Contains(repositoryEntity?.OriginalName))
                        {
                            keyValue.UseNotTaggedValue = true;
                        }
                    }
                    else
                    {
                        keyValue.UseNotTaggedValue = false;
                    }

                    keyValue.RowKey = repositoryTag + "-" + keyValue.RowKey;
                    keyValue.Tag    = repositoryTag;
                }
                var keyValueEntity = await _keyValuesRepository.GetKeyValueAsync(keyValue.RowKey);

                if (keyValueEntity == null)
                {
                    keyValueEntity = new KeyValueEntity
                    {
                        RowKey          = keyValue.RowKey,
                        RepositoryNames = new[] { keyRepoName },
                        Value           = keyValue.Value,
                    };
                }
                else if (keyValueEntity.RepositoryNames == null)
                {
                    keyValueEntity.RepositoryNames = new[] { keyRepoName };
                }
                else if (keyValueEntity.RepositoryNames != null && !keyValueEntity.RepositoryNames.Contains(keyRepoName))
                {
                    var repositoryIds = keyValueEntity.RepositoryNames.ToList();
                    repositoryIds.Add(keyRepoName);
                    keyValueEntity.RepositoryNames = repositoryIds.ToArray();
                }

                keyValueEntity.Types        = keyValue.Types;
                keyValueEntity.RepositoryId = repositoryEntity.RowKey;
                keyValueEntity.Tag          = keyValue.Tag;
                if (!keyValueEntity.UseNotTaggedValue.HasValue)
                {
                    keyValueEntity.UseNotTaggedValue = keyValue.UseNotTaggedValue;
                }
                keyValues.Add(keyValueEntity as KeyValueEntity);
            }

            return(keyValues);
        }