@model BCards.Web.ViewModels.DashboardViewModel @{ ViewData["Title"] = "Dashboard - BCards"; Layout = "_Layout"; }

Olá, @Model.CurrentUser.Name!

Gerencie suas páginas profissionais

@if (!string.IsNullOrEmpty(Model.CurrentUser.ProfileImage)) { @Model.CurrentUser.Name }
@foreach (var pageItem in Model.UserPages) {
@(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) { 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 break; case BCards.Web.ViewModels.PageStatus.Rejected: Rejeitada break; case BCards.Web.ViewModels.PageStatus.Creating: Criando break; }
@if (Model.CurrentPlan.AllowsAnalytics) {
@(pageItem.TotalViews)
Visualizações
@(pageItem.TotalClicks)
Cliques
}
@if (pageItem.Status == BCards.Web.ViewModels.PageStatus.Active) { Ver } else if (pageItem.Status == BCards.Web.ViewModels.PageStatus.Creating || pageItem.Status == BCards.Web.ViewModels.PageStatus.Rejected || pageItem.Status == BCards.Web.ViewModels.PageStatus.PendingModeration) { }
@if ((pageItem.LastModerationStatus ?? pageItem.Status) == BCards.Web.ViewModels.PageStatus.Creating) {
Página em criação! Você pode editar e fazer preview quantas vezes quiser.
Ao terminar, clique em para enviar a página para moderação!
} } @if (Model.CanCreateNewPage) {
Criar Nova Página
Começar
} 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
} else {
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; }
Links por página: @(Model.CurrentPlan.MaxLinksPerPage == int.MaxValue ? "Ilimitado" : Model.CurrentPlan.MaxLinksPerPage.ToString())
Analytics: @(Model.CurrentPlan.AllowsAnalytics ? "✅" : "❌")
Temas customizáveis: @(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
@Model.UserPages.Sum(p => p.TotalViews)
Total de Visualizações
@Model.UserPages.Sum(p => p.TotalClicks)
Total de Cliques
@if (Model.UserPages.Sum(p => p.TotalViews) > 0) {
@((Model.UserPages.Sum(p => p.TotalClicks) * 100.0 / Model.UserPages.Sum(p => p.TotalViews)).ToString("F1"))%
Taxa de Cliques
}
}
💡 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
@section Scripts { } @if (TempData["Success"] != null) {
} @if (TempData["Error"] != null) {
}