Implement photos with user

This commit is contained in:
jvyden 2021-11-07 16:39:58 -05:00
commit 632e430b36
No known key found for this signature in database
GPG key ID: 18BCF2BE0262B278
3 changed files with 57 additions and 37 deletions

View file

@ -72,14 +72,13 @@ namespace LBPUnion.ProjectLighthouse.Controllers
}
[HttpGet("photos/by")]
public async Task<IActionResult> UserPhotos([FromQuery] string user, [FromQuery] int pageStart, [FromQuery] int pageSize)
public async Task<IActionResult> UserPhotosBy([FromQuery] string user, [FromQuery] int pageStart, [FromQuery] int pageSize)
{
User? userFromQuery = await this.database.Users.FirstOrDefaultAsync(u => u.Username == user);
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
if (user == null) return this.NotFound();
List<Photo> photos = await this.database.Photos.Where
(p => p.CreatorId == userFromQuery.UserId)
List<Photo> photos = await this.database.Photos.Where(p => p.CreatorId == userFromQuery.UserId)
.OrderByDescending(s => s.Timestamp)
.Skip(pageStart - 1)
.Take(Math.Min(pageSize, 30))
@ -87,5 +86,27 @@ namespace LBPUnion.ProjectLighthouse.Controllers
string response = photos.Aggregate(string.Empty, (s, photo) => s + photo.Serialize(0));
return this.Ok(LbpSerializer.StringElement("photos", response));
}
[HttpGet("photos/with")]
public async Task<IActionResult> UserPhotosWith([FromQuery] string user, [FromQuery] int pageStart, [FromQuery] int pageSize)
{
User? userFromQuery = await this.database.Users.FirstOrDefaultAsync(u => u.Username == user);
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
if (user == null) return this.NotFound();
List<Photo> photos = new();
foreach (Photo photo in this.database.Photos)
{
photos.AddRange(photo.Subjects.Where(subject => subject.User.UserId == userFromQuery.UserId).Select(_ => photo));
}
string response = photos.OrderByDescending
(s => s.Timestamp)
.Skip(pageStart - 1)
.Take(Math.Min(pageSize, 30))
.Aggregate(string.Empty, (s, photo) => s + photo.Serialize(0));
return this.Ok(LbpSerializer.StringElement("photos", response));
}
}
}