mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-08-02 10:08:39 +00:00
Remove most duplicated code
This commit is contained in:
parent
0ba95c32f8
commit
ace4ef8f5b
1 changed files with 96 additions and 186 deletions
|
@ -91,7 +91,15 @@ namespace LBPUnion.ProjectLighthouse.Controllers
|
||||||
|
|
||||||
[HttpGet("slots/lbp2cool")]
|
[HttpGet("slots/lbp2cool")]
|
||||||
[HttpGet("slots/cool")]
|
[HttpGet("slots/cool")]
|
||||||
public async Task<IActionResult> CoolSlots([FromQuery] int pageStart, [FromQuery] int pageSize, [FromQuery] string gameFilterType, [FromQuery] int players, [FromQuery] Boolean move, [FromQuery] int? page = null)
|
public async Task<IActionResult> CoolSlots
|
||||||
|
(
|
||||||
|
[FromQuery] int pageStart,
|
||||||
|
[FromQuery] int pageSize,
|
||||||
|
[FromQuery] string gameFilterType,
|
||||||
|
[FromQuery] int players,
|
||||||
|
[FromQuery] Boolean move,
|
||||||
|
[FromQuery] int? page = null
|
||||||
|
)
|
||||||
{
|
{
|
||||||
int _pageStart = pageStart;
|
int _pageStart = pageStart;
|
||||||
if (page != null) _pageStart = (int)page * 30;
|
if (page != null) _pageStart = (int)page * 30;
|
||||||
|
@ -206,65 +214,19 @@ namespace LBPUnion.ProjectLighthouse.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("slots/thumbs")]
|
[HttpGet("slots/thumbs")]
|
||||||
public async Task<IActionResult> ThumbsSlots([FromQuery] int pageStart, [FromQuery] int pageSize, [FromQuery] string gameFilterType, [FromQuery] int players, [FromQuery] Boolean move, [FromQuery] string? dateFilterType = null)
|
public async Task<IActionResult> ThumbsSlots
|
||||||
|
(
|
||||||
|
[FromQuery] int pageStart,
|
||||||
|
[FromQuery] int pageSize,
|
||||||
|
[FromQuery] string gameFilterType,
|
||||||
|
[FromQuery] int players,
|
||||||
|
[FromQuery] Boolean move,
|
||||||
|
[FromQuery] string? dateFilterType = null
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
Random rand = new();
|
||||||
|
|
||||||
|
IEnumerable<Slot> slots = FilterByRequest(gameFilterType, dateFilterType)
|
||||||
long oldestTime;
|
|
||||||
|
|
||||||
string _dateFilterType = dateFilterType != null ? dateFilterType : "";
|
|
||||||
|
|
||||||
switch (_dateFilterType)
|
|
||||||
{
|
|
||||||
case "thisWeek":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
case "thisMonth":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
oldestTime = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Random rand = new(); GameVersion gameVersion;
|
|
||||||
|
|
||||||
switch (gameFilterType)
|
|
||||||
{
|
|
||||||
case "lbp1":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet1;
|
|
||||||
break;
|
|
||||||
case "lbp2":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
case "lbp3":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet3;
|
|
||||||
break;
|
|
||||||
case "both": // LBP2 default option
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
gameVersion = GameVersion.Unknown;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
IQueryable<Slot> whereSlots;
|
|
||||||
|
|
||||||
if (gameFilterType == "both")
|
|
||||||
{
|
|
||||||
// Get game versions less than the current version
|
|
||||||
// Needs support for LBP3 ("both" = LBP1+2)
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get game versions exactly equal to gamefiltertype
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerable<Slot> slots = whereSlots
|
|
||||||
.Include(s => s.Creator)
|
|
||||||
.Include(s => s.Location)
|
|
||||||
.AsEnumerable()
|
.AsEnumerable()
|
||||||
.OrderByDescending(s => s.Thumbsup)
|
.OrderByDescending(s => s.Thumbsup)
|
||||||
.ThenBy(_ => rand.Next())
|
.ThenBy(_ => rand.Next())
|
||||||
|
@ -277,84 +239,35 @@ namespace LBPUnion.ProjectLighthouse.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("slots/mostUniquePlays")]
|
[HttpGet("slots/mostUniquePlays")]
|
||||||
public async Task<IActionResult> MostUniquePlaysSlots([FromQuery] int pageStart, [FromQuery] int pageSize, [FromQuery] string gameFilterType, [FromQuery] int players, [FromQuery] Boolean move, [FromQuery] string? dateFilterType = null)
|
public async Task<IActionResult> MostUniquePlaysSlots
|
||||||
|
(
|
||||||
|
[FromQuery] int pageStart,
|
||||||
|
[FromQuery] int pageSize,
|
||||||
|
[FromQuery] string gameFilterType,
|
||||||
|
[FromQuery] int players,
|
||||||
|
[FromQuery] Boolean move,
|
||||||
|
[FromQuery] string? dateFilterType = null
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
long oldestTime;
|
|
||||||
|
|
||||||
string _dateFilterType = dateFilterType != null ? dateFilterType : "";
|
|
||||||
|
|
||||||
switch (_dateFilterType)
|
|
||||||
{
|
|
||||||
case "thisWeek":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
case "thisMonth":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
oldestTime = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Random rand = new();
|
Random rand = new();
|
||||||
|
|
||||||
GameVersion gameVersion;
|
IEnumerable<Slot> slots = FilterByRequest(gameFilterType, dateFilterType)
|
||||||
|
|
||||||
switch (gameFilterType)
|
|
||||||
{
|
|
||||||
case "lbp1":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet1;
|
|
||||||
break;
|
|
||||||
case "lbp2":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
case "lbp3":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet3;
|
|
||||||
break;
|
|
||||||
case "both": // LBP2 default option
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
gameVersion = GameVersion.Unknown;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
IQueryable<Slot> whereSlots;
|
|
||||||
|
|
||||||
if (gameFilterType == "both")
|
|
||||||
{
|
|
||||||
// Get game versions less than the current version
|
|
||||||
// Needs support for LBP3 ("both" = LBP1+2)
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get game versions exactly equal to gamefiltertype
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerable<Slot> slots = whereSlots
|
|
||||||
.Include(s => s.Creator)
|
|
||||||
.Include(s => s.Location)
|
|
||||||
.AsEnumerable()
|
.AsEnumerable()
|
||||||
.OrderByDescending(s =>
|
.OrderByDescending
|
||||||
{
|
(
|
||||||
// probably not the best way to do this?
|
s =>
|
||||||
switch (gameVersion)
|
|
||||||
{
|
{
|
||||||
case GameVersion.LittleBigPlanet1:
|
// probably not the best way to do this?
|
||||||
return s.PlaysLBP1Unique;
|
return GetGameFilter(gameFilterType) switch
|
||||||
case GameVersion.LittleBigPlanet2:
|
{
|
||||||
return s.PlaysLBP2Unique;
|
GameVersion.LittleBigPlanet1 => s.PlaysLBP1Unique,
|
||||||
case GameVersion.LittleBigPlanet3:
|
GameVersion.LittleBigPlanet2 => s.PlaysLBP2Unique,
|
||||||
return s.PlaysLBP3Unique;
|
GameVersion.LittleBigPlanet3 => s.PlaysLBP3Unique,
|
||||||
case GameVersion.LittleBigPlanetVita:
|
GameVersion.LittleBigPlanetVita => s.PlaysLBPVitaUnique,
|
||||||
return s.PlaysLBPVitaUnique;
|
_ => s.PlaysUnique,
|
||||||
default:
|
};
|
||||||
return s.PlaysUnique;
|
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
.ThenBy(_ => rand.Next())
|
.ThenBy(_ => rand.Next())
|
||||||
.Skip(pageStart - 1)
|
.Skip(pageStart - 1)
|
||||||
.Take(Math.Min(pageSize, 30));
|
.Take(Math.Min(pageSize, 30));
|
||||||
|
@ -365,64 +278,19 @@ namespace LBPUnion.ProjectLighthouse.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("slots/mostHearted")]
|
[HttpGet("slots/mostHearted")]
|
||||||
public async Task<IActionResult> MostHeartedSlots([FromQuery] int pageStart, [FromQuery] int pageSize, [FromQuery] string gameFilterType, [FromQuery] int players, [FromQuery] Boolean move, [FromQuery] string? dateFilterType = null)
|
public async Task<IActionResult> MostHeartedSlots
|
||||||
|
(
|
||||||
|
[FromQuery] int pageStart,
|
||||||
|
[FromQuery] int pageSize,
|
||||||
|
[FromQuery] string gameFilterType,
|
||||||
|
[FromQuery] int players,
|
||||||
|
[FromQuery] Boolean move,
|
||||||
|
[FromQuery] string? dateFilterType = null
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
Random rand = new();
|
||||||
|
|
||||||
long oldestTime;
|
IEnumerable<Slot> slots = FilterByRequest(gameFilterType, dateFilterType)
|
||||||
|
|
||||||
string _dateFilterType = dateFilterType != null ? dateFilterType : "";
|
|
||||||
|
|
||||||
switch (_dateFilterType)
|
|
||||||
{
|
|
||||||
case "thisWeek":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
case "thisMonth":
|
|
||||||
oldestTime = DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
oldestTime = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Random rand = new(); GameVersion gameVersion;
|
|
||||||
|
|
||||||
switch (gameFilterType)
|
|
||||||
{
|
|
||||||
case "lbp1":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet1;
|
|
||||||
break;
|
|
||||||
case "lbp2":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
case "lbp3":
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet3;
|
|
||||||
break;
|
|
||||||
case "both": // LBP2 default option
|
|
||||||
gameVersion = GameVersion.LittleBigPlanet2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
gameVersion = GameVersion.Unknown;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
IQueryable<Slot> whereSlots;
|
|
||||||
|
|
||||||
if (gameFilterType == "both")
|
|
||||||
{
|
|
||||||
// Get game versions less than the current version
|
|
||||||
// Needs support for LBP3 ("both" = LBP1+2)
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get game versions exactly equal to gamefiltertype
|
|
||||||
whereSlots = this.database.Slots.Where(s => s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerable<Slot> slots = whereSlots
|
|
||||||
.Include(s => s.Creator)
|
|
||||||
.Include(s => s.Location)
|
|
||||||
.AsEnumerable()
|
.AsEnumerable()
|
||||||
.OrderByDescending(s => s.Hearts)
|
.OrderByDescending(s => s.Hearts)
|
||||||
.ThenBy(_ => rand.Next())
|
.ThenBy(_ => rand.Next())
|
||||||
|
@ -434,5 +302,47 @@ namespace LBPUnion.ProjectLighthouse.Controllers
|
||||||
return this.Ok(LbpSerializer.TaggedStringElement("slots", response, "hint_start", pageStart + Math.Min(pageSize, 30)));
|
return this.Ok(LbpSerializer.TaggedStringElement("slots", response, "hint_start", pageStart + Math.Min(pageSize, 30)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GameVersion GetGameFilter(string gameFilterType)
|
||||||
|
{
|
||||||
|
return gameFilterType switch
|
||||||
|
{
|
||||||
|
"lbp1" => GameVersion.LittleBigPlanet1,
|
||||||
|
"lbp2" => GameVersion.LittleBigPlanet2,
|
||||||
|
"lbp3" => GameVersion.LittleBigPlanet3,
|
||||||
|
"both" => GameVersion.LittleBigPlanet2, // LBP2 default option
|
||||||
|
_ => GameVersion.Unknown,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public IQueryable<Slot> FilterByRequest(string gameFilterType, string? dateFilterType)
|
||||||
|
{
|
||||||
|
string _dateFilterType = dateFilterType ?? "";
|
||||||
|
|
||||||
|
long oldestTime = _dateFilterType switch
|
||||||
|
{
|
||||||
|
"thisWeek" => DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds(),
|
||||||
|
"thisMonth" => DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds(),
|
||||||
|
_ => 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
GameVersion gameVersion = GetGameFilter(gameFilterType);
|
||||||
|
|
||||||
|
IQueryable<Slot> whereSlots;
|
||||||
|
|
||||||
|
// ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
|
||||||
|
if (gameFilterType == "both")
|
||||||
|
{
|
||||||
|
// Get game versions less than the current version
|
||||||
|
// Needs support for LBP3 ("both" = LBP1+2)
|
||||||
|
whereSlots = this.database.Slots.Where(s => s.GameVersion <= gameVersion && s.FirstUploaded >= oldestTime);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Get game versions exactly equal to gamefiltertype
|
||||||
|
whereSlots = this.database.Slots.Where(s => s.GameVersion == gameVersion && s.FirstUploaded >= oldestTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
return whereSlots.Include(s => s.Creator).Include(s => s.Location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue