private Dto GetPatchItemAsync(string[] keyNames, Dto dataChanged, Dto dataOriginal) { var patchItem = new Dto(); var hasChanges = false; foreach (var item in dataChanged) { hasChanges = false; if (dataOriginal.ContainsKey(item.Key) && dataChanged.ContainsKey(item.Key)) { if (dataOriginal[item.Key].GetType() == typeof(DateTime) && dataChanged[item.Key].GetType() == typeof(DateTime)) { hasChanges = ((DateTime)dataOriginal[item.Key]).Date != ((DateTime)dataChanged[item.Key]).Date; } else { hasChanges = hasChanges = (dataOriginal[item.Key] != dataChanged[item.Key]); } if (hasChanges && keyNames.Contains(item.Key)) { patchItem[item.Key] = dataChanged[item.Key]; } } } return(patchItem); }
public static Dto Extend(Dto target, Dto source, bool onlyExistingProperties = false) { foreach (var prop in source) { if (!(onlyExistingProperties && target.ContainsKey(prop.Key))) { target[prop.Key] = prop.Value; } } return(target); }
public static Dto GetKeyFromData(string[] keyNames, Dto dto) { var result = new Dto(); foreach (var keyName in keyNames) { if (dto.ContainsKey(keyName)) { result[keyName] = dto[keyName]; } else { throw new Exception("Invalid dto"); } } return(result); }