parent
ecc399b32a
commit
6fc5e535df
1 changed files with 50 additions and 12 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue