fix: added a endpoint to get artist stats.

This commit is contained in:
Damien Ostler 2024-02-24 23:46:07 -05:00
parent 3b40237bdb
commit f322ee6ab6
4 changed files with 41 additions and 0 deletions

View File

@ -49,6 +49,24 @@ public class ArtistController : Controller
return Ok(result);
}
[HttpGet]
[Authorize("read:artist")]
[Route("Stats")]
public async Task<IActionResult> GetArtistStats()
{
var userId = User.GetUserId();
var Artist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if(Artist==null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
var result = Artist.ToStatsModel();
return Ok(result);
}
[HttpPut]
[Authorize("write:artist")]
public async Task<IActionResult> UpdateArtist(ArtistModel model)
@ -111,6 +129,7 @@ public class ArtistController : Controller
return Ok(result);
}
[HttpPut]
[Authorize("write:artist")]
[Route("Page")]

View File

@ -25,6 +25,7 @@ public record UserArtist
public virtual User User { get; set; } = null!;
public int ArtistPageSettingsId { get; set; }
public virtual ICollection<Request> Requests { get; set; } = new List<Request>();
public virtual ArtistPageSettings ArtistPageSettings { get; set; } = null!;
public virtual ICollection<ArtistPortfolioPiece> PortfolioPieces { get; set; } = new List<ArtistPortfolioPiece>();
}

View File

@ -5,6 +5,17 @@ namespace comissions.app.api.Models.Artist;
public static class ArtistModelExtensions
{
public static ArtistStatsModel ToStatsModel(this UserArtist sellerProfile)
{
return new ArtistStatsModel()
{
AcceptedRequests = sellerProfile.Requests.Select(x=>x.Accepted).Count(),
DeclinedRequests = sellerProfile.Requests.Select(x=>x.Declined).Count(),
CompletedRequests = sellerProfile.Requests.Select(x=>x.Completed).Count(),
PendingRequests = sellerProfile.Requests.Where(x=>!x.Accepted && !x.Declined && !x.Completed).Count(),
Revenue = sellerProfile.Requests.Sum(x=>x.Amount)
};
}
public static ArtistModel ToModel(this UserArtist sellerProfile)
{
return new ArtistModel()

View File

@ -0,0 +1,10 @@
namespace comissions.app.api.Models.Artist;
public class ArtistStatsModel
{
public int AcceptedRequests { get; set; }
public int DeclinedRequests { get; set; }
public int CompletedRequests { get; set; }
public int PendingRequests { get; set; }
public decimal Revenue { get; set; }
}