diff --git a/GanjooRazor/Areas/User/Pages/ReviewSongs.cshtml b/GanjooRazor/Areas/User/Pages/ReviewSongs.cshtml
index cb0e7934..1b68d75e 100644
--- a/GanjooRazor/Areas/User/Pages/ReviewSongs.cshtml
+++ b/GanjooRazor/Areas/User/Pages/ReviewSongs.cshtml
@@ -31,6 +31,9 @@ else
@Model.Poem.FullTitle
+
+
+
|
diff --git a/GanjooRazor/appsettings.json b/GanjooRazor/appsettings.json
index 656f883e..24839963 100644
--- a/GanjooRazor/appsettings.json
+++ b/GanjooRazor/appsettings.json
@@ -9,5 +9,5 @@
"AllowedHosts": "*",
"GoogleAnalyticsCode": "",
"APIRoot": "http://localhost:3439",
- "GlobalAPIRoot": "https://ganjgah.ir"
+ "GlobalAPIRoot": "http://localhost:3439"
}
diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs
index 01ada746..94fbc553 100644
--- a/RMuseum/Services/Implementation/GanjoorService.cs
+++ b/RMuseum/Services/Implementation/GanjoorService.cs
@@ -1435,7 +1435,7 @@ namespace RMuseum.Services.Implementation
{
return new RServiceResult(null, "مشخصات قطعهٔ گلها درست نیست.");
}
- var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && t.GolhaTrackId == song.GolhaTrackId).FirstOrDefaultAsync();
+ var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.AsNoTracking().Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && t.GolhaTrackId == song.GolhaTrackId && (t.Approved || (!t.Approved && !t.Rejected) )).FirstOrDefaultAsync();
if (alreadySuggestedSong != null)
{
return new RServiceResult(null, "این آهنگ پیشتر برای این شعر پیشنهاد داده شده است.");
@@ -1450,7 +1450,7 @@ namespace RMuseum.Services.Implementation
}
else
{
- var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && t.TrackUrl == song.TrackUrl).FirstOrDefaultAsync();
+ var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.AsNoTracking().Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && (t.TrackUrl == song.TrackUrl || t.TrackUrl == song.TrackUrl.Replace("https", "http")) && (t.Approved || (!t.Approved && !t.Rejected))).FirstOrDefaultAsync();
if (alreadySuggestedSong != null)
{
return new RServiceResult(null, "این آهنگ پیشتر برای این شعر پیشنهاد داده شده است.");
@@ -1492,6 +1492,7 @@ namespace RMuseum.Services.Implementation
_context.GanjoorPoemMusicTracks.Update(sug);
await _context.SaveChangesAsync();
song.Id = sug.Id;
+
return new RServiceResult(song);
}
catch (Exception exp)
@@ -1577,6 +1578,27 @@ namespace RMuseum.Services.Implementation
if (song.Approved && song.Rejected)
return new RServiceResult(null, "song.Approved && song.Rejected");
+ if(song.Approved)
+ {
+ if (song.TrackType == PoemMusicTrackType.Golha)
+ {
+ var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.AsNoTracking().Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && t.GolhaTrackId == song.GolhaTrackId && t.Approved).FirstOrDefaultAsync();
+ if (alreadySuggestedSong != null)
+ {
+ return new RServiceResult(null, "این آهنگ پیشتر برای این شعر تأیید شده است.");
+ }
+ }
+ else
+ {
+ var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.AsNoTracking().Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && (t.TrackUrl == song.TrackUrl || t.TrackUrl == song.TrackUrl.Replace("https", "http")) && t.Approved).FirstOrDefaultAsync();
+ if (alreadySuggestedSong != null)
+ {
+ return new RServiceResult(null, "این آهنگ پیشتر برای این شعر تأیید شده است.");
+ }
+ }
+ }
+
+
var track = await _context.GanjoorPoemMusicTracks.Where(t => t.Id == song.Id).SingleOrDefaultAsync();
track.TrackType = song.TrackType;
@@ -1594,6 +1616,11 @@ namespace RMuseum.Services.Implementation
track.Rejected = song.Rejected;
track.RejectionCause = song.RejectionCause;
track.BrokenLink = song.BrokenLink;
+ if(track.TrackType == PoemMusicTrackType.Golha)
+ {
+ track.GolhaTrackId = song.GolhaTrackId;
+ }
+
GanjoorSinger singer = await _context.GanjoorSingers.Where(s => s.Url == track.ArtistUrl).FirstOrDefaultAsync();
if (singer != null)