Exemplo n.º 1
0
        private async void PopulateDb()
        {
            var tag1 = new Tag {
                Id = 1, Content = "tag1", PhotoId = 1
            };
            var tag2 = new Tag {
                Id = 2, Content = "tag2", PhotoId = 2
            };
            var tag3 = new Tag {
                Id = 3, Content = "tag3", PhotoId = 3
            };
            var user1 = new User {
                Id = "1", UserName = "******", Name = "pesho"
            };
            var user2 = new User {
                Id = "2", UserName = "******", Name = "gosho"
            };
            var firstAd = new Ad {
                Id = 1, Name = "Ad", UserId = "1"
            };
            var firstCategory = new Category {
                Id = 1, Name = "asd"
            };
            var firstAlbum = new Album {
                Id = 1, Title = "Album", CategoryId = 1, UserId = "1"
            };
            var firstPhoto = new Photo
            {
                Id = 1, ImageUrl = "imageUrl", Description = "First", AdId = 1, Location = "New York", Latitude = "111.1", Longitude = "111.1"
            };
            var secondPhoto = new Photo
            {
                Id = 2, ImageUrl = "imageUrl", Description = "Second", AlbumId = 1, Location = "Washington", Latitude = "222.2", Longitude = "222.2"
            };
            var thirdPhoto = new Photo
            {
                Id = 3, ImageUrl = "imageUrl", Description = "Third", AdId = 1, Location = "Las Vegas", Latitude = "333.3", Longitude = "333.3"
            };

            var userLikedImages = new UsersLikedImages {
                PhotoId = 1, UserId = "1"
            };

            this.db.Users.AddRange(user1, user2);
            this.db.Categories.Add(firstCategory);
            this.db.Albums.Add(firstAlbum);
            this.db.Ads.Add(firstAd);
            this.db.Photos.AddRange(firstPhoto, secondPhoto, thirdPhoto);
            this.db.UsersLikedImages.Add(userLikedImages);
            this.db.Tags.AddRange(tag1, tag2, tag3);

            await this.db.SaveChangesAsync();
        }
Exemplo n.º 2
0
        public async Task <IEnumerable <PhotoLikerServiceModel> > Like(string userId, int photoId)
        {
            var photoInfo = await this.db
                            .Photos
                            .Where(p => p.Id == photoId)
                            .Select(p => new
            {
                UserIdHasLiked = p.Likers.Any(u => u.UserId == userId)
            })
                            .FirstOrDefaultAsync();

            if (photoInfo == null || photoInfo.UserIdHasLiked)
            {
                return(await this.db
                       .Users
                       .Where(uli => uli.LikedPhotos.Any(lp => lp.PhotoId == photoId))
                       .OrderBy(u => u.UserName)
                       .ProjectTo <PhotoLikerServiceModel>()
                       .ToListAsync());
            }

            var userLike = new UsersLikedImages
            {
                UserId  = userId,
                PhotoId = photoId
            };

            this.db.Add(userLike);
            await this.db.SaveChangesAsync();

            return(await this.db
                   .Users
                   .Where(uli => uli.LikedPhotos.Any(lp => lp.PhotoId == photoId))
                   .OrderBy(u => u.UserName)
                   .ProjectTo <PhotoLikerServiceModel>()
                   .ToListAsync());
        }