예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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));
        }