public async Task <dto.TripAvailabilityResponse> FindFlights(dto.TripAvailabilityRequest request) { var signature = !string.IsNullOrEmpty(await _sessionBag.Signature()) ? await _sessionBag.Signature() : await _userSessionService.GetAnonymousSharedSignature(); var tripAvailabilityRequest = Mapper.Map <TripAvailabilityRequest>(request, m => m.AfterMap(SetFareTypes)); var stopWatch = _perfLogSettings.EnableNavApiLogging ? Stopwatch.StartNew() : null; var response = await _client.GetAvailabilityVer2Async(new GetAvailabilityRequest { ContractVersion = _navApiContractVer, MessageContractVersion = _navMsgContractVer, Signature = signature, EnableExceptionStackTrace = false, TripAvailabilityRequest = tripAvailabilityRequest }); //_navApiContractVer, false, //_navMsgContractVer, signature, tripAvailabilityRequest); if (_perfLogSettings.EnableNavApiLogging && stopWatch != null) { stopWatch.Stop(); var msecs = stopWatch.ElapsedMilliseconds; _logger.WriteTimedLog(msecs, "BookingManager.GetAvailabilityVer2Async" + "|" + signature); } var avRequestWithInfant = Array.Find(request.AvailabilityRequests, p => Array.Find( p.PaxTypeCounts, q => q.PaxTypeCode == Global.INFANT_CODE && q.PaxCount > 0) != null); if (avRequestWithInfant != null) { var infantCount = Array.Find(avRequestWithInfant.PaxTypeCounts, q => q.PaxTypeCode == Global.INFANT_CODE).PaxCount; foreach (var schedule in response.GetTripAvailabilityVer2Response.Schedules) { foreach (var market in schedule) { foreach (var journey in market.AvailableJourneys) { var clearFares = false; foreach (var segment in journey.AvailableSegment) { foreach (var leg in segment.Legs) { var legSSRInsufficient = Array.Find(leg.LegInfo.LegSSRs, p => p.SSRNestCode == Global.INFANT_CODE && p.SSRLid - p.SSRSold < infantCount); if (legSSRInsufficient != null) { clearFares = true; continue; } } if (clearFares) { continue; } } if (clearFares) { foreach (var segment in journey.AvailableSegment) { segment.AvailableFares = new AvailableFare2[0]; } } } } } } var convertedResponse = Mapper.Map <dto.TripAvailabilityResponse>(response.GetTripAvailabilityVer2Response); return(convertedResponse); }