Beispiel #1
0
        public DeleteOpportunityResponse DeleteOpportunities(DeleteOpportunityRequest request)
        {
            Logger.Current.Verbose("Request for opportunities delete");

            opportunityRepository.DeleteOpportunities(request.OpportunityIDs, (int)request.RequestedBy);
            foreach (int opportunityId in request.OpportunityIDs)
            {
                indexingService.Remove <Opportunity>(opportunityId);
            }

            return(new DeleteOpportunityResponse());
        }
        public async Task <DeleteOpportunityResponse> DeleteOpportunityRole(DeleteOpportunityRequest deleteOpportunityRequest)
        {
            DeleteOpportunityResponse deleteOpportunityResponse = null;
            string path = "rest/v1/opportunities/roles/delete.json";
            string body = JsonConvert.SerializeObject(deleteOpportunityRequest);

            HttpClient client = new HttpClient
            {
                BaseAddress = new Uri(_marketoInstanceUrl)
            };

            // Add an Accept header for JSON format.
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("text/json"));

            client.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Bearer", GetToken());

            HttpContent httpContent = new StringContent(body);

            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            Task <HttpResponseMessage> httpResponseMessage = client.PostAsync(path, httpContent);
            HttpResponseMessage        response            = httpResponseMessage.Result;

            if (response.IsSuccessStatusCode)
            {
                // Parse the response body.
                Task <string> asyncString = response.Content.ReadAsStringAsync();  //Make sure to add a reference to System.Net.Http.Formatting.dll
                string        result      = asyncString.Result;
                deleteOpportunityResponse = JsonConvert.DeserializeObject <DeleteOpportunityResponse>(result);

                if (deleteOpportunityResponse.Success)
                {
                    foreach (DeleteOpportunityResponseResult deleteOpportunityResponseResult in deleteOpportunityResponse.Result)
                    {
                        if (!deleteOpportunityResponseResult.status.Equals("Deleted",
                                                                           StringComparison.InvariantCultureIgnoreCase))
                        {
                            Console.WriteLine("Record failed to delete. Status {0} for reason {1}", deleteOpportunityResponseResult.status, string.Join(",", deleteOpportunityResponseResult.reasons.Select(e => e.message)));
                        }
                    }
                }
                else
                {
                    Console.WriteLine("API request failed. Detail: {0}", string.Join(",", deleteOpportunityResponse.Errors.Select(x => x.Message)));
                }
            }
            else if (response.StatusCode.Equals(606))
            {
                throw new MarketoMaxRateLimitException();
            }
            else if (response.StatusCode.Equals(615))
            {
                throw new MarketoConcurrentAccessLimitException();
            }
            else if (response.StatusCode.Equals(607))
            {
                throw new MarketoDailyQuotaReachedException();
            }
            else
            {
                throw new Exception("Unhandled exception has occured when calling DeleteOpportunityRole on Marketo API.");
            }

            client.Dispose();
            return(deleteOpportunityResponse);
        }