From 7cc8f46a1a912c01f3f17c51a09a8542c1ca9e6f Mon Sep 17 00:00:00 2001 From: Ricardo Carneiro Date: Sun, 31 Aug 2025 02:34:39 -0300 Subject: [PATCH] fix: ajustes no dashboard --- src/BCards.Web/Views/Admin/Dashboard.cshtml | 650 ++++++++------------ 1 file changed, 259 insertions(+), 391 deletions(-) diff --git a/src/BCards.Web/Views/Admin/Dashboard.cshtml b/src/BCards.Web/Views/Admin/Dashboard.cshtml index b15f863..c944abc 100644 --- a/src/BCards.Web/Views/Admin/Dashboard.cshtml +++ b/src/BCards.Web/Views/Admin/Dashboard.cshtml @@ -2,6 +2,7 @@ @{ ViewData["Title"] = "Dashboard - BCards"; Layout = "_Layout"; + var pageInCreation = Model.UserPages.FirstOrDefault(p => (p.LastModerationStatus ?? p.Status) == BCards.Web.ViewModels.PageStatus.Creating); }
@@ -15,12 +16,33 @@
@if (!string.IsNullOrEmpty(Model.CurrentUser.ProfileImage)) { - @Model.CurrentUser.Name + @Model.CurrentUser.Name }
+ + @if (pageInCreation != null) + { +
+
+

+ +

+
+
+ Você pode editar e testar sua página "@pageInCreation.DisplayName" quantas vezes quiser. + Ao terminar, use os botões no card da página para enviá-la para moderação. +
Dica: Ao segurar o dedo sobre um botão, uma dica será exibida. +
+
+
+
+ } +
@foreach (var pageItem in Model.UserPages) @@ -32,53 +54,35 @@ @(pageItem.DisplayName)
@Html.AntiForgeryToken() -
-

@(pageItem.Category)/@(pageItem.Slug)

- @{ - var pageStatus = pageItem.Status; - if (pageItem.Status == BCards.Web.ViewModels.PageStatus.Inactive) - { - if (pageItem.LastModerationStatus.HasValue) - { - pageStatus = pageItem.LastModerationStatus.Value; - } - } - } - @switch (pageStatus) + @switch (pageItem.LastModerationStatus ?? pageItem.Status) { case BCards.Web.ViewModels.PageStatus.Active: Ativa break; - case BCards.Web.ViewModels.PageStatus.Expired: - Expirada - break; - case BCards.Web.ViewModels.PageStatus.PendingPayment: - Pagamento Pendente - break; - case BCards.Web.ViewModels.PageStatus.Inactive: - Inativa - break; case BCards.Web.ViewModels.PageStatus.PendingModeration: - Aguardando + Aguardando Moderação break; case BCards.Web.ViewModels.PageStatus.Rejected: Rejeitada break; case BCards.Web.ViewModels.PageStatus.Creating: - - Criando - + Em Criação + break; + default: + @pageItem.Status break; }
+ @if (Model.CurrentPlan.AllowsAnalytics) {
@@ -92,151 +96,51 @@
} - - - - - @if ((pageItem.LastModerationStatus ?? pageItem.Status) == BCards.Web.ViewModels.PageStatus.Creating) - { -
-
- -
- Página em criação! - Você pode editar e testar quantas vezes quiser.
- Ao terminar, clique em para enviar a página para moderação! - -
-
-
- - - } - } - + @if (Model.CanCreateNewPage) { @@ -246,8 +150,7 @@
Criar Nova Página
- Começar + Começar
@@ -255,121 +158,89 @@ } else if (!Model.UserPages.Any()) { -
-
- 🚀 -
+
🚀

Crie sua primeira página!

-

- Comece criando sua página profissional personalizada com seus links organizados. -

- - Criar Minha Página - +

Comece criando sua página profissional personalizada com seus links organizados.

+ Criar Minha Página
} else { -
- Limite atingido! - Você já criou o máximo de @Model.CurrentPlan.MaxPages página(s) para seu plano atual. + Limite atingido! Você já criou o máximo de @Model.CurrentPlan.MaxPages página(s) para seu plano atual. Fazer upgrade
} -
- -
-
-
- - Plano Atual -
-
-
-
@Model.CurrentPlan.Name
- - @if (Model.CurrentPlan.Type == BCards.Web.Models.PlanType.Trial) - { -

- - @Model.DaysRemaining dia(s) restante(s) -

- } - else - { -

R$ @Model.CurrentPlan.Price.ToString("F2")/mês

- } - -
-
- Páginas - @Model.UserPages.Count/@Model.CurrentPlan.MaxPages -
-
- @{ - var pagesPercentage = Model.CurrentPlan.MaxPages > 0 ? - (double)Model.UserPages.Count / Model.CurrentPlan.MaxPages * 100 : 0; + +
+
+
+

+ +

+
+
+
+
@Model.CurrentPlan.Name
+ @if (Model.CurrentPlan.Type == BCards.Web.Models.PlanType.Trial) + { +

@Model.DaysRemaining dia(s) restante(s)

+ } + else + { +

R$ @Model.CurrentPlan.Price.ToString("F2")/mês

+ } +
+
+ Páginas + @Model.UserPages.Count/@Model.CurrentPlan.MaxPages +
+
+ @{ + var pagesPercentage = Model.CurrentPlan.MaxPages > 0 ? (double)Model.UserPages.Count / Model.CurrentPlan.MaxPages * 100 : 0; + } +
+
+
+
Links por página: @(Model.CurrentPlan.MaxLinksPerPage == int.MaxValue ? "Ilimitado" : Model.CurrentPlan.MaxLinksPerPage.ToString()) +
+
Analytics: @(Model.CurrentPlan.AllowsAnalytics ? "✅" : "❌")
+
Temas premium: @(Model.CurrentPlan.AllowsCustomThemes ? "✅" : "❌")
+ @if (Model.CurrentPlan.Type == BCards.Web.Models.PlanType.Trial) + { + Fazer Upgrade + } + else + { + Gerenciar Assinatura } -
- -
- - Links por página: @(Model.CurrentPlan.MaxLinksPerPage == int.MaxValue ? "Ilimitado" : Model.CurrentPlan.MaxLinksPerPage.ToString()) -
-
- - Analytics: @(Model.CurrentPlan.AllowsAnalytics ? "✅" : "❌") -
-
- - Temas premium: @(Model.CurrentPlan.AllowsCustomThemes ? "✅" : "❌") -
- - @if (Model.CurrentPlan.Type == BCards.Web.Models.PlanType.Trial) - { - - - Fazer Upgrade - - } - else - { - - - Gerenciar Assinatura - - }
- + @if (Model.CurrentPlan.AllowsAnalytics && Model.UserPages.Any()) {
-
-
- - Estatísticas Gerais -
-
+
Estatísticas Gerais
@@ -385,46 +256,22 @@ {
-
- @((Model.UserPages.Sum(p => p.TotalClicks) * 100.0 / Model.UserPages.Sum(p => p.TotalViews)).ToString("F1"))% -
+
@((Model.UserPages.Sum(p => p.TotalClicks) * 100.0 / Model.UserPages.Sum(p => p.TotalViews)).ToString("F1"))%
Taxa de Cliques
}
} - -
-
-
- - 💡 Dicas -
-
+
💡 Dicas
    -
  • - - Use uma bio clara e objetiva -
  • -
  • - - Organize seus links por importância -
  • -
  • - - Escolha URLs fáceis de lembrar -
  • -
  • - - Atualize regularmente seus links -
  • -
  • - - Monitore suas estatísticas -
  • +
  • Use uma bio clara e objetiva
  • +
  • Organize seus links por importância
  • +
  • Escolha URLs fáceis de lembrar
  • +
  • Atualize regularmente seus links
  • +
  • Monitore suas estatísticas
@@ -434,135 +281,156 @@ @section Scripts { } @@ -596,4 +464,4 @@ function getOrCreateToastContainer() {
-} +} \ No newline at end of file