public Album Insert(CreateAlbum value)
        {
            using (var tran = db.Database.BeginTransaction(System.Data.IsolationLevel.RepeatableRead))
            {
                if (db.Albums.Any(t => EF.Functions.Like(t.Title, value.Title)))
                {
                    throw new ArgumentException("name must be unique");
                }

                DbGenre genre;
                if (db.Genres.Any(s => EF.Functions.Like(s.Name, value.Genre)))
                {
                    genre = db.Genres.FirstOrDefault(s => EF.Functions.Like(s.Name, value.Genre));
                }
                else
                {
                    var toInsert2 = new DbGenre()
                    {
                        Name = value.Genre
                    };
                    db.Genres.Add(toInsert2);

                    db.SaveChanges();

                    genre = toInsert2;
                }

                DbArtist artist;
                if (db.Artists.Any(s => EF.Functions.Like(s.Name, value.Artist)))
                {
                    artist = db.Artists.FirstOrDefault(s => EF.Functions.Like(s.Name, value.Artist));
                }
                else
                {
                    var toInsert2 = new DbArtist()
                    {
                        Name = value.Artist
                    };
                    db.Artists.Add(toInsert2);

                    db.SaveChanges();

                    artist = toInsert2;
                }

                var toInsert = new DbAlbum()
                {
                    Title = value.Title, ArtistId = artist.Id, GenreId = genre.Id
                };
                db.Albums.Add(toInsert);

                db.SaveChanges();
                tran.Commit();

                return(FindById(toInsert.Id));
            }
        }
Example #2
0
        private async void BookCreateForm_Load(object sender, EventArgs e)
        {
            var Genres = await DbGenre.GetGenres();

            foreach (string Genre in Genres)
            {
                cmbWriterGenre.Items.Add(Genre);
            }
        }
Example #3
0
        public async Task PopulateBooks()
        {
            var dbCtx = new LibraryDbContext();

            var genre1 = new DbGenre()
            {
                Genre = "Education"
            };

            var hashtagAgile = new DbHashtag()
            {
                Hastag = "#agile"
            };
            var hashtagCosmos = new DbHashtag()
            {
                Hastag = "#cosmos"
            };
            var hashtagCoding = new DbHashtag()
            {
                Hastag = "#coding"
            };

            var book1 = new DbBook()
            {
                Title    = "Clean Code: A Handbook of Agile Software Craftmanship",
                Author   = "Robert C. Martin",
                Hashtags = new List <DbHashtag>()
            };

            var book2 = new DbBook()
            {
                Title    = "Cosmos",
                Author   = "Carl Sagan",
                Hashtags = new List <DbHashtag>()
            };

            dbCtx.Books.Add(book1);
            dbCtx.Books.Add(book2);
            dbCtx.Genres.Add(genre1);
            dbCtx.Hashtags.Add(hashtagAgile);
            dbCtx.Hashtags.Add(hashtagCosmos);
            dbCtx.Hashtags.Add(hashtagCoding);

            book1.Genre = genre1;
            book1.Hashtags.Add(hashtagAgile);
            book1.Hashtags.Add(hashtagCoding);

            book2.Genre = genre1;
            book1.Hashtags.Add(hashtagCosmos);

            await dbCtx.SaveChangesAsync();
        }
Example #4
0
        private async void BookUpdateForm_Load(object sender, EventArgs e)
        {
            var Genres = await DbGenre.GetGenres();

            foreach (string Genre in Genres)
            {
                cmbWriterGenre.Items.Add(Genre);
                if (Book.Genre == Genre)
                {
                    cmbWriterGenre.SelectedItem = Genre;
                }
            }
        }
