public async Task <List <ServiceSummaryResponse> > GetServiceSummaryForPPT(ServiceSummaryReguest serviceSummaryReguest) { List <ServiceSummaryResponse> list = new(); try { HashSet <string> ids = new(); var refTickets = await _refundSupportTicketRepository.GetServiceSummaryForPPT(serviceSummaryReguest); if (refTickets.IsNullOrEmptyCollection()) { return(null); } foreach (var refTick in refTickets) { if (refTick.SubmitedSubscription.HasValueExt() && refTick.ServiceIssue.ImpactedSubscriptions.Contains(refTick.SubmitedSubscription)) { ids.Add(refTick.SubmitedSubscription); } else { refTick.ServiceIssue.ImpactedSubscriptions.GetCollectionOfGuidsFromTextExt().ToList().ForEach(a => ids.Add(a)); } } List <ServiceIssue> health = null; bool useTuple = true; if (useTuple) { List <(string TrackingId, List <string> subIds)> trackingIdSubIdsList = new(); foreach (var item in refTickets) { //var onlySubIds = item.SubmitedSubscription.GetCollectionOfGuidsFromTextExt().ToList(); var onlySubIds = item.ServiceIssue.ImpactedSubscriptions.GetCollectionOfGuidsFromTextExt().ToList(); trackingIdSubIdsList.Add((item.TrackingId, onlySubIds)); } if (trackingIdSubIdsList.HasAnyInCollection()) { health = await _azureHealthSPNService.GetResourceHealthByTrackingId(trackingIdSubIdsList, serviceSummaryReguest.SearchMonthYear.ToShortDateString()); } } else { health = await _azureHealthSPNService.GetResourceHealthPartitioned(ids.ToList(), serviceSummaryReguest.SearchMonthYear.ToShortDateString()); } if (health.IsNullOrEmptyCollection()) { return(list); } var dicHealt = health.ToDictionary(x => x.TrackingId, x => x); var dicSerImp = serviceSummaryReguest.Services.ToDictionary(x => x.Service, x => x.Impact); foreach (var item in refTickets) { if (item.TrackingId.HasValueExt()) { if (dicHealt.TryGetValue(item.TrackingId, out ServiceIssue serviceIssue)) { var allSer = serviceIssue.ImpactedServices.Split(","); if (allSer.HasAnyInCollection()) { foreach (var ser in allSer) { if (dicSerImp.TryGetValue(ser, out string impact)) { var add = new ServiceSummaryResponse { Summary = serviceIssue.Summary, TrackingId = serviceIssue.TrackingId, Description = serviceIssue.Description, Title = serviceIssue.Title, }; add.ImpactedService = ser; add.Impact = impact; list.Add(add); } } } } } } return(list); } catch (Exception) { throw; } }