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