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); }
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); }