private static FieldUnd <Und2Values> WrapBothValues <T> (object value2, D7FieldAttribute att, T itemIn) { var value1 = att.GetValue1(itemIn); //return und.Value1_2(value1, value2); var d8Val1 = ((DateTime)value1).ToString("yyyy-MM-dd HH:mm:ss"); var d8Val2 = ((DateTime)value2).ToString("yyyy-MM-dd HH:mm:ss"); return(und.Value1_2(d8Val1, d8Val2)); }
private static void SetFieldValue <T>(D7NodeBase d7Node, PropertyInfo inProp, PropertyInfo outProp, D7FieldAttribute fieldAttr, object value, T itemIn) { if (outProp == null) { return; } if (fieldAttr.FieldType == D7FieldTypes.DirectValue) { outProp.SetValue(d7Node, value, null); return; } object fieldVal = null; switch (fieldAttr.FieldType) { case D7FieldTypes.CckField: fieldVal = MapCckField(fieldAttr, value, itemIn, inProp); break; case D7FieldTypes.NodeReference: //Throw.IfNull(value, $"‹ID7Node› for “{outProp.Name}”"); if (value != null) { fieldVal = und.TargetIds((value.As <ID7Node>()).nid); } break; case D7FieldTypes.TermReference: fieldVal = MapTermRefField(outProp, value); break; case D7FieldTypes.FileReference: fieldVal = und.Fids(value.ToString().ToInt()); break; case D7FieldTypes.UserReference: if (value != null) { fieldVal = und.TargetIds((value.As <D7User>()).uid); } break; default: throw Error.Unsupported(fieldAttr.FieldType); } outProp.SetValue(d7Node, fieldVal, null); }
private static object MapCckField <T>(D7FieldAttribute fieldAttr, object value, T itemIn, PropertyInfo inProp) { if (fieldAttr.Has2Values) { return(WrapBothValues(value, fieldAttr, itemIn)); } if (inProp.PropertyType == typeof(bool)) { return(und.Values((bool)value ? 1 : 0)); } if (inProp.PropertyType == typeof(bool?)) { var nulB = (bool?)value; if (nulB.HasValue) { return(und.Values(nulB.Value ? 1 : 0)); } else { return(und.Values(null)); } } if (inProp.PropertyType == typeof(DateTime)) { return(und.Values(((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss"))); } if (inProp.PropertyType == typeof(DateTime?)) { var nD8 = (DateTime?)value; if (nD8.HasValue) { return(und.Values(nD8?.ToString("yyyy-MM-dd HH:mm:ss"))); } else { return(und.Values(null)); } } return(und.Values(value)); }