private Song ImportSong(string songFileName, FileInfo coverImageFile, DateTimeOffset importDate, ISongRepository songRepository, IImageService imageService) { using (var songTagFile = TagLib.File.Create(songFileName)) { var tagValidationResults = ValidateTags(songTagFile); if (tagValidationResults.Any()) { _logger.LogWarning("File {0} is invalid. {1}", songFileName, string.Join(", ", tagValidationResults)); return(null); } var songFileInfo = new System.IO.FileInfo(songFileName); var relativeSongFileName = Path.Combine(songFileInfo.Directory.Name, songFileInfo.Name); var song = songRepository.GetByFileNameOrDefault(relativeSongFileName); if (song == null) { song = songRepository.Create(); songRepository.Add(song); } song.Map( title: songTagFile.Tag.Title, album: songTagFile.Tag.Album, artist: songTagFile.Tag.FirstPerformer, coverImageFile: coverImageFile, duration: songTagFile.Properties.Duration, fileName: relativeSongFileName, imageService: imageService); song.LastImportDate = importDate; return(song); } }