mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-19 18:11:36 +01:00
d5d0be5824
* Editorconfig: Add space_before_self_closing setting This was a difference between the way dotnet-format and Rider format code. See https://www.jetbrains.com/help/rider/EditorConfig_Index.html * Editorconfig: Keep 4 spaces indentation for Swagger JSON files They are all formatted that way, let's keep it like that. * Apply dotnet-format, mostly white-space related changes
66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using BTCPayServer.Abstractions.Constants;
|
|
using BTCPayServer.Client;
|
|
using BTCPayServer.Components.AppSales;
|
|
using BTCPayServer.Components.AppTopItems;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace BTCPayServer.Controllers
|
|
{
|
|
public partial class UIAppsController
|
|
{
|
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
|
[HttpGet("{appId}/dashboard/app-top-items")]
|
|
public IActionResult AppTopItems(string appId)
|
|
{
|
|
var app = HttpContext.GetAppData();
|
|
if (app == null)
|
|
return NotFound();
|
|
|
|
app.StoreData = GetCurrentStore();
|
|
|
|
var vm = new AppTopItemsViewModel { App = app };
|
|
return ViewComponent("AppTopItems", new { vm });
|
|
}
|
|
|
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
|
[HttpGet("{appId}/dashboard/app-sales")]
|
|
public IActionResult AppSales(string appId)
|
|
{
|
|
var app = HttpContext.GetAppData();
|
|
if (app == null)
|
|
return NotFound();
|
|
|
|
app.StoreData = GetCurrentStore();
|
|
|
|
var vm = new AppSalesViewModel { App = app };
|
|
return ViewComponent("AppSales", new { vm });
|
|
}
|
|
|
|
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
|
[HttpGet("{appId}/dashboard/app-sales/{period}")]
|
|
public async Task<IActionResult> AppSales(string appId, AppSalesPeriod period)
|
|
{
|
|
var app = HttpContext.GetAppData();
|
|
if (app == null)
|
|
return NotFound();
|
|
|
|
app.StoreData = GetCurrentStore();
|
|
|
|
var days = period switch
|
|
{
|
|
AppSalesPeriod.Week => 7,
|
|
AppSalesPeriod.Month => 30,
|
|
_ => throw new ArgumentException($"AppSalesPeriod {period} does not exist.")
|
|
};
|
|
var stats = await _appService.GetSalesStats(app, days);
|
|
|
|
return stats == null
|
|
? NotFound()
|
|
: Json(stats);
|
|
}
|
|
}
|
|
}
|