This commit is contained in:
Joseph Milazzo 2021-05-10 09:50:26 -05:00 committed by GitHub
parent ecc399b32a
commit 6fc5e535df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -254,9 +254,10 @@ namespace API.Controllers
var volumes = await _unitOfWork.SeriesRepository.GetVolumesDtoAsync(seriesId, user.Id);
var currentVolume = await _unitOfWork.SeriesRepository.GetVolumeAsync(volumeId);
var next = false;
if (currentVolume.Number == 0)
{
var next = false;
foreach (var chapter in currentVolume.Chapters)
{
if (next)
@ -265,11 +266,20 @@ namespace API.Controllers
}
if (currentChapterId == chapter.Id) next = true;
}
var chapterId = GetNextChapterId(currentVolume.Chapters, currentChapterId);
if (chapterId > 0) return Ok(chapterId);
}
foreach (var volume in volumes)
{
if (volume.Number == currentVolume.Number + 1)
if (volume.Number == currentVolume.Number && volume.Chapters.Count > 1)
{
var chapterId = GetNextChapterId(currentVolume.Chapters, currentChapterId);
if (chapterId > 0) return Ok(chapterId);
}
if (volume.Number == currentVolume.Number)
{
return Ok(volume.Chapters.FirstOrDefault()?.Id);
}
@ -277,6 +287,36 @@ namespace API.Controllers
return Ok(-1);
}
private int GetNextChapterId(Volume currentVolume, int currentChapterId)
{
var next = false;
foreach (var chapter in currentVolume.Chapters)
{
if (next)
{
return chapter.Id;
}
if (currentChapterId == chapter.Id) next = true;
}
return -1;
}
private int GetNextChapterId(IEnumerable<Chapter> chapters, int currentChapterId)
{
var next = false;
foreach (var chapter in chapters)
{
if (next)
{
return chapter.Id;
}
if (currentChapterId == chapter.Id) next = true;
}
return -1;
}
/// <summary>
/// Returns the previous logical volume from the series.
/// </summary>
@ -291,22 +331,20 @@ namespace API.Controllers
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;
}
var chapterId = GetNextChapterId(currentVolume.Chapters.Reverse(), currentChapterId);
if (chapterId > 0) return Ok(chapterId);
}
foreach (var volume in volumes.Reverse())
{
if (volume.Number == currentVolume.Number)
{
var chapterId = GetNextChapterId(currentVolume.Chapters.Reverse(), currentChapterId);
if (chapterId > 0) return Ok(chapterId);
}
if (volume.Number == currentVolume.Number - 1)
{
return Ok(volume.Chapters.LastOrDefault()?.Id);