// For Task 4 - Queries

        //private void PrintAlbumsWithAGivenTag(SocialNetworkDbContext db)
        //{
        //    var tagText = Console.ReadLine();

        //    var result = db
        //        .Albums
        //        .Select(a => new
        //        {
        //            a.Name,
        //            a.User.Username,
        //            a.Tags
        //        })
        //        .Where(a => a.Tags.All(t => t.Tag.Name == tagText))
        //        .OrderByDescending(a => a.Tags.Count)
        //        .ThenBy(a => a.Name)
        //        .ToList();

        //    foreach (var album in result)
        //    {
        //        Console.WriteLine($"Album: {album.Name}");
        //        Console.WriteLine($"--Owner: {album.Username}");
        //    }
        //}

        private void SeedAlbumsInUsers()
        {
            Console.WriteLine("Adding Albums to User...");
            using (var db = new SocialNetworkDbContext())
            {
                var users  = db.Users.ToList();
                var albums = db.Albums.ToList();

                for (int i = 0; i < users.Count; i++)
                {
                    var user = users[i];

                    var albumsInUserCount = random.Next(5, 15);
                    for (int j = 0; j < albumsInUserCount; j++)
                    {
                        var album = albums[random.Next(0, albums.Count)];
                        if (user.Albums.All(a => a.AlbumId != album.Id))
                        {
                            var albumInUser = new UserAlbum {
                                AlbumId = album.Id
                            };
                            user.Albums.Add(albumInUser);
                            db.SaveChanges();
                        }
                    }
                }
            }
        }
        public static async Task AddUserAlbum(UserAlbum userAlbum)
        {
            var con = await GetUserDbConnection();

            await con.InsertOrReplaceAsync(userAlbum);

            await con.CloseAsync();
        }
Exemple #3
0
        private void AddUserAlbumToDb(User user, Album album)
        {
            var userAlbum = new UserAlbum
            {
                UserId  = user.Id,
                AlbumId = album.Id,
            };

            this.Db.UserAlbums.Add(userAlbum);
            this.Db.SaveChanges();
        }
Exemple #4
0
        public static int Save(
            this IRepository <UserAlbum> repository,
            [NotNull] int userId,
            [NotNull] string title,
            [NotNull] int?coverImageId)
        {
            var entity = new UserAlbum
            {
                UserID = userId, Title = title, CoverImageID = coverImageId, Updated = DateTime.UtcNow
            };

            var newId = repository.Insert(entity);

            repository.FireNew(entity);

            return(newId);
        }
Exemple #5
0
        public static int AddAlbum(string idUser, string nameAlbum)
        {
            TokenDatabaseContext context = new TokenDatabaseContext();
            Album album = new Album();

            album.NameOfAlbum = nameAlbum;
            context.Album.Add(album);
            context.SaveChanges();
            int idAlbum = (from u in context.Album
                           select u.Id).ToList().Last();
            UserAlbum userAlbum = new UserAlbum();

            userAlbum.UserId  = idUser;
            userAlbum.AlbumId = idAlbum;
            context.UserAlbum.Add(userAlbum);
            context.SaveChanges();
            return(idAlbum);
        }
        public async Task <IActionResult> AddAlbum(AddAlbumModel model, string returnUrl = null)
        {
            if (string.IsNullOrEmpty(model.Name))              //这里应该是要前端检查的。
            {
                return(View(model));
            }

            if (ModelState.IsValid)
            {
                ViewData["ReturnUrl"] = returnUrl;
                var user = await _userManager.GetUserAsync(User);

                if (user == null)
                {
                    return(View(model));                     //失败,因为用户不存在
                }
                //查看是否有重名Album
                var query = _context.Albums.Where(q => q.BelongerId == user.Id && q.Name == model.Name);
                if (query.Any())
                {
                    return(View(model));                     //有重名,失败
                }

                //创建album

                var album = new UserAlbum()
                {
                    Name = model.Name, BelongerId = user.Id
                };
                _context.Albums.Add(album);
                _context.SaveChanges();

                //为该相册创建目录
                var webRootPath = _hostingEnvironment.WebRootPath;
                var albumPath   = $"{webRootPath}/images/Albums/{album.Id}";
                Directory.CreateDirectory(albumPath);

                album.AlbumPath = $"/images/Albums/{album.Id}";
                _context.SaveChanges();                  //之所以访问两遍数据库时,是因为第一次访问数据库后,album.Id才能确定。
                return(Redirect(returnUrl));
            }

            return(View(model));             //失败
        }
        public IEnumerable <UserAlbum> GetThumbnailList()
        {
            List <UserAlbum>            userAlbumList = new List <UserAlbum>();
            UserAlbum                   userAlbum;
            IEnumerable <tbl_UserAlbum> source = null;

            // Return List of Customer
            //source = db.tbl_UserAlbum.Where(p=>p.col_PostedDateTime.Day==DateTime.Now.Day).ToList();
            source = db.tbl_UserAlbum.ToList();
            foreach (var p in source)
            {
                var postedById = db.AspNetUsers.Where(m => m.Id == p.col_UserId).FirstOrDefault();
                var postedBy   = postedById.FirstName + " " + postedById.LastName + " " + postedById.School + " " + postedById.RollNo;
                userAlbum = new UserAlbum();
                userAlbum.col_Description = p.col_Description;
                userAlbum.col_Photo       = p.col_Photo;
                userAlbum.col_UserId      = postedBy;
                userAlbum.col_UserAlbumID = p.col_UserAlbumID;
                userAlbumList.Add(userAlbum);
            }
            return(userAlbumList);
        }
Exemple #8
0
        private static void SeedSharePhotoAlbums(SocialNetworkDbContext context)
        {
            var users = context
                        .Users
                        .Where(x => x.Friends.Any())
                        .Select(x => new
            {
                User        = x,
                UserFriends = x.Friends.Select(f => f.Friend).ToArray(),
                Albums      = x.Albums.Select(a => a).ToArray()
            })
                        .ToArray();

            var random = new Random();

            for (int i = 0; i < users.Length; i++)
            {
                var currentUserData       = users[i];
                var currentUser           = currentUserData.User;
                var currentUserAlbumsData = currentUserData.Albums;

                for (int j = 0; j < currentUserAlbumsData.Count(); j++)
                {
                    var currentAlbum = currentUserAlbumsData[j];

                    try
                    {
                        var userAlbum = new UserAlbum()
                        {
                            UserId   = currentUser.Id,
                            User     = currentUser,
                            AlbumId  = currentAlbum.Id,
                            Album    = currentAlbum,
                            UserRole = UserRole.Owner,
                        };

                        currentUser.UserAlbum.Add(userAlbum);
                        context.SaveChanges();
                    }
                    catch (Exception)
                    {
                    }

                    var randomFriendsNumber = random.Next(1, currentUserData.UserFriends.Count());

                    for (int k = 0; k < randomFriendsNumber; k++)
                    {
                        try
                        {
                            var currentFriend = currentUserData.UserFriends[k];
                            var userAlbum     = new UserAlbum()
                            {
                                UserId   = currentFriend.Id,
                                User     = currentFriend,
                                AlbumId  = currentAlbum.Id,
                                Album    = currentAlbum,
                                UserRole = UserRole.Viewer
                            };

                            currentFriend.UserAlbum.Add(userAlbum);
                            context.SaveChanges();
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
        }
Exemple #9
0
        public IHttpResponse PostCreateAlbum(DoAlbumInputViewModel model)
        {
            Regex albumNameRegex = new Regex(@"^\w{3,30}$");
            Regex coverUrlRegex  = new Regex(@"^\b((http|https):\/\/?)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/?))$");

            string cookieValue = this.Request.Cookies.GetCookie(AuthenticationCookieKey).Value;
            string username    = this.UserCookieService.DecryptString(cookieValue, EncryptKey);

            string userId = this.Context
                            .Users
                            .First(user => user.Username == username)
                            .Id;

            string albumId = Guid.NewGuid().ToString();

            model.Cover = StringExtensions.UrlDecode(model.Cover);

            Album album = new Album()
            {
                Id    = albumId,
                Name  = model.Name,
                Cover = model.Cover
            };

            UserAlbum userAlbum = new UserAlbum()
            {
                Id      = Guid.NewGuid().ToString(),
                UserId  = userId,
                AlbumId = albumId
            };

            if (!albumNameRegex.Match(model.Name).Success || !coverUrlRegex.Match(model.Cover).Success)
            {
                GetCreateAlbumPageViewModel createPageViewModel = new GetCreateAlbumPageViewModel()
                {
                    ErrorMessage = InvalidAlbumInformationError
                };

                return(this.View("AlbumsCreate", HttpResponseStatusCode.BadRequest, createPageViewModel));
            }
            else if (this.Context.UserAlbums.Where(ua => ua.UserId == userId).Any(a => a.Album.Name == model.Name))
            {
                GetCreateAlbumPageViewModel createPageViewModel = new GetCreateAlbumPageViewModel()
                {
                    ErrorMessage = AlbumAlreadyExistsError
                };

                return(this.View("AlbumsCreate", HttpResponseStatusCode.BadRequest, createPageViewModel));
            }

            using (this.Context)
            {
                this.Context
                .Add(album);

                this.Context
                .UserAlbums
                .Add(userAlbum);

                this.Context.SaveChanges();
            }

            AlbumDetailsViewModel viewModel = new AlbumDetailsViewModel()
            {
                Name        = model.Name,
                Price       = $"{album.Price.ToString(CultureInfo.InvariantCulture):F2}",
                Tracks      = new AlbumTrack[0],
                Cover       = model.Cover,
                CreateTrack = $"'/Tracks/Create?albumId={album.Id}'"
            };

            return(this.View("album", HttpResponseStatusCode.Ok, viewModel));
        }
Exemple #10
0
 public HomeController()
 {
     _userAlbum = new UserAlbum();
     logger     = LogManager.GetCurrentClassLogger();
 }