public async Task SetValue(BusinessBase obj, string value) { if (obj.IsReadOnly(FieldName) || value == null) { return; } if (BasicType == BasicType.Text || BasicType == BasicType.TextLong) { value = value.NoNullString().Trim(); if (IsNullable && (value == "" || (value == "0" && Type == PropertyInputType.select))) { // strings as IDs !!! :) if (!(obj[FieldName] == null)) { obj[FieldName] = null; } } else { if (obj[FieldName].NoNullString() != value) { obj[FieldName] = value; } } } else if (Type == PropertyInputType.checkbox || BasicType == BasicType.Bit) { if (obj[FieldName].NoNullBool() != (value == "1")) { obj[FieldName] = (value == "1"); } } else if (Type == PropertyInputType.datetimeHHmm || Type == PropertyInputType.datetimeHHmmss || Type == PropertyInputType.date) { try { if (value != "") { AppUser us = await obj.CurrentUser(); DateTime d; string _format = "yyyy/MM/dd"; if (Type == PropertyInputType.datetimeHHmm) { _format += " HH:mm"; } else if (Type == PropertyInputType.datetimeHHmmss) { _format += " HH:mm:ss"; } try { d = DateTime.ParseExact(value, _format, us.Culture); } catch { d = DateTime.Parse(value, us.Culture); } if (obj[FieldName] == null) { obj[FieldName] = d; } else { if ((DateTime)obj[FieldName] != d) { obj[FieldName] = d; } } } else { if (!(obj[FieldName] == null)) { obj[FieldName] = null; } } } catch { if (!(obj[FieldName] == null)) { obj[FieldName] = null; } } } else if (BasicType == BasicType.GUID) { Guid newGuid = Guid.Empty; try { newGuid = Guid.Parse(value.ToString()); if ((Guid)obj[FieldName] != newGuid) { obj[FieldName] = newGuid; } } catch { } } else if (BasicType == BasicType.Number) { try { Lib.Numerize(ref value); if (obj[FieldName] == null && !IsNullable) { obj[FieldName] = 0; } if (IsNullable && (value == "" || (value == "0" && Type == PropertyInputType.select))) { if (!(obj[FieldName] == null)) { obj[FieldName] = null; } } else { //value = value.NoNullDouble().ToString(); try { if (Double.Parse(value) == 0) { value = "0"; } } catch { value = "0"; } if (obj[FieldName] == null && value != "") { obj[FieldName] = 0; } if (DataType == typeof(System.Int32)) { int tmp = Int32.Parse(value); if ((int)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } if (DataType == typeof(System.Int64)) { long tmp = Int32.Parse(value); if ((long)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } else if (DataType == typeof(System.Int16)) { short tmp = Int16.Parse(value); if ((short)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } if (DataType == typeof(System.Single)) { Single tmp = Single.Parse(value); if ((float)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } if (DataType == typeof(System.Double)) { Double tmp = Double.Parse(value); if ((double)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } if (DataType == typeof(System.Decimal)) { Decimal tmp = Decimal.Parse(value); if ((decimal)obj[FieldName] != tmp) { obj[FieldName] = tmp; } } } } catch { //Invalid user input //value = "0"; //obj[PropertyName] = 0; } } }
public async Task <string> GetValue(BusinessBase obj) { string value = ""; if (Type == PropertyInputType.date) { if (!(obj[FieldName] == null)) { if (obj.IsReadOnly(FieldName)) { value = String.Format(Format, (DateTime)obj[FieldName]); } else { value = ((DateTime)obj[FieldName]).ToString("yyyy/MM/dd"); } } } else if (Type == PropertyInputType.datetimeHHmm) { if (!(obj[FieldName] == null)) { if (obj.IsReadOnly(FieldName)) { value = String.Format(Format, (DateTime)obj[FieldName]); } else { value = ((DateTime)obj[FieldName]).ToString("yyyy/MM/dd HH:mm"); } } } else if (Type == PropertyInputType.datetimeHHmmss) { if (!(obj[FieldName] == null)) { if (obj.IsReadOnly(FieldName)) { value = String.Format(Format, (DateTime)obj[FieldName]); } else { value = ((DateTime)obj[FieldName]).ToString("yyyy/MM/dd HH:mm:ss"); } } } else if (Type == PropertyInputType.checkbox || BasicType == BasicType.Bit) { value = obj[FieldName].NoNullBool() ? "1" : "0"; } else if (Type == PropertyInputType.select) { if (obj[FieldName] == null) { value = "0"; } else { value = obj[FieldName].ToString(); } if (Required && value == "0" && !IsObjectView) { // First element ListTable dt = await obj.BusinessProvider.ListProvider.GetList(obj.ContextProvider, ListObjectName, ListName); if (dt.ToClient.Count > 0) { value = dt.First[0].ToString(); } } } else { if (Format != "") { value = String.Format(Format, obj[FieldName]); } else { value = obj[FieldName].NoNullString(); } } return(value); }