public void Store(string originalFileName, string guid) { string mediaServerUrlBase = ConfigurationManager.AppSettings["MediaServerSaveBaseUrl"]; string fullName = Path.Combine(mediaServerUrlBase, guid); using (SmartPlayerEntities context = new SmartPlayerEntities()) { MusicRepository repo = new MusicRepository(context); var allSongs = repo.GetAll() .Select(x => new AnalyzableSong { Id = x.Id, PhysicalFileName = x.Guid }) .ToList(); allSongs.ForEach(x => x.PhysicalFileName = Path.Combine(mediaServerUrlBase, x.PhysicalFileName)); List <double> correlationCoefficients = Analyzer.GetCorreleationCoefficientsFor(fullName, allSongs); Song song = new Song() { Name = originalFileName, Guid = guid }; for (int i = 0; i < correlationCoefficients.Count; i++) { song.CorrelationsAsPrimary.Add(new SongSongCorrelation { SecondarySongId = allSongs[i].Id, CorrelationScore = correlationCoefficients[i] }); } repo.Create(song); } }
public async Task <ActionResult> Create(Music music, IFormFile musicFile, Guid playlistId) { Playlist playlist = _playlistRepo.Get(playlistId); if (playlist.ApplicationUserId != this.User.GetUserId()) { return(Unauthorized()); } if (musicFile == null || musicFile.Length == 0) { ViewBag.playlistId = playlistId; ViewBag.noFile = "You must upload a file"; return(View()); } var folderPath = Path.Combine(_appEnv.WebRootPath, "audio", playlistId.ToString()); if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } var fileExtension = musicFile.FileName.Substring(musicFile.FileName.Length - 4); if (fileExtension != ".mp3" && fileExtension != ".wav") { ViewBag.playlistId = playlistId; ViewBag.noFile = "Your file must be of type mp3 or wav"; return(View()); } var filePath = Path.Combine(folderPath, musicFile.FileName); if (System.IO.File.Exists(filePath)) { ViewBag.playlistId = playlistId; ViewBag.noFile = "The file that you want to upload already exists"; return(View()); } try { music.filePath = String.Concat("/audio/", playlistId.ToString(), "/", musicFile.FileName); music.PlaylistId = playlistId; _musicRepo.Create(music); _musicRepo.SaveChanges(); } catch { ViewBag.playlistId = playlistId; return(View()); } using (var stream = new FileStream(filePath, FileMode.Create)) { await musicFile.CopyToAsync(stream); } return(RedirectToAction(nameof(Index), new { playlistId = playlistId })); }
public void Store(string originalFileName, string guid) { string mediaServerUrlBase = ConfigurationManager.AppSettings["MediaServerSaveBaseUrl"]; string fullName = Path.Combine(mediaServerUrlBase, guid); using(SmartPlayerEntities context = new SmartPlayerEntities()) { MusicRepository repo = new MusicRepository(context); var allSongs = repo.GetAll() .Select(x => new AnalyzableSong { Id = x.Id, PhysicalFileName = x.Guid }) .ToList(); allSongs.ForEach(x => x.PhysicalFileName = Path.Combine(mediaServerUrlBase, x.PhysicalFileName)); List<double> correlationCoefficients = Analyzer.GetCorreleationCoefficientsFor(fullName, allSongs); Song song = new Song() { Name = originalFileName, Guid = guid }; for(int i = 0; i < correlationCoefficients.Count; i++) { song.CorrelationsAsPrimary.Add(new SongSongCorrelation { SecondarySongId = allSongs[i].Id, CorrelationScore = correlationCoefficients[i] }); } repo.Create(song); } }
public void Test2() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "MovieListDatabase") .Options; var data = new List <Playlist> { new Playlist { Id = new Guid("D6439971-6030-4983-A531-08D8C6A0B4A2"), PlaylistName = "Just a playlist", ApplicationUserId = "1265ace9-c141-4837-aab7-32eb45d1af2d", Musics = new List <Music> { new Music { Id = new Guid("C80F178B-D710-48B6-BFAA-08D8C87ECF9B"), MusicName = "Song", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Rick Astley - Never Gonna Give You Up (Video).mp3", PlaylistId = new Guid("D6439971-6030-4983-A531-08D8C6A0B4A2") } } }, new Playlist { Id = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B"), PlaylistName = "Just a playlist", ApplicationUserId = "937bcaf9-3a2a-4136-a5b6-f3c8c6945b55", Musics = new List <Music> { new Music { Id = new Guid("309CDBC0-5DA6-443F-EC25-08D8C875CA44"), MusicName = "Music", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Vicetone & Tony Igy - Astronomia.mp3", PlaylistId = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B") }, new Music { Id = new Guid("C80F178B-D710-48B6-BFAA-08D8C87ECF9B"), MusicName = "Song", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Rick Astley - Never Gonna Give You Up (Video).mp3", PlaylistId = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B") } } } }.AsQueryable(); var mockSet = new Mock <DbSet <Playlist> >(); mockSet.As <IQueryable <Playlist> >().Setup(m => m.Provider).Returns(data.Provider); mockSet.As <IQueryable <Playlist> >().Setup(m => m.Expression).Returns(data.Expression); mockSet.As <IQueryable <Playlist> >().Setup(m => m.ElementType).Returns(data.ElementType); mockSet.As <IQueryable <Playlist> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator()); Guid pIdOne = new Guid("D6439971-6030-4983-A531-08D8C6A0B4A2"); Guid pIdTwo = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B"); var musicData = new List <Music> { new Music { Id = new Guid("309CDBC0-5DA6-443F-EC25-08D8C875CA44"), MusicName = "Music", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Vicetone & Tony Igy - Astronomia.mp3", PlaylistId = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B"), Playlist = data.FirstOrDefault(p => p.Id == pIdTwo) }, new Music { Id = new Guid("C80F178B-D710-48B6-BFAA-08D8C87ECF9B"), MusicName = "Song", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Rick Astley - Never Gonna Give You Up (Video).mp3", PlaylistId = new Guid("2B363996-E8AA-4710-70CA-08D8C6CBFC5B"), Playlist = data.FirstOrDefault(p => p.Id == pIdTwo) } }.AsQueryable(); var mockSetMusic = new Mock <DbSet <Music> >(); mockSetMusic.As <IQueryable <Music> >().Setup(m => m.Provider).Returns(musicData.Provider); mockSetMusic.As <IQueryable <Music> >().Setup(m => m.Expression).Returns(musicData.Expression); mockSetMusic.As <IQueryable <Music> >().Setup(m => m.ElementType).Returns(musicData.ElementType); mockSetMusic.As <IQueryable <Music> >().Setup(m => m.GetEnumerator()).Returns(musicData.GetEnumerator()); _dbContext = new Mock <ApplicationDbContext>(options); _dbContext.Setup(c => c.Playlists).Returns(mockSet.Object); _dbContext.Setup(c => c.Musics).Returns(mockSetMusic.Object); _musicRepo = new MusicRepository(_dbContext.Object); _musicRepo.Create(new Music { Id = new Guid("ABD44931-3DEA-4B43-238F-08D8C8848C7D"), MusicName = "Yes", filePath = "/audio/cca3e07d-55b8-4a17-bb9b-08d8c84436ea/Smash Mouth - All Star.mp3", PlaylistId = new Guid("D6439971-6030-4983-A531-08D8C6A0B4A2"), Playlist = data.FirstOrDefault(p => p.Id == pIdOne) }); _musicRepo.SaveChanges(); Assert.Equal(2, _musicRepo.GetAllFromPlaylist(pIdTwo).Count); }