/// <summary> /// Adds the field without child check. /// </summary> /// <param name="field"> /// The field. /// </param> /// <returns> /// The <see cref="int"/>. /// </returns> public int AddFieldWithoutChildCheck(UPContainerFieldMetaInfo field) { this._cdataInitialized = false; this.Fields.Add(field); this._fieldIds.Add(field.CrmField.FieldId); if (field.IsDateField) { var otherMetaInfo = this.FieldInfoAreaForFieldIndex(field.CrmField.FieldInfo.TimeFieldId); if (otherMetaInfo != null) { field.OtherDateTimeField = otherMetaInfo; otherMetaInfo.OtherDateTimeField = field; } } else if (field.IsTimeField) { var otherMetaInfo = this.FieldInfoAreaForFieldIndex(field.CrmField.FieldInfo.DateFieldId); if (otherMetaInfo != null) { field.OtherDateTimeField = otherMetaInfo; otherMetaInfo.OtherDateTimeField = field; } } return(this._fieldIds.Count - 1); }
/// <summary> /// Applies the time zone. /// </summary> /// <param name="timeZone"> /// The time zone. /// </param> /// <param name="addedFields"> /// The added fields. /// </param> public void ApplyTimeZone(UPCRMTimeZone timeZone, List <UPContainerFieldMetaInfo> addedFields) { if (this.Fields != null) { var currentFields = new List <UPContainerFieldMetaInfo>(this.Fields); foreach (var fieldMetaInfo in currentFields) { if (fieldMetaInfo.IsDateField && fieldMetaInfo.OtherDateTimeField == null) { var timeFieldId = fieldMetaInfo.CrmFieldInfo.TimeFieldId; if (timeFieldId < 0) { continue; } var field = new UPCRMField(timeFieldId, this.InfoAreaId); if (field.FieldInfo == null) { continue; } var otherInfo = new UPContainerFieldMetaInfo(field); this.AddNewFieldToArray(otherInfo, addedFields); } else if (fieldMetaInfo.IsTimeField && fieldMetaInfo.OtherDateTimeField == null) { var dateFieldId = fieldMetaInfo.CrmFieldInfo?.DateFieldId ?? 0; if (dateFieldId == 0) { continue; } var field = new UPCRMField(dateFieldId, this.InfoAreaId); if (field.FieldInfo == null) { continue; } var otherInfo = new UPContainerFieldMetaInfo(field); this.AddNewFieldToArray(otherInfo, addedFields); } } } var dateTimeCondition = this.Condition?.DateTimeConditionForInfoAreaParent(this, null); dateTimeCondition?.ApplyTimeZone(timeZone); if (this.subTables == null) { return; } foreach (var subInfos in this.subTables) { subInfos?.ApplyTimeZone(timeZone, addedFields); } }
/// <summary> /// Adds the new field to array. /// </summary> /// <param name="field"> /// The field. /// </param> /// <param name="addedFields"> /// The added fields. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public bool AddNewFieldToArray(UPContainerFieldMetaInfo field, List <UPContainerFieldMetaInfo> addedFields) { if (addedFields == null) { return(false); } foreach (UPContainerFieldMetaInfo _field in addedFields) { if (_field.CrmField.FieldIdentification == field.CrmField.FieldIdentification) { return(false); } } this.AddFieldWithoutChildCheck(field); addedFields.Add(field); return(true); }
/// <summary> /// Adds the field. /// </summary> /// <param name="field"> /// The field. /// </param> /// <returns> /// The <see cref="int"/>. /// </returns> public int AddField(UPContainerFieldMetaInfo field) { if (field.InfoAreaIdWithLink != this.InfoAreaIdWithLink) { if (this.subTables != null) { foreach (var subTable in this.subTables) { if (field.InfoAreaIdWithLink.Equals(subTable.InfoAreaIdWithLink)) { return(subTable.AddField(field)); } } } var addSubTable = new UPContainerInfoAreaMetaInfo(field.InfoAreaId, field.LinkId) { ParentRelation = "PLUS" }; if (this.subTables == null) { this.subTables = new List <UPContainerInfoAreaMetaInfo> { addSubTable }; } else { this.subTables.Add(addSubTable); } return(addSubTable.AddField(field)); } return(this.AddFieldWithoutChildCheck(field)); }