added endpoint to download portfolio piece by id of a seller

This commit is contained in:
Damien Ostler 2024-02-11 02:00:57 -05:00
parent 23890f294e
commit bb1ffe8578

View File

@ -3,6 +3,7 @@ using comissions.app.api.Models.SellerService;
using ArtPlatform.Database; using ArtPlatform.Database;
using comissions.app.api.Models.Discovery; using comissions.app.api.Models.Discovery;
using comissions.app.api.Models.PortfolioModel; using comissions.app.api.Models.PortfolioModel;
using comissions.app.api.Services.Storage;
using comissions.app.database; using comissions.app.database;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -14,10 +15,12 @@ namespace comissions.app.api.Controllers;
public class DiscoveryController : Controller public class DiscoveryController : Controller
{ {
private readonly ApplicationDbContext _dbContext; private readonly ApplicationDbContext _dbContext;
private readonly IStorageService _storageService;
public DiscoveryController(ApplicationDbContext dbContext) public DiscoveryController(ApplicationDbContext dbContext, IStorageService storageService)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_storageService = storageService;
} }
@ -78,6 +81,24 @@ public class DiscoveryController : Controller
return Ok(sellerPortfolio); return Ok(sellerPortfolio);
} }
[HttpGet]
[Route("Sellers/{sellerId:int}/Portfolio/{portfolioId:int}")]
public async Task<IActionResult> GetSellerPortfolioPiece(int sellerId, int portfolioId)
{
var seller = await _dbContext.UserSellerProfiles
.Include(x=>x.User)
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if(seller==null)
return NotFound("Seller not found.");
var sellerPortfolio = await _dbContext.SellerProfilePortfolioPieces
.FirstOrDefaultAsync(x=>x.Id==portfolioId);
if(sellerPortfolio==null)
return NotFound("Portfolio piece not found.");
var content = await _storageService.DownloadImageAsync(sellerPortfolio.FileReference);
return new FileStreamResult(content, "application/octet-stream");
}
[HttpGet] [HttpGet]
[Route("Sellers/{sellerId:int}/Reviews")] [Route("Sellers/{sellerId:int}/Reviews")]
public async Task<IActionResult> GetSellerReviews(int sellerId, int offset = 0, int pageSize = 10) public async Task<IActionResult> GetSellerReviews(int sellerId, int offset = 0, int pageSize = 10)