Пример #1
0
        public bool Flush(List <OrganizationRequest> reqs)
        {
            bool isFaulted             = false;
            var  addToSolutionRequests = new List <OrganizationRequest>();

            try
            {
                var chunk = 0;
                while (reqs.Skip(chunk).Any())
                {
                    var batch = reqs.Skip(chunk).Take(500).ToList();
                    chunk += 500;

                    ExecuteMultipleRequest req = new ExecuteMultipleRequest()
                    {
                        Requests = new OrganizationRequestCollection(),
                        Settings = new ExecuteMultipleSettings {
                            ReturnResponses = true, ContinueOnError = false
                        }
                    };

                    req.Requests.AddRange(batch);
                    var res = m_service.Value.Execute(req) as ExecuteMultipleResponse;
                    isFaulted = res.IsFaulted;

                    if (res.IsFaulted)
                    {
                        foreach (var results in res.Responses.Where(r => r.Fault != null))
                        {
                            var index = results.RequestIndex;
                            m_progress?.Invoke($"[ERROR] => Index: {index} - Error: {results.Fault.Message}");
                        }
                    }
                    else
                    {
                        var createResponse = res.Responses.Where(x => (x.Response as CreateResponse) != null);
                        foreach (var creationResponseItem in createResponse)
                        {
                            var creationRsponse = creationResponseItem.Response as CreateResponse;
                            addToSolutionRequests.Add(OrganizationRequestFactory.AddSolutionFactory(false, 61, creationRsponse.id, m_solution));
                        }
                    }
                }

                if (addToSolutionRequests.Count > 0)
                {
                    isFaulted = isFaulted || Flush(addToSolutionRequests);
                }
            }
            catch (Exception exception)
            {
                m_progress?.Invoke($"[ERROR] => {exception.Message}");
                m_telemetry.TrackExceptionWithCustomMetrics(exception);
            }

            return(isFaulted);
        }
Пример #2
0
        public RequestFactoryResult RequestFactory(string changeType, string resourceName, Entity webResource)
        {
            var requestFactoryResult = new RequestFactoryResult();

            try
            {
                switch (changeType)
                {
                case "NewInWorkdir":
                    requestFactoryResult.General = OrganizationRequestFactory.CreateFactory(webResource);
                    break;

                case "ModifiedInWorkdir":
                case "DeletedFromWorkdir":
                    var resourceId = GetResourceIdIfExist(resourceName);
                    if (resourceId != Guid.Empty)
                    {
                        if (changeType.Equals("DeletedFromWorkdir"))
                        {
                            requestFactoryResult.General = OrganizationRequestFactory.DeleteFactory(new EntityReference("webresource", resourceId));
                        }
                        else
                        {
                            webResource.Id = resourceId;
                            requestFactoryResult.General = OrganizationRequestFactory.UpdateFactory(webResource);
                            requestFactoryResult.Publish = OrganizationRequestFactory.PublishFactory(resourceId.ToString());
                        }
                    }
                    else
                    {
                        requestFactoryResult.General = OrganizationRequestFactory.CreateFactory(webResource);
                    }
                    break;
                }
            }
            catch (Exception exception)
            {
                m_progress?.Invoke($"[ERROR] => {exception.Message}");
                m_telemetry.TrackExceptionWithCustomMetrics(exception);
            }

            return(requestFactoryResult);
        }