✨ Update sticker controller
This commit is contained in:
@@ -70,13 +70,13 @@ public class StickerController(AppDatabase db, StickerService st, FileService.Fi
|
|||||||
var accountId = Guid.Parse(currentUser.Id);
|
var accountId = Guid.Parse(currentUser.Id);
|
||||||
|
|
||||||
var ownershipsId = await db.StickerPackOwnerships
|
var ownershipsId = await db.StickerPackOwnerships
|
||||||
.Where(p => p.AccountId == accountId)
|
.Where(p => p.AccountId == accountId)
|
||||||
.Select(p => p.PackId)
|
.Select(p => p.PackId)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
var packs = await db.StickerPacks
|
var packs = await db.StickerPacks
|
||||||
.Where(p => ownershipsId.Contains(p.Id))
|
.Where(p => ownershipsId.Contains(p.Id))
|
||||||
.Include(p => p.Stickers)
|
.Include(p => p.Stickers)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
return Ok(packs);
|
return Ok(packs);
|
||||||
}
|
}
|
||||||
@@ -339,6 +339,21 @@ public class StickerController(AppDatabase db, StickerService st, FileService.Fi
|
|||||||
return Ok(sticker);
|
return Ok(sticker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("{packId:guid}/own")]
|
||||||
|
[Authorize]
|
||||||
|
public async Task<ActionResult<StickerPackOwnership>> GetStickerPackOwnership(Guid packId)
|
||||||
|
{
|
||||||
|
if (HttpContext.Items["CurrentUser"] is not Account currentUser)
|
||||||
|
return Unauthorized();
|
||||||
|
var accountId = Guid.Parse(currentUser.Id);
|
||||||
|
|
||||||
|
var ownership = await db.StickerPackOwnerships
|
||||||
|
.Where(p => p.PackId == packId && p.AccountId == accountId)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
if (ownership is null) return NotFound();
|
||||||
|
return Ok(ownership);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("{packId:guid}/own")]
|
[HttpPost("{packId:guid}/own")]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public async Task<ActionResult<StickerPackOwnership>> AcquireStickerPack([FromRoute] Guid packId)
|
public async Task<ActionResult<StickerPackOwnership>> AcquireStickerPack([FromRoute] Guid packId)
|
||||||
@@ -347,10 +362,15 @@ public class StickerController(AppDatabase db, StickerService st, FileService.Fi
|
|||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
|
|
||||||
var pack = await db.StickerPacks
|
var pack = await db.StickerPacks
|
||||||
.Where(p => p.Id == packId)
|
.Where(p => p.Id == packId)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
if (pack is null) return NotFound();
|
if (pack is null) return NotFound();
|
||||||
|
|
||||||
|
var existingOwnership = await db.StickerPackOwnerships
|
||||||
|
.Where(p => p.PackId == packId && p.AccountId == Guid.Parse(currentUser.Id))
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
if (existingOwnership is not null) return Ok(existingOwnership);
|
||||||
|
|
||||||
var ownership = new StickerPackOwnership
|
var ownership = new StickerPackOwnership
|
||||||
{
|
{
|
||||||
PackId = packId,
|
PackId = packId,
|
||||||
@@ -371,8 +391,8 @@ public class StickerController(AppDatabase db, StickerService st, FileService.Fi
|
|||||||
var accountId = Guid.Parse(currentUser.Id);
|
var accountId = Guid.Parse(currentUser.Id);
|
||||||
|
|
||||||
var ownership = await db.StickerPackOwnerships
|
var ownership = await db.StickerPackOwnerships
|
||||||
.Where(p => p.PackId == packId && p.AccountId == accountId)
|
.Where(p => p.PackId == packId && p.AccountId == accountId)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
if (ownership is null) return NotFound();
|
if (ownership is null) return NotFound();
|
||||||
|
|
||||||
db.Remove(ownership);
|
db.Remove(ownership);
|
||||||
@@ -380,4 +400,4 @@ public class StickerController(AppDatabase db, StickerService st, FileService.Fi
|
|||||||
|
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user