async Task AddDuplicateRecords(AccommodationDuplicateReport parentReport) { var allDuplicateIds = duplicateRequest.Duplicates .Union(new[] { duplicateRequest.Accommodation }) .Select(a => a.ToString()) .ToList(); var duplicateRecords = allDuplicateIds .SelectMany(accommodationId1 => allDuplicateIds, (accommodationId1, accommodationId2) => new { accommodationId1, accommodationId2 }) .Where(d => d.accommodationId1 != d.accommodationId2) .Distinct(); foreach (var duplicate in duplicateRecords) { _context.AccommodationDuplicates.Add(new AccommodationDuplicate { AccommodationId1 = duplicate.accommodationId1, AccommodationId2 = duplicate.accommodationId2, ReporterAgentId = agent.AgentId, ReporterAgencyId = agent.AgencyId, ParentReportId = parentReport.Id, IsApproved = false, Created = now }); } await _context.SaveChangesAsync(); }
async Task <AccommodationDuplicateReport> SaveReport() { var report = new AccommodationDuplicateReport { Created = now, Modified = now, ReporterAgencyId = agent.AgencyId, ReporterAgentId = agent.AgentId, ApprovalState = AccommodationDuplicateReportState.PendingApproval, Accommodations = duplicateRequest.Duplicates .Union(new[] { duplicateRequest.Accommodation }) .ToList() }; _context.Add(report); await _context.SaveChangesAsync(); return(report); }