From 7a505ba6ee1db23da9dc13461be6d4a02cd33838 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Fri, 18 Feb 2022 08:12:50 +0330 Subject: [PATCH] docs: #283 adding service methods --- RMuseum/RMuseum.xml | 42 ++++++++ RMuseum/Services/IGanjoorService.cs | 22 +++++ .../GanjoorService-Songs.cs | 98 +++++++++++++++++++ 3 files changed, 162 insertions(+) diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 7b19a977..e717acbb 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -10155,6 +10155,27 @@ + + + get song by id + + + + + + + modify a published song + + + + + + + delete poem song by id + + + + new comment @@ -12205,6 +12226,27 @@ + + + get song by id + + + + + + + modify a published song + + + + + + + delete poem song by id + + + + start generating gdb files diff --git a/RMuseum/Services/IGanjoorService.cs b/RMuseum/Services/IGanjoorService.cs index 2ad38682..ceaffe93 100644 --- a/RMuseum/Services/IGanjoorService.cs +++ b/RMuseum/Services/IGanjoorService.cs @@ -286,6 +286,28 @@ namespace RMuseum.Services /// Task> DirectInsertSong(PoemMusicTrackViewModel song); + /// + /// get song by id + /// + /// + /// + + Task> GetPoemSongById(int id); + + /// + /// modify a published song + /// + /// + /// + Task> ModifyPublishedSong(PoemMusicTrackViewModel song); + + /// + /// delete poem song by id + /// + /// + /// + Task> DeletePoemSongById(int id); + /// /// new comment /// diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-Songs.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-Songs.cs index d558f303..9615adec 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-Songs.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-Songs.cs @@ -385,5 +385,103 @@ namespace RMuseum.Services.Implementation return new RServiceResult(song); } + /// + /// get song by id + /// + /// + /// + + public async Task> GetPoemSongById(int id) + { + return new RServiceResult + ( + await _context.GanjoorPoemMusicTracks + .Where + ( + t => t.Id == id + ) + .OrderBy(t => t.SongOrder) + .Select + ( + t => new PoemMusicTrackViewModel() + { + Id = t.Id, + PoemId = t.PoemId, + TrackType = t.TrackType, + ArtistName = t.ArtistName, + ArtistUrl = t.ArtistUrl, + AlbumName = t.AlbumName, + AlbumUrl = t.AlbumUrl, + TrackName = t.TrackName, + TrackUrl = t.TrackUrl, + Description = t.Description, + BrokenLink = t.BrokenLink, + GolhaTrackId = t.GolhaTrackId == null ? 0 : (int)t.GolhaTrackId, + Approved = t.Approved, + Rejected = t.Rejected, + RejectionCause = t.RejectionCause + + } + ).AsNoTracking().SingleOrDefaultAsync() + ) ; + } + + /// + /// modify a published song + /// + /// + /// + public async Task> ModifyPublishedSong(PoemMusicTrackViewModel song) + { + if (!song.Approved ) + return new RServiceResult(null, "!song.Approved "); + + + var track = await _context.GanjoorPoemMusicTracks.Where(t => t.Id == song.Id).SingleOrDefaultAsync(); + + track.TrackType = song.TrackType; + track.ArtistName = song.ArtistName; + track.ArtistUrl = song.ArtistUrl; + track.AlbumName = song.AlbumName; + track.AlbumUrl = song.AlbumUrl; + track.TrackName = song.TrackName; + track.TrackUrl = song.TrackUrl; + track.BrokenLink = song.BrokenLink; + + GanjoorSinger singer = await _context.GanjoorSingers.AsNoTracking().Where(s => s.Url == track.ArtistUrl).FirstOrDefaultAsync(); + if (singer != null) + { + track.SingerId = singer.Id; + } + + _context.GanjoorPoemMusicTracks.Update(track); + + await _context.SaveChangesAsync(); + + await CacheCleanForPageById(track.PoemId); + + return new RServiceResult(song); + } + + /// + /// delete poem song by id + /// + /// + /// + public async Task> DeletePoemSongById(int id) + { + try + { + var song = await _context.GanjoorPoemMusicTracks.Where(t => t.Id == id).SingleAsync(); + _context.Remove(song); + await _context.SaveChangesAsync(); + return new RServiceResult(true); + } + catch (Exception exp) + { + return new RServiceResult(false, exp.ToString()); + } + } + } }