예제 #1
0
        private UPMObjective CreateObjectiveIdentfier(UPObjectivesItem item, IIdentifier identifier)
        {
            UPMObjective objective = new UPMObjective(identifier);

            objective.ObjectiveItem = null;
            UPMStringField titleField = new UPMStringField(StringIdentifier.IdentifierWithStringId($"{identifier.IdentifierAsString}-title"));

            titleField.StringValue = item.TitleFieldValue;
            UPMStringField subtitleField = new UPMStringField(StringIdentifier.IdentifierWithStringId($"{identifier.IdentifierAsString}-subtitle"));

            subtitleField.StringValue = item.SubTitelFieldValue;
            UPMStringField dateField = new UPMStringField(StringIdentifier.IdentifierWithStringId($"{identifier.IdentifierAsString}-date"));

            dateField.StringValue = DateExtensions.LocalizedFormattedDate(item.Date);
            objective.AddMainField(titleField);
            objective.AddMainField(subtitleField);
            objective.AddMainField(dateField);
            objective.DoneField                   = new UPMBooleanEditField(StringIdentifier.IdentifierWithStringId($"{identifier.IdentifierAsString}-done"));
            objective.DoneField.BoolValue         = item.Completed;
            objective.CanBeDeletedField           = new UPMBooleanEditField(StringIdentifier.IdentifierWithStringId($"{identifier.IdentifierAsString}-canByDelete"));
            objective.CanBeDeletedField.BoolValue = item.CanBeDeleted;
            return(objective);
        }
        /// <summary>
        /// Returns changed records.
        /// </summary>
        /// <returns></returns>
        public override List <UPCRMRecord> ChangedRecords()
        {
            List <UPCRMRecord> changedRecords = new List <UPCRMRecord>();
            UPMObjectivesPage  page           = (UPMObjectivesPage)this.Page;

            foreach (UPMObjectivesSection section in page.Children)
            {
                foreach (UPMObjective item in section.Children)
                {
                    UPObjectivesItem crmItem = item.ObjectiveItem;
                    if (item.DoneField.Changed)
                    {
                        if (crmItem != null)
                        {
                            crmItem.Completed = item.DoneField.BoolValue;
                        }
                    }

                    int editFieldIndex = 0;
                    for (int elementIndex = 0; elementIndex < item.Fields.Count; elementIndex++)
                    {
                        UPMElement element = item.Fields[elementIndex];
                        if (element is UPMEditField)
                        {
                            UPMEditField editField = (UPMEditField)element;
                            if (editField.Changed)
                            {
                                List <UPEditFieldContext> fieldContextList = this.editPageContext.EditFields.Values.ToList();
                                foreach (UPEditFieldContext fieldContext in fieldContextList)
                                {
                                    if (fieldContext.EditField == editField)
                                    {
                                        crmItem?.SetValueForAdditionalFieldPosition(fieldContext.Value ?? string.Empty, editFieldIndex);
                                    }
                                }
                            }

                            editFieldIndex++;
                        }
                        else if (element is UPMStringField)
                        {
                            editFieldIndex++;
                        }
                    }

                    List <UPCRMRecord> itemChangedRecords = crmItem?.ChangedRecords();
                    if (itemChangedRecords != null)
                    {
                        changedRecords.AddRange(itemChangedRecords);
                    }
                }
            }

            foreach (UPObjectivesItem deletedItem in this.DeletedItems)
            {
                List <UPCRMRecord> itemChangedRecords = deletedItem.ChangedRecords();
                if (itemChangedRecords != null)
                {
                    changedRecords.AddRange(deletedItem.ChangedRecords());
                }
            }

            return(changedRecords.Count == 0 ? null : changedRecords);
        }