public virtual async Task <TModel> Insert(TInsert request) { var entity = _mapper.Map <TDatabase>(request); _context.Set <TDatabase>().Add(entity); await _context.SaveChangesAsync(); return(_mapper.Map <TModel>(entity)); }
public override async Task <Model.Genre> Insert(GenreUpsertRequest request) { if (await _context.Genres.AnyAsync(i => i.Name == request.Name)) { throw new UserException("Genre already exists!"); } var entity = _mapper.Map <Database.Genre>(request); _context.Set <Database.Genre>().Add(entity); await _context.SaveChangesAsync(); return(_mapper.Map <Model.Genre>(entity)); }
public override async Task <Model.Playlist> Insert(PlaylistUpsertRequest request) { var entity = _mapper.Map <Database.Playlist>(request); await _context.Playlists.AddAsync(entity); await _context.SaveChangesAsync(); foreach (var trackID in request.Tracks) { var playlistTrack = new Database.PlaylistTrack() { PlaylistID = entity.ID, TrackID = trackID }; await _context.PlaylistTracks.AddAsync(playlistTrack); } await _context.SaveChangesAsync(); return(_mapper.Map <Model.Playlist>(entity)); }
public override async Task <Model.Album> Insert(AlbumUpsertRequest request) { var entity = _mapper.Map <Database.Album>(request); await _context.Albums.AddAsync(entity); await _context.SaveChangesAsync(); foreach (var trackID in request.Tracks) { var albumTrack = new Database.AlbumTrack() { AlbumID = entity.ID, TrackID = trackID }; _context.AlbumTracks.Add(albumTrack); } await _context.SaveChangesAsync(); return(_mapper.Map <Model.Album>(entity)); }
public override async Task <Model.Track> Insert(TrackUpsertRequest request) { var entity = _mapper.Map <Database.Track>(request); await _context.Tracks.AddAsync(entity); await _context.SaveChangesAsync(); var mainTrackArtist = new Database.TrackArtist() { TrackID = entity.ID, ArtistID = request.MainArtist, TrackArtistRole = TrackArtistRole.Main }; await _context.TrackArtists.AddAsync(mainTrackArtist); await _context.SaveChangesAsync(); foreach (var ArtistID in request.FeaturedArtists) { var trackArtist = new Database.TrackArtist() { TrackID = entity.ID, ArtistID = ArtistID, TrackArtistRole = TrackArtistRole.Feature }; await _context.TrackArtists.AddAsync(trackArtist); } foreach (var GenreID in request.Genres) { var trackGenre = new Database.TrackGenre() { TrackID = entity.ID, GenreID = GenreID }; await _context.TrackGenres.AddAsync(trackGenre); } await _context.SaveChangesAsync(); return(_mapper.Map <Model.Track>(entity)); }
public override async Task <Model.User> Insert(UserInsertRequest request) { if (request.Password != request.PasswordConfirmation) { throw new Exception("Passwords do not match!"); } if (!await IsEmailUnique(request.Email)) { throw new UserException("Email is taken!"); } if (!await IsUsernameUnique(request.Username)) { throw new UserException("Username is taken"); } var entity = _mapper.Map <Database.User>(request); entity.PasswordSalt = HashHelper.GenerateSalt(); entity.PasswordHash = HashHelper.GenerateHash(entity.PasswordSalt, request.Password); await _context.Users.AddAsync(entity); await _context.SaveChangesAsync(); foreach (var roleID in request.Roles) { var role = new Database.UserRole() { UserID = entity.ID, RoleID = roleID }; await _context.UserRoles.AddAsync(role); } await _context.SaveChangesAsync(); return(_mapper.Map <Model.User>(entity)); }