mirror of
https://github.com/D4M13N-D3V/comissions-app-core-api.git
synced 2025-03-14 10:04:55 +00:00
fix: added a endpoint to get artist stats.
This commit is contained in:
parent
3b40237bdb
commit
f322ee6ab6
@ -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")]
|
||||
|
@ -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>();
|
||||
}
|
@ -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()
|
||||
|
@ -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; }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user