コード例 #1
0
        internal static List <Guid> executeAttachmentsCopyBasedOnWebFileName(CrmServiceClient crmSource, CrmServiceClient crmTarget, List <CrmEntityContainer> source, List <CrmEntityContainer> target, bool includeNotes, string logPath)
        {
            List <Guid> result = new List <Guid>();

            foreach (CrmEntityContainer enSource in source)
            {
                //get single web file with same name, skip if plural
                List <CrmEntityContainer> enTargets = target.Where(e => e.name == enSource.name).ToList();
                if (ReferenceEquals(enTargets, null) || enTargets.Count == 0)
                {
                    continue;
                }

                Entity latestAttacnment = getLattestAttachmentByEntity(crmSource, enSource.id, enSource.logicalName, includeNotes);
                if (ReferenceEquals(latestAttacnment, null))
                {
                    continue;
                }

                //copy to all found target webfiles
                foreach (CrmEntityContainer enTarget in enTargets)
                {
                    try
                    {
                        Guid?newNote = CrmHelper.cloneAnnotationForSpecificID(crmTarget, latestAttacnment, enTarget.crmEntityRef);
                        if (newNote.HasValue)
                        {
                            result.Add(newNote.Value);
                        }
                    }
                    catch (Exception ex)
                    {
                        IOHelper.appendLogFile(logPath, ex.Message);
                        continue;
                    }
                }
            }

            return(result);
        }