예제 #1
0
        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());
 }