diff --git a/API/Controllers/ReaderController.cs b/API/Controllers/ReaderController.cs
index e3927146b..020e67c0b 100644
--- a/API/Controllers/ReaderController.cs
+++ b/API/Controllers/ReaderController.cs
@@ -239,5 +239,80 @@ namespace API.Controllers
return BadRequest("Could not save progress");
}
+
+ ///
+ /// Returns the next logical volume from the series.
+ ///
+ ///
+ ///
+ ///
+ /// chapter id for next manga
+ [HttpGet("next-chapter")]
+ public async Task> GetNextChapter(int seriesId, int volumeId, int currentChapterId)
+ {
+ var user = await _unitOfWork.UserRepository.GetUserByUsernameAsync(User.GetUsername());
+ var volumes = await _unitOfWork.SeriesRepository.GetVolumesDtoAsync(seriesId, user.Id);
+ var currentVolume = await _unitOfWork.SeriesRepository.GetVolumeAsync(volumeId);
+
+ var next = false;
+ if (currentVolume.Number == 0)
+ {
+ foreach (var chapter in currentVolume.Chapters)
+ {
+ if (next)
+ {
+ return Ok(chapter.Id);
+ }
+ if (currentChapterId == chapter.Id) next = true;
+ }
+ }
+
+ foreach (var volume in volumes)
+ {
+ if (volume.Number == currentVolume.Number + 1)
+ {
+ return Ok(volume.Chapters.FirstOrDefault()?.Id);
+ }
+ }
+ return Ok(-1);
+ }
+
+ ///
+ /// Returns the previous logical volume from the series.
+ ///
+ ///
+ ///
+ /// chapter id for next manga
+ [HttpGet("prev-chapter")]
+ public async Task> GetPreviousChapter(int seriesId, int volumeId, int currentChapterId)
+ {
+ var user = await _unitOfWork.UserRepository.GetUserByUsernameAsync(User.GetUsername());
+ var volumes = await _unitOfWork.SeriesRepository.GetVolumesDtoAsync(seriesId, user.Id);
+ var currentVolume = await _unitOfWork.SeriesRepository.GetVolumeAsync(volumeId);
+
+ var next = false;
+ if (currentVolume.Number == 0)
+ {
+ var chapters = currentVolume.Chapters.Reverse();
+ foreach (var chapter in chapters)
+ {
+ if (next)
+ {
+ return Ok(chapter.Id);
+ }
+ if (currentChapterId == chapter.Id) next = true;
+ }
+ }
+
+ foreach (var volume in volumes.Reverse())
+ {
+ if (volume.Number == currentVolume.Number - 1)
+ {
+ return Ok(volume.Chapters.LastOrDefault()?.Id);
+ }
+ }
+ return Ok(-1);
+ }
+
}
}
\ No newline at end of file
diff --git a/API/Controllers/SeriesController.cs b/API/Controllers/SeriesController.cs
index 01737dfef..caa69b15f 100644
--- a/API/Controllers/SeriesController.cs
+++ b/API/Controllers/SeriesController.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using API.DTOs;
using API.Entities;
@@ -89,18 +90,7 @@ namespace API.Controllers
return Ok(await _unitOfWork.VolumeRepository.GetChapterDtoAsync(chapterId));
}
- ///
- /// Returns the next logical volume from the series.
- ///
- ///
- ///
- /// chapter id for next manga
- [HttpGet("next-volume")]
- public async Task> GetNextChapter(int seriesId, int volumeId)
- {
-
- return Ok();
- }
+
[HttpPost("update-rating")]