Пример #1
0
        public void AddSongToUser_UserSong_SongUsageIsUpdatedToTrue()
        {
            var user = new User {
                Id = Guid.NewGuid(), UserId = Guid.NewGuid()
            };
            var song = new Song {
                Id = Guid.NewGuid(), SongId = Guid.NewGuid(), Album = new Album {
                    Id = Guid.NewGuid()
                }
            };

            _context.Users.Add(user);
            _context.Songs.Add(song);
            _context.SaveChanges();

            var userSong = new UserSong
            {
                Id         = Guid.NewGuid(),
                UserSongId = Guid.NewGuid(),
                SongId     = song.SongId,
                User       = new User {
                    UserId = user.UserId
                }
            };

            _inventoryService.AddSongToUser(userSong);

            var result = _context.Songs.Find(song.Id);

            Assert.IsTrue(result.IsAttached);
        }
Пример #2
0
        public void AddSongToUser_UserSong_AddsUserSongToDatabase()
        {
            var user = new User {
                Id = Guid.NewGuid(), UserId = Guid.NewGuid()
            };
            var song = new Song {
                Id = Guid.NewGuid(), SongId = Guid.NewGuid(), Album = new Album {
                    Id = Guid.NewGuid()
                }
            };

            _context.Users.Add(user);
            _context.Songs.Add(song);
            _context.SaveChanges();

            var userSong = new UserSong
            {
                Id         = Guid.NewGuid(),
                UserSongId = Guid.NewGuid(),
                SongId     = song.SongId,
                User       = new User {
                    UserId = user.UserId
                }
            };

            _inventoryService.AddSongToUser(userSong);

            var result = _context.UserSongs.First();

            Assert.AreEqual(result.Id, userSong.Id);
        }
Пример #3
0
        public async Task <UserSong> AddSongToList(string userId, string name, string artist, string radioStation)
        {
            var song = new SongData()
            {
                Artist = artist,
                Name   = name,
            };

            await this.db.Songs.AddAsync(song);

            await this.db.SaveChangesAsync();

            var userSong = new UserSong()
            {
                Date         = DateTime.Now,
                ListenerId   = userId,
                RadioStation = radioStation,
                Song         = song
            };

            await this.db.UserSongs.AddAsync(userSong);

            await this.db.SaveChangesAsync();

            return(userSong);
        }
Пример #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            UserSong userSong = db.UserSongs.Find(id);

            db.UserSongs.Remove(userSong);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public void DeleteUserSong(UserSong userSong)
        {
            var userToUpdate = _context.Users.First(x => x.UserId == userSong.User.UserId);

            var userSongToDelete = userToUpdate.UserSongs.First(x => x.SongId == userSong.SongId);

            _context.UserSongs.Remove(userSongToDelete);
            _context.SaveChanges();
        }
Пример #6
0
        public void RemoveSongFromUser(UserSong userSong)
        {
            _userRepository.DeleteUserSong(userSong);

            var songToUpdate = _songRepository.Get(userSong.SongId);

            songToUpdate.IsAttached = false;

            _songRepository.SaveChanges();
        }
Пример #7
0
 public ActionResult Edit([Bind(Include = "Id,SongId,UserId,Rating,PurchaseDate")] UserSong userSong)
 {
     if (ModelState.IsValid)
     {
         db.Entry(userSong).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.SongId = new SelectList(db.Songs, "Id", "Name", userSong.SongId);
     ViewBag.UserId = new SelectList(db.Users, "Id", "Name", userSong.UserId);
     return(View(userSong));
 }
Пример #8
0
        public ActionResult Create([Bind(Include = "Id,UserId,SongId,Rating")] UserSong userSong)
        {
            if (ModelState.IsValid)
            {
                db.UserSongs.Add(userSong);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.UserId = new SelectList(db.Buyers, "Id", "Name", userSong.UserId);
            ViewBag.SongId = new SelectList(db.Songs, "Id", "Title", userSong.SongId);
            return(View(userSong));
        }
        public void AddSongToUser_UserSong_CallSongRepoGet()
        {
            var userSong = new UserSong
            {
                SongId = Guid.NewGuid(),
                User   = new User {
                    UserId = Guid.NewGuid()
                }
            };

            _inventoryService.AddSongToUser(userSong);

            _songRepository.Verify(x => x.Get(It.IsAny <Guid>()), Times.AtLeastOnce);
        }
        public void RemoveSongFromUser_UserSong_CallsSongRepoSave()
        {
            var userSong = new UserSong
            {
                SongId = Guid.NewGuid(),
                User   = new User {
                    UserId = Guid.NewGuid()
                }
            };

            _inventoryService.RemoveSongFromUser(userSong);

            _songRepository.Verify(x => x.SaveChanges(), Times.AtLeastOnce);
        }
        public void RemoveSongFromUser_UserSong_CallsUserRepoDeleteUserSong()
        {
            var userSong = new UserSong
            {
                SongId = Guid.NewGuid(),
                User   = new User {
                    UserId = Guid.NewGuid()
                }
            };

            _inventoryService.RemoveSongFromUser(userSong);

            _userRepository.Verify(x => x.DeleteUserSong(It.IsAny <UserSong>()), Times.AtLeastOnce);
        }
        public void AddSongToUser_UserSong_CallsUserRepoSave()
        {
            var userSong = new UserSong
            {
                SongId = Guid.NewGuid(),
                User   = new User {
                    UserId = Guid.NewGuid()
                }
            };

            _inventoryService.AddSongToUser(userSong);

            _userRepository.Verify(x => x.SaveChanges(), Times.AtLeastOnce);
        }
Пример #13
0
        public void AddSongToUser(UserSong userSong)
        {
            var userToUpdate = _userRepository.Get(userSong.User.UserId);
            var songToUpdate = _songRepository.Get(userSong.SongId);

            userSong.User = null;

            userToUpdate.UserSongs.Add(userSong);

            songToUpdate.IsAttached = true;

            _songRepository.SaveChanges();
            _userRepository.SaveChanges();
        }
Пример #14
0
        // GET: UserSongs/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UserSong userSong = db.UserSongs.Find(id);

            if (userSong == null)
            {
                return(HttpNotFound());
            }
            return(View(userSong));
        }
Пример #15
0
        // GET: UserSongs/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UserSong userSong = db.UserSongs.Find(id);

            if (userSong == null)
            {
                return(HttpNotFound());
            }
            ViewBag.SongId = new SelectList(db.Songs, "Id", "Name", userSong.SongId);
            ViewBag.UserId = new SelectList(db.Users, "Id", "Name", userSong.UserId);
            return(View(userSong));
        }
Пример #16
0
        private void BtnAddSong_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                var  filename = openFileDialog1.FileName;
                Song song     = new Song();
                song.GenreId  = ((Genre)cbGenres.SelectedItem).Id;
                song.SingerId = ((Singer)cbAuthors.SelectedItem).Id;
                song.SongName = filename;
                context.Songs.Add(song);

                UserSong userSong = new UserSong();
                userSong.UserId = user.Id;
                userSong.SongId = song.Id;
                context.UserSongs.Add(userSong);

                context.SaveChanges();
            }
        }
Пример #17
0
        public void DeleteUserSong_UserAndSong_RemoveUserSongFromUser()
        {
            var song = new Song
            {
                Id     = Guid.NewGuid(),
                SongId = Guid.NewGuid()
            };

            var user = new User
            {
                Id        = Guid.NewGuid(),
                UserId    = Guid.NewGuid(),
                UserSongs = new List <UserSong>
                {
                    new UserSong
                    {
                        Id     = Guid.NewGuid(),
                        SongId = song.SongId
                    }
                }
            };

            var userSong = new UserSong
            {
                SongId = song.SongId,
                User   = new User {
                    UserId = user.UserId
                }
            };

            _context.Users.Add(user);
            _context.SaveChanges();

            _userRepository.DeleteUserSong(userSong);

            var updatedUser = _context.Users.Find(user.Id);

            const int expected = 0;

            Assert.AreEqual(expected, updatedUser.UserSongs.Count);
        }
Пример #18
0
        public void RemoveSongFromUser_UserSong_SongUsageIsUpdatedToFalse()
        {
            var song = new Song {
                Id = Guid.NewGuid(), SongId = Guid.NewGuid(), Album = new Album {
                    Id = Guid.NewGuid()
                }
            };
            var user = new User
            {
                Id        = Guid.NewGuid(),
                UserId    = Guid.NewGuid(),
                UserSongs = new List <UserSong> {
                    new UserSong
                    {
                        Id         = Guid.NewGuid(),
                        UserSongId = Guid.NewGuid(),
                        SongId     = song.SongId
                    }
                }
            };

            _context.Songs.Add(song);
            _context.Users.Add(user);
            _context.SaveChanges();

            var userSong = new UserSong
            {
                Id         = Guid.NewGuid(),
                UserSongId = Guid.NewGuid(),
                SongId     = song.SongId,
                User       = new User {
                    UserId = user.UserId
                }
            };

            _inventoryService.RemoveSongFromUser(userSong);

            var result = _context.Songs.Find(song.Id);

            Assert.IsFalse(result.IsAttached);
        }
Пример #19
0
        public void RemoveSongFromUser_UserSong_DeletesUserSongFromDatabase()
        {
            var song = new Song {
                Id = Guid.NewGuid(), SongId = Guid.NewGuid(), Album = new Album {
                    Id = Guid.NewGuid()
                }
            };
            var user = new User {
                Id = Guid.NewGuid(), UserId = Guid.NewGuid(), UserSongs = new List <UserSong> {
                    new UserSong
                    {
                        Id         = Guid.NewGuid(),
                        UserSongId = Guid.NewGuid(),
                        SongId     = song.SongId
                    }
                }
            };

            _context.Songs.Add(song);
            _context.Users.Add(user);
            _context.SaveChanges();

            var userSong = new UserSong
            {
                Id         = Guid.NewGuid(),
                UserSongId = Guid.NewGuid(),
                SongId     = song.SongId,
                User       = new User {
                    UserId = user.UserId
                }
            };

            _inventoryService.RemoveSongFromUser(userSong);

            var results = _context.UserSongs.ToList();

            const int expected = 0;

            Assert.AreEqual(expected, results.Count);
        }
Пример #20
0
        public async Task <IActionResult> Put(string username, string title)
        {
            try
            {
                var userListen = _context.UserSong.Single(us => us.title.Equals(title) && us.username.Equals(username));
                userListen.listen_count += 1;

                _context.Update(userListen);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                var userListen = new UserSong()
                {
                    username = username, title = title, listen_count = 1
                };
                _context.Add(userListen);

                await _context.SaveChangesAsync();
            }

            return(Ok());
        }
Пример #21
0
        public ActionResult BuyASong(int id, int SongId, int Rating)
        {
            User user = db.Users.Find(id);
            Song song = db.Songs.Find(SongId);

            ViewBag.Message = $"{ user.Name } bought { song.Name }";

            if (song == null)
            {
                return(HttpNotFound("no song by that ID"));
            }

            if (user.Money >= song.Price)
            {
                UserSong newPurchase = new UserSong
                {
                    SongId       = SongId,
                    UserId       = id,
                    Rating       = Rating,
                    PurchaseDate = new DateTime().Date
                };
                db.UserSongs.Add(newPurchase);
                user.Money -= song.Price;
                db.SaveChanges();
            }
            else
            {
                ViewBag.Message = $"Not enough money for { user.Name } to buy \"{ song.Name }\" (price: ${ song.Price }) \n{ user.Name } currently owns ${ user.Money }.";
            }

            ViewBag.SongId = new SelectList(NotPurchasedYet(id), "Id", "Name");
            ViewBag.Rating = new SelectList(new List <int> {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            });
            ViewBag.theSong = song;
            return(View(user));
        }
        public static IApplicationBuilder Seed(this IApplicationBuilder app)
        {
            using (var serviceScope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                serviceScope.ServiceProvider.GetService <SmartRadioDbContext>().Database.Migrate();

                var db = serviceScope.ServiceProvider.GetService <SmartRadioDbContext>();
                var musicRecognition = serviceScope.ServiceProvider.GetService <IMusicRecognitionService>();

                var roleManager = serviceScope.ServiceProvider.GetService <RoleManager <IdentityRole> >();
                var userManager = serviceScope.ServiceProvider.GetService <UserManager <User> >();

                Task
                .Run(async() =>
                {
                    if (!await db.Roles.AnyAsync())
                    {
                        var radioRole = new IdentityRole("Radio");

                        await roleManager.CreateAsync(radioRole);
                    }

                    if (!await db.Users.AnyAsync())
                    {
                        var pesho = new User()
                        {
                            UserName = "******",
                            Email    = "*****@*****.**",
                        };

                        var mario = new User()
                        {
                            UserName = "******",
                            Email    = "*****@*****.**"
                        };

                        var misho = new User()
                        {
                            UserName = "******",
                            Email    = "*****@*****.**"
                        };

                        var radio = new User()
                        {
                            UserName = "******",
                            Email    = "*****@*****.**"
                        };

                        await userManager.CreateAsync(pesho, "test12");

                        await userManager.CreateAsync(mario, "test12");

                        await userManager.CreateAsync(misho, "test12");

                        await userManager.CreateAsync(radio, "test12");
                        await db.SaveChangesAsync();

                        pesho.Following.Add(new UserFollower()
                        {
                            User2 = mario
                        });

                        pesho.Following.Add(new UserFollower()
                        {
                            User2 = misho
                        });

                        await db.SaveChangesAsync();

                        await userManager.AddToRoleAsync(radio, "Radio");
                        await db.SaveChangesAsync();

                        var songFiles = Directory.EnumerateFiles("./wwwroot/songs");

                        foreach (var songFile in songFiles)
                        {
                            var fileInfo = new FileInfo(songFile);
                            var info     = fileInfo.Name.Replace(fileInfo.Extension, "").Split('-');
                            var songData = new SongData()
                            {
                                Name   = info[0],
                                Artist = info[1]
                            };

                            var fingerprintsList = new List <SongFingerprint>();

                            var fingerprints = musicRecognition.GetSongData(fileInfo.FullName);

                            int index = 0;
                            foreach (var fingerprint in fingerprints)
                            {
                                var fingerprintModel = new SongFingerprint()
                                {
                                    Hash   = fingerprint,
                                    Offset = index,
                                    Song   = songData
                                };

                                fingerprintsList.Add(fingerprintModel);
                                index++;
                            }

                            songData.Fingerprints = fingerprintsList;

                            db.Songs.Add(songData);
                            await db.SaveChangesAsync();
                        }

                        var userSong = new UserSong()
                        {
                            Date         = DateTime.Today,
                            Listener     = pesho,
                            RadioStation = "101.2",
                            Song         = db.Songs.First()
                        };

                        db.UserSongs.Add(userSong);
                        await db.SaveChangesAsync();
                    }
                }).Wait();
            }

            return(app);
        }