diff --git a/RMuseum/Models/Ganjoor/GanjoorUserPoemVisit.cs b/RMuseum/Models/Ganjoor/GanjoorUserPoemVisit.cs index 06513a7f..b72e2b8e 100644 --- a/RMuseum/Models/Ganjoor/GanjoorUserPoemVisit.cs +++ b/RMuseum/Models/Ganjoor/GanjoorUserPoemVisit.cs @@ -37,5 +37,10 @@ namespace RMuseum.Models.Ganjoor /// date/time /// public DateTime DateTime { get; set; } + + /// + /// counter of visits (1 for first and ...) + /// + public int Counter { get; set; } } } diff --git a/RMuseum/Services/IUserVisitsTrackingService.cs b/RMuseum/Services/IUserVisitsTrackingService.cs index 6b408da9..7f557feb 100644 --- a/RMuseum/Services/IUserVisitsTrackingService.cs +++ b/RMuseum/Services/IUserVisitsTrackingService.cs @@ -16,7 +16,7 @@ namespace RMuseum.Services /// /// /// - Task> AddAsync(Guid userId, int poemId); + Task> AddAsync(Guid userId, int poemId); /// /// delete record diff --git a/RMuseum/Services/Implementation/UserVisitsTrackingService.cs b/RMuseum/Services/Implementation/UserVisitsTrackingService.cs index db94a909..76b5155c 100644 --- a/RMuseum/Services/Implementation/UserVisitsTrackingService.cs +++ b/RMuseum/Services/Implementation/UserVisitsTrackingService.cs @@ -22,31 +22,37 @@ namespace RMuseum.Services.Implementation /// /// /// - /// - public async Task> AddAsync(Guid userId, int poemId) + /// previous visit date/time if any + public async Task> AddAsync(Guid userId, int poemId) { bool keepHistory = false; var kRes = await _optionsService.GetValueAsync("KeepHistory", userId, null); if (!string.IsNullOrEmpty(kRes.Result)) bool.TryParse(kRes.Result, out keepHistory); if (!keepHistory) - return new RServiceResult(false); + return new RServiceResult(null); + var oldTracks = await _context.GanjoorUserPoemVisits.Where(v => v.PoemId == poemId && v.UserId == userId).ToArrayAsync(); + int count = oldTracks.Any() ? oldTracks.Last().Counter : 0; + DateTime? preVisit = oldTracks.Any() ? oldTracks.Last().DateTime : null; _context.RemoveRange(oldTracks); await _context.SaveChangesAsync(); + count++; + GanjoorUserPoemVisit visit = new GanjoorUserPoemVisit() { UserId = userId, PoemId = poemId, - DateTime = DateTime.Now + DateTime = DateTime.Now, + Counter = count, }; _context.Add(visit); await _context.SaveChangesAsync(); - return new RServiceResult(true); + return new RServiceResult(preVisit); } ///