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")]