private void UpdateChildEditContext(UPChildEditContext childEditContext, Dictionary <string, object> _initialValues) { foreach (string fieldKey in _initialValues.Keys) { UPEditFieldContext editFieldContext = childEditContext.EditFieldContext[fieldKey]; if (editFieldContext != null) { editFieldContext.SetValue(_initialValues[fieldKey] as string); editFieldContext.ChildEditContext = childEditContext; } } }
/// <summary> /// Adds the groups with initial values. /// </summary> /// <param name="_initialValues">The initial values.</param> public override void AddGroupsWithInitialValues(List <Dictionary <string, object> > _initialValues) { UPMRepeatableEditGroup repeatableEditGroup = (UPMRepeatableEditGroup)this.Group; foreach (var initialValuesForGroup in _initialValues) { UPMStandardGroup group = null; string key = (initialValuesForGroup[".Key"] as List <string>)?[0]; if (!string.IsNullOrEmpty(key)) { group = this.groupForKey[key]; UPChildEditContext childEditContext = this.ChildEditContextForGroup(group); if (childEditContext != null && repeatableEditGroup.Groups.Contains(group)) { this.UpdateChildEditContext(childEditContext, initialValuesForGroup); return; } else { group = null; } } if (group == null) { group = this.CreateNewGroup(initialValuesForGroup); if (group != null) { repeatableEditGroup.AddChild(group); if (!string.IsNullOrEmpty(key)) { if (this.groupForKey != null) { this.groupForKey.SetObjectForKey(group, key); } else { this.groupForKey = new Dictionary <string, UPMStandardGroup> { { key, group } }; } } } } } }
/// <summary> /// Handles removing an item from repeatable edit group /// </summary> /// <param name="group">Group to remove</param> /// <param name="repeatableEditGroup">Repeatable edit group to remove from</param> public override void UserWillDeleteGroupInRepeatableEditGroup(UPMGroup group, UPMRepeatableEditGroup repeatableEditGroup) { UPChildEditContext editContext = this.ChildContextForGroup(group); if (editContext != null) { repeatableEditGroup.RemoveChild(group); if (this.MaxChildren > 0) { repeatableEditGroup.AddingEnabled = this.AddRecordEnabled; } editContext.DeleteRecord = true; if (this.AddedChildEditContexts.Contains(editContext)) { this.AddedChildEditContexts.Remove(editContext); } } }
private void AddChildRecordContext(UPChildEditContext childEditContext) { if (!childEditContext.IsNew) { if (this.ChildEditContexts == null) { this.ChildEditContexts = new Dictionary <string, UPChildEditContext>(); } this.ChildEditContexts.SetObjectForKey(childEditContext, childEditContext.RecordIdentification); } else { if (this.AddedChildEditContexts == null) { this.AddedChildEditContexts = new List <UPChildEditContext>(); } this.AddedChildEditContexts.Add(childEditContext); } }
private void AddRecordsToGroup( UPMRepeatableEditGroup repeatableEditGroup, int count, UPCRMResult childResult, Dictionary <string, UPCRMRecord> changedRecords, FieldControlTab childFieldControlTab) { for (var i = 0; i < count; i++) { var childRow = (UPCRMResultRow)childResult.ResultRowAtIndex(i); var childEditContext = new UPChildEditContext(childRow, this.NextPostfix); var changedRecord = changedRecords.ValueOrDefault(childRow.RootRecordId); var initialRecords = changedRecord != null ? new List <UPCRMRecord> { changedRecord } : null; var editFieldContextArray = this.EditContextsForResultRow(childRow, childFieldControlTab, childEditContext.EditFieldContext, null, childEditContext.FieldLabelPostfix, initialRecords); var editFieldCount = editFieldContextArray.Count; if (editFieldCount > 0) { var standardGroup = new UPMStandardGroup(new RecordIdentifier(childRow.RootRecordIdentification)) { Deletable = this.DeleteRecordEnabled }; childEditContext.Group = standardGroup; this.AddChildRecordContext(childEditContext); for (var j = 0; j < editFieldCount; j++) { var field = editFieldContextArray[j]; AddFieldToGroup(standardGroup, field, childEditContext); } childEditContext.HandleDependentFields(); repeatableEditGroup.AddChild(standardGroup); } } }
/// <summary> /// Changeds the records for context new record link user changes only. /// </summary> /// <param name="childEditContext">The child edit context.</param> /// <param name="newRecord">if set to <c>true</c> [new record].</param> /// <param name="link">The link.</param> /// <param name="userChangesOnly">if set to <c>true</c> [user changes only].</param> /// <returns></returns> public List <UPCRMRecord> ChangedRecordsForContextNewRecordLinkUserChangesOnly(UPChildEditContext childEditContext, bool newRecord, UPCRMLink link, bool userChangesOnly) { if (childEditContext.DeleteRecord) { if (newRecord) { return(null); } UPCRMRecord record = new UPCRMRecord(childEditContext.RecordIdentification); record.Deleted = true; return(new List <UPCRMRecord> { record }); } Dictionary <string, UPEditFieldContext> changedFields = null; if (newRecord && !userChangesOnly) { if (this.combinedInitialValues != null) { foreach (string fieldIdentification in this.combinedInitialValues.Keys) { int fieldId = fieldIdentification.FieldIdFromStringWithInfoAreaId(this.ChildInfoAreaId); if (fieldId >= 0) { UPEditFieldContext initialValueEditField = new UPEditFieldContext(fieldId, this.combinedInitialValues[fieldIdentification] as string); if (changedFields == null) { changedFields = new Dictionary <string, UPEditFieldContext> { { initialValueEditField.Key, initialValueEditField } }; } else { changedFields.SetObjectForKey(initialValueEditField, initialValueEditField.Key); } } } } } foreach (UPEditFieldContext editFieldContext in childEditContext.EditFieldContext.Values) { if (editFieldContext.WasChanged(userChangesOnly)) { if (changedFields != null) { changedFields.SetObjectForKey(editFieldContext, editFieldContext.Key); } else { changedFields = new Dictionary <string, UPEditFieldContext> { { editFieldContext.Key, editFieldContext } }; } } } List <UPCRMRecord> additionalRecords = null; ICollection <UPCRMLink> changedLinks = (ICollection <UPCRMLink>)childEditContext.ChangedLinkArray ?? new List <UPCRMLink>(); if (changedFields?.Count > 0 || changedLinks?.Count > 0) { UPCRMRecord record; if (newRecord) { record = childEditContext.RecordIdentification.RecordId().Length > 6 ? new UPCRMRecord(childEditContext.RecordIdentification) : UPCRMRecord.CreateNew(childEditContext.RecordIdentification.InfoAreaId()); record.AddLink(link); UPConfigFilter createFilter = ConfigurationUnitStore.DefaultStore.FilterByName($"{record.InfoAreaId}.ChildCreateTemplate"); createFilter = createFilter.FilterByApplyingDefaultReplacements(); additionalRecords = record.ApplyValuesFromTemplateFilter(createFilter, false); } else { record = new UPCRMRecord(childEditContext.RecordIdentification); } foreach (UPEditFieldContext changedField in changedFields.Values) { if (newRecord) { record.NewValueFieldId(changedField.Value, changedField.FieldId); } else { record.NewValueFromValueFieldId(changedField.Value, changedField.OriginalValue, changedField.FieldId); } } foreach (UPCRMLink changedLink in changedLinks) { record.AddLink(changedLink); } if (additionalRecords?.Count > 0) { List <UPCRMRecord> arr = new List <UPCRMRecord> { record }; arr.AddRange(additionalRecords); return(arr); } return(new List <UPCRMRecord> { record }); } return(null); }
private static void AddFieldToGroup(UPMStandardGroup standardGroup, object field, UPChildEditContext childEditContext) { if (field is UPEditFieldContext) { var editFieldContext = (UPEditFieldContext)field; editFieldContext.ChildEditContext = childEditContext; foreach (var editField in editFieldContext.EditFields) { editField.EditFieldsContext = childEditContext; standardGroup.AddField(editField); } } else { standardGroup.AddField((UPMField)field); } }
private UPMStandardGroup CreateNewGroupRecordAsNew(Dictionary <string, object> parentInitialValues, UPCRMRecord record, bool asNew) { UPContainerMetaInfo metaInfo = new UPContainerMetaInfo(this.ChildFieldControl); UPCRMResult result = !string.IsNullOrEmpty(record?.RecordId) ? metaInfo.NewRecordWithRecordId(record.RecordId) : metaInfo.NewRecord(); UPCRMResultRow childRow = (UPCRMResultRow)result.ResultRowAtIndex(0); UPChildEditContext childEditContext = new UPChildEditContext(childRow, this.NextPostfix); if (asNew) { childEditContext.SetAsNew(); } if (record != null) { childEditContext.AddChangedLinksFromRecordParentLink(record, null); } FieldControlTab childFieldControlTab = this.ChildFieldControl.TabAtIndex(0); this.combinedInitialValues = null; if (this.initialValues != null) { if (parentInitialValues != null) { Dictionary <string, object> combined = new Dictionary <string, object>(this.initialValues); foreach (var item in parentInitialValues) { combined[item.Key] = item.Value; } this.combinedInitialValues = combined; } else { this.combinedInitialValues = this.initialValues; } } else { this.combinedInitialValues = parentInitialValues; } List <UPCRMRecord> initialRecords = record != null ? new List <UPCRMRecord> { record } : null; List <object> editFieldContextArray = this.EditContextsFor(childRow, childFieldControlTab, childEditContext.EditFieldContext, this.combinedInitialValues, initialRecords); int editFieldCount = editFieldContextArray.Count; if (editFieldCount > 0) { UPMStandardGroup group = new UPMStandardGroup(new RecordIdentifier(childRow.RootRecordIdentification)); group.Deletable = true; childEditContext.Group = group; this.AddChildRecordContext(childEditContext); for (int j = 0; j < editFieldCount; j++) { UPEditFieldContext editFieldContext = editFieldContextArray[j] as UPEditFieldContext; if (editFieldContext != null) { editFieldContext.ChildEditContext = childEditContext; editFieldContext.FieldLabelPostfix = childEditContext.FieldLabelPostfix; List <UPMEditField> editFields = editFieldContext.EditFields; if (editFields.Count > 0) { foreach (UPMEditField editField in editFields) { editField.EditFieldsContext = childEditContext; group.AddField(editField); } } else { UPMField field = editFieldContext.Field; if (field != null) { group.AddField(field); } } } else { group.AddField((UPMField)editFieldContextArray[j]); } } childEditContext.HandleDependentFields(); return(group); } return(null); }
private UPChildEditContext ChildContextForGroup(UPMGroup group) { UPChildEditContext editContext = this.ChildEditContexts.Values.FirstOrDefault(x => x.Group == group); return(editContext ?? this.AddedChildEditContexts.FirstOrDefault(x => x.Group == group)); }