private async Task UpdateLabels(long[] selectedLabels, long transcriptionId) { var esixtingLabels = await transcriptionSelectedLabelRepository.GetAssignedAsync(transcriptionId); var existingSelectedLabelIds = esixtingLabels.Select(item => item.LabelId); var labelsToAdd = selectedLabels.Except(existingSelectedLabelIds); var labelsToDelete = existingSelectedLabelIds.Except(selectedLabels); if (labelsToAdd.Any()) { foreach (var labelId in labelsToAdd) { var selectedLabelObject = new TranscriptionSelectedLabel { LabelId = labelId, TranscriptionId = transcriptionId }; await transcriptionSelectedLabelRepository.AddAsync(selectedLabelObject); } } if (labelsToDelete.Any()) { var labels = esixtingLabels.Where(item => labelsToDelete.Contains(item.LabelId)).ToArray(); await transcriptionSelectedLabelRepository.RemoveRangeAsync(labels); } }
public Task AddAsync(TranscriptionSelectedLabel selectedLabel) { selectedLabelsDataSet.Add(selectedLabel); return(dbContext.SaveChangesAsync()); }