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(); }
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()); }