예제 #1
0
        private string Export(ExportSolutionConfig config, ExportSolutionOverrideInformation solutionInfo)
        {
            var solution = _service.Retrieve(Solution.EntityLogicalName, config.IdSolution, ColumnSetInstances.AllColumns).ToEntity <Solution>();

            string solutionName    = solution.UniqueName;
            string solutionVersion = solution.Version;

            solutionVersion = RemoveSymbols(solutionVersion);

            ExportSolutionRequest request = new ExportSolutionRequest()
            {
                SolutionName = solutionName,
                Managed      = config.Managed,
            };

            if (config.ExportAutoNumberingSettings)
            {
                request.ExportAutoNumberingSettings = config.ExportAutoNumberingSettings;
            }

            if (config.ExportCalendarSettings)
            {
                request.ExportCalendarSettings = config.ExportCalendarSettings;
            }

            if (config.ExportCustomizationSettings)
            {
                request.ExportCustomizationSettings = config.ExportCustomizationSettings;
            }

            if (config.ExportEmailTrackingSettings)
            {
                request.ExportEmailTrackingSettings = config.ExportEmailTrackingSettings;
            }

            if (config.ExportExternalApplications)
            {
                request.ExportExternalApplications = config.ExportExternalApplications;
            }

            if (config.ExportGeneralSettings)
            {
                request.ExportGeneralSettings = config.ExportGeneralSettings;
            }

            if (config.ExportIsvConfig)
            {
                request.ExportIsvConfig = config.ExportIsvConfig;
            }

            if (config.ExportMarketingSettings)
            {
                request.ExportMarketingSettings = config.ExportMarketingSettings;
            }

            if (config.ExportOutlookSynchronizationSettings)
            {
                request.ExportOutlookSynchronizationSettings = config.ExportOutlookSynchronizationSettings;
            }

            if (config.ExportRelationshipRoles)
            {
                request.ExportRelationshipRoles = config.ExportRelationshipRoles;
            }

            if (config.ExportSales)
            {
                request.ExportSales = config.ExportSales;
            }

            var response = (ExportSolutionResponse)_service.Execute(request);

            var fileBody = response.ExportSolutionFile;

            if (!Directory.Exists(config.ExportFolder))
            {
                Directory.CreateDirectory(config.ExportFolder);
            }


            if (solutionInfo.OverrideNameAndVersion || solutionInfo.OverrideDescription)
            {
                fileBody = OverrideSolutionInformation(fileBody, solutionInfo);
            }

            string fileName = string.Format("{0}.{1}_{2}{3} at {4}.zip"
                                            , config.ConnectionName
                                            , solutionName
                                            , solutionVersion
                                            , (config.Managed ? "_managed" : string.Empty)
                                            , EntityFileNameFormatter.GetDateString()
                                            );

            string filePath = Path.Combine(config.ExportFolder, FileOperations.RemoveWrongSymbols(fileName));

            File.WriteAllBytes(filePath, fileBody);

            return(filePath);
        }
        private Publisher GetDefaultPublisher()
        {
            var organization = _service.Retrieve(Organization.EntityLogicalName, _service.ConnectionData.OrganizationId.Value, new ColumnSet(Organization.Schema.Attributes.name)).ToEntity <Organization>();

            var defaultPublisherName = "DefaultPublisher" + organization.Name;

            QueryExpression query = new QueryExpression()
            {
                NoLock = true,

                TopCount = 2,

                EntityName = Publisher.EntityLogicalName,

                ColumnSet = new ColumnSet(true),

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(Publisher.Schema.Attributes.uniquename, ConditionOperator.Equal, defaultPublisherName),
                    },
                },

                Orders =
                {
                    new OrderExpression(Publisher.Schema.Attributes.createdon, OrderType.Ascending),
                },
            };

            var coll = _service.RetrieveMultiple(query).Entities;

            var result = coll.Count == 1 ? coll.Select(e => e.ToEntity <Publisher>()).SingleOrDefault() : null;

            if (result != null)
            {
                return(result);
            }

            query = new QueryExpression()
            {
                NoLock = true,

                TopCount = 2,

                EntityName = Publisher.EntityLogicalName,

                ColumnSet = new ColumnSet(true),

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(Publisher.Schema.Attributes.uniquename, ConditionOperator.Like, "DefaultPublisher%"),
                    },
                },

                Orders =
                {
                    new OrderExpression(Publisher.Schema.Attributes.createdon, OrderType.Ascending),
                },
            };

            return(_service.RetrieveMultiple(query).Entities.Select(e => e.ToEntity <Publisher>()).FirstOrDefault());
        }