Example #5
0
        public Genre Insert(CreateGenre value)
        {
            using (var tran = db.Database.BeginTransaction(System.Data.IsolationLevel.RepeatableRead))
            {
                if (db.Genres.Any(t => EF.Functions.Like(t.Name, value.Name)))
                {
                    throw new ArgumentException("name must be unique");
                }

                var toInsert = new DbGenre()
                {
                    Name = value.Name
                };
                db.Genres.Add(toInsert);

                db.SaveChanges();
                tran.Commit();

                return(ToModel(toInsert));
            }
        }
        private async Task <DbGenre> CreateGenre(string name)
        {
            var dbGenre = await _context.Genres.FirstOrDefaultAsync(x => x.Name == name);

            if (dbGenre == null)
            {
                var newGenre = new DbGenre()
                {
                    Name       = name,
                    CreatedUtc = DateTime.UtcNow,
                    UpdatedUtc = DateTime.UtcNow
                };
                _context.Genres.Add(newGenre);
                await _context.SaveChangesAsync();

                return(newGenre);
            }
            else
            {
                return(dbGenre);
            }
        }
        public async Task <GenreDetail> AddAsync(string genre)
        {
            var dbGenre = await _context.Genres.SingleOrDefaultAsync(x => x.Name == genre);

            if (dbGenre == null)
            {
                dbGenre = new DbGenre()
                {
                    Name       = genre,
                    CreatedUtc = DateTime.UtcNow
                };
                _context.Genres.Add(dbGenre);
                await _context.SaveChangesAsync();

                return(new GenreDetail()
                {
                    Name = dbGenre.Name,
                    TotalAlbums = 0,
                    TotalArtists = 0,
                    Created = new DateTime(dbGenre.CreatedUtc.Ticks, DateTimeKind.Utc)
                });
            }
            else
            {
                var numAlbums = await _context.Genres.Where(g => g.Name == genre).SelectMany(x => x.AlbumGenres).CountAsync(x => x.Album.PublishStatus == DbPublishedStatus.PUBLISHED);

                var numArtists = await _context.Genres.Where(g => g.Name == genre).SelectMany(x => x.ArtistGenres).CountAsync(x => x.Artist.PublishStatus == DbPublishedStatus.PUBLISHED);

                return(new GenreDetail()
                {
                    Name = dbGenre.Name,
                    TotalAlbums = numAlbums,
                    TotalArtists = numArtists,
                    Created = new DateTime(dbGenre.CreatedUtc.Ticks, DateTimeKind.Utc)
                });
            }
        }
Example #8
0
 /// <summary>
 /// gets a list of all genres
 /// </summary>
 /// <returns>list of all genres</returns>
 public static List <Genre> AllGenres()
 {
     return((from DataRow row in DbGenre.AllGenres().Rows select new Genre(row)).ToList());
 }
Example #9
0
 /// <summary>
 /// inserts a game genre connection
 /// </summary>
 /// <param name="genre">genre object</param>
 /// <param name="gameId">id of game</param>
 /// <returns></returns>
 public static int InsertGameGenre(Genre genre, int gameId)
 {
     return(DbGenre.InsertGameGenre(genre.Id, gameId));
 }
Example #10
0
 /// <summary>
 /// gets genre by id
 /// </summary>
 /// <param name="id">id of genre</param>
 public Genre(int id) : this(DbGenre.GetGenre(id))
 {
 }
Example #11
0
 /// <summary>
 /// clears all genres from game
 /// </summary>
 /// <param name="game">id of game</param>
 public static void ClearGenres(int game)
 {
     DbGenre.DeleteGenresForGame(game);
 }
Example #12
0
 /// <summary>
 /// inserts a genre into the database
 /// </summary>
 /// <param name="genreName">name of genres</param>
 public Genre(string genreName)
 {
     GenreName = genreName;
     Id        = DbGenre.InsertGenre(GenreName);
 }
Example #13
0
 public void UpdateGenre(DbGenre genre)
 {
     _genreRepository.Update(genre);
     _unitOfWork.Commit();
 }
Example #14
0
 public void CreateGenre(DbGenre genre)
 {
     _genreRepository.Add(genre);
     _unitOfWork.Commit();
 }
Example #15
0
 private Genre ToModel(DbGenre value)
 {
     return(new Genre(value.Id, value.Name));
 }