public async Task <FulfillmentResponse> FulfillAsync(FulfillmentRequest fulfillmentRequest, IJobberClient jobberClient) { var quoteNumber = fulfillmentRequest.GetParameterAsInt(Constants.Variables.QuoteNumber); var quoteCollection = await jobberClient.GetQuotesAsync(); var filteredQuotes = quoteCollection.Quotes.Where(q => q.QuoteNumber == quoteNumber); switch (filteredQuotes.Count()) { case 1: return(QuoteUtils.BuildResponseFor(filteredQuotes.First())); default: return(BuildResponseForNoMatchingQuotes(quoteNumber)); } }
public async Task <FulfillmentResponse> FulfillAsync(FulfillmentRequest fulfillmentRequest, IJobberClient jobberClient) { var clientName = fulfillmentRequest.GetParameter(Constants.Variables.ClientName); var serviceName = fulfillmentRequest.GetParameter(Constants.Variables.ServiceName); var quotesCollection = await jobberClient.GetQuotesAsync(); var filteredQuotes = quotesCollection.Quotes .Where(q => q.Client.Name.ContainsIgnoringCase(clientName)) .Where(q => DoesLineItemsMatchUserQuery(q.LineItems, serviceName)); switch (filteredQuotes.Count()) { case 0: return(BuildResponseForNoMatchingQuotes()); case 1: return(QuoteUtils.BuildResponseFor(filteredQuotes.First())); default: return(BuildResponseForMuiltipleMatchesFor(fulfillmentRequest, filteredQuotes)); } }