feat: melhorias em emails, traduções e página de pricing
This commit is contained in:
parent
b14ff0ab89
commit
d1ab280997
52
DKIM_DNS_ATUALIZADO.txt
Normal file
52
DKIM_DNS_ATUALIZADO.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
|
⚠️ AÇÃO URGENTE: ATUALIZAR REGISTRO DKIM NO DNS
|
||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
O DKIM atual no DNS está DESATUALIZADO! Por isso emails vão para spam.
|
||||||
|
|
||||||
|
REGISTRO ATUAL (ERRADO - remover):
|
||||||
|
Nome: default._domainkey.cnxifly.com
|
||||||
|
Valor: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1A8I6ZHyZ0PYdOjB2BSQbH8q6WOJ2dO2zHiIn/bolAGl5ITo5hfn3Zv2fpHBMzcWbDITugSQFuQ3XJeF6oBNdWVvBqnEvI8pCJWzzhZ8Oj9rU+mEPOhIcmmDU6kHCTOFWFxgxbLd2es34rmts06xpF7nI4mWuJq8VVtkrqT0UkZNjjZrNO9KXfdTzV3pP0IEZA+KJlYqVDwnALL62z6GT9xAQi2eytoRSXbTzGDC4+kNXE3v2zMB5+CY9CbH3LZ7SFoJUQJCTf43zc4ea+nWsE/Y2DR5ky2hSwOh7FRJ2nXV07N2VlLu9LekZl08q9G49mwEY6ORT0aShL7RYsNTKQIDAQAB
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
NOVO REGISTRO (CORRETO - adicionar):
|
||||||
|
Nome: default._domainkey.cnxifly.com
|
||||||
|
Tipo: TXT
|
||||||
|
Valor (copiar em UMA ÚNICA LINHA):
|
||||||
|
|
||||||
|
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyeq8zM0lP2+9kPqH4E9B64rl1nhhga4aCgErcSLNpTWSOpYPxOzWAEsnwVGz/gJGyXiwix+RGN/jxks61nzmik4MslvdxmMABmZ1ERtAoqmO7noThf3LLJbMqYFaGKgYRCpetSZDpQZARlRdzmCTnNVgYsex4gMry4sJocIKbePec8kY3Ps1d4f0LZAp0jH0FufX3V842P8j/96VOdX2U1v8OrnqQWtqteajfMCa/lguHEyYM2ZtV+g4VZZKJgk3UoqwDV3JKwBoxxi17SoedjoXtsNEwaXFPTuOrNOQAqe2iHgMR9949YXbAHxoUA9TOaByOXp9ZmVzmUMfRLk5LwIDAQAB
|
||||||
|
|
||||||
|
TTL: 3600
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
PASSOS PARA ATUALIZAR:
|
||||||
|
|
||||||
|
1. Acesse o painel DNS (UI-DNS ou onde gerencia cnxifly.com)
|
||||||
|
2. Localize o registro: default._domainkey.cnxifly.com
|
||||||
|
3. EDITE (não delete e crie novo) o valor para o novo acima
|
||||||
|
4. Salve as alterações
|
||||||
|
5. Aguarde 5-10 minutos para propagação
|
||||||
|
|
||||||
|
TESTAR APÓS ATUALIZAÇÃO:
|
||||||
|
opendkim-testkey -d cnxifly.com -s default -vvv
|
||||||
|
|
||||||
|
Deve retornar: "key OK"
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
CAUSA DO PROBLEMA:
|
||||||
|
- Servidor foi reinstalado/reconfigurado em 7 de dezembro
|
||||||
|
- Nova chave DKIM foi gerada, mas DNS não foi atualizado
|
||||||
|
- Emails assinados com chave nova, mas DNS tem chave antiga
|
||||||
|
- Servidores destinatários (iCloud, Gmail) rejeitam como spam
|
||||||
|
|
||||||
|
IMPACTO:
|
||||||
|
- Emails de ativação não chegam (vão para spam/lixeira)
|
||||||
|
- Emails de notificação são bloqueados
|
||||||
|
- Reputação do domínio está comprometida
|
||||||
|
|
||||||
|
URGÊNCIA: ALTA - Atualizar imediatamente!
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════════════════
|
||||||
@ -31,7 +31,11 @@ public function requestDeletionCode(Request $request)
|
|||||||
Cache::put($cacheKey, $code, now()->addMinutes(10));
|
Cache::put($cacheKey, $code, now()->addMinutes(10));
|
||||||
|
|
||||||
// Enviar email
|
// Enviar email
|
||||||
Mail::to($user->email)->send(new AccountDeletionConfirmation($code, $user->name));
|
Mail::to($user->email)->send(new AccountDeletionConfirmation(
|
||||||
|
$code,
|
||||||
|
$user->name,
|
||||||
|
$user->locale ?? $user->language ?? 'pt-BR'
|
||||||
|
));
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
@ -55,33 +59,20 @@ public function exportBackup(Request $request)
|
|||||||
try {
|
try {
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
// Coletar todos os dados do usuário
|
// Coletar todos os dados do usuário (apenas relações existentes)
|
||||||
$backup = [
|
$backup = [
|
||||||
'version' => '1.0',
|
'version' => '1.0',
|
||||||
'exported_at' => now()->toISOString(),
|
'exported_at' => now()->toISOString(),
|
||||||
'user' => [
|
'user' => [
|
||||||
'name' => $user->name,
|
'name' => $user->name,
|
||||||
'email' => $user->email,
|
'email' => $user->email,
|
||||||
|
'locale' => $user->locale ?? $user->language ?? 'pt-BR',
|
||||||
],
|
],
|
||||||
'accounts' => $user->accounts()->with('currency')->get(),
|
'accounts' => $user->accounts()->get()->makeHidden(['user']),
|
||||||
'asset_accounts' => $user->assetAccounts()->with('assetType')->get(),
|
'categories' => $user->categories()->get()->makeHidden(['user']),
|
||||||
'categories' => $user->categories()->get(),
|
'budgets' => $user->budgets()->get()->makeHidden(['user']),
|
||||||
'cost_centers' => $user->costCenters()->with('keywords')->where('is_system', false)->get(),
|
'transactions' => $user->transactions()->get()->makeHidden(['user']),
|
||||||
'credit_cards' => $user->creditCards()->with('account')->get(),
|
'goals' => $user->goals()->get()->makeHidden(['user']),
|
||||||
'liability_accounts' => $user->liabilityAccounts()->get(),
|
|
||||||
'budgets' => $user->budgets()->with(['category', 'subcategory'])->get(),
|
|
||||||
'goals' => $user->goals()->get(),
|
|
||||||
'investments' => $user->investments()->with(['assetAccount', 'investmentType', 'priceHistories'])->get(),
|
|
||||||
'transactions' => $user->transactions()
|
|
||||||
->with([
|
|
||||||
'account',
|
|
||||||
'category',
|
|
||||||
'subcategory',
|
|
||||||
'costCenter',
|
|
||||||
'creditCard',
|
|
||||||
'liabilityAccount'
|
|
||||||
])
|
|
||||||
->get(),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Gerar nome do arquivo
|
// Gerar nome do arquivo
|
||||||
@ -89,7 +80,13 @@ public function exportBackup(Request $request)
|
|||||||
|
|
||||||
// Salvar temporariamente
|
// Salvar temporariamente
|
||||||
$filePath = 'backups/' . $fileName;
|
$filePath = 'backups/' . $fileName;
|
||||||
Storage::disk('local')->put($filePath, json_encode($backup, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
$jsonData = json_encode($backup, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||||
|
|
||||||
|
if ($jsonData === false) {
|
||||||
|
throw new \Exception('Erro ao serializar dados: ' . json_last_error_msg());
|
||||||
|
}
|
||||||
|
|
||||||
|
Storage::disk('local')->put($filePath, $jsonData);
|
||||||
|
|
||||||
// Retornar URL para download
|
// Retornar URL para download
|
||||||
return response()->json([
|
return response()->json([
|
||||||
@ -100,10 +97,16 @@ public function exportBackup(Request $request)
|
|||||||
'expires_in' => '24 horas'
|
'expires_in' => '24 horas'
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
\Log::error('Export backup error', [
|
||||||
|
'user_id' => Auth::id(),
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'trace' => $e->getTraceAsString()
|
||||||
|
]);
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'message' => 'Erro ao criar backup',
|
'message' => 'Erro ao criar backup',
|
||||||
'error' => $e->getMessage()
|
'error' => config('app.debug') ? $e->getMessage() : 'Erro interno'
|
||||||
], 500);
|
], 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,25 +10,17 @@
|
|||||||
class PlanController extends Controller
|
class PlanController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* List all plans for pricing page (including coming soon)
|
* List all plans for pricing page
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
// Get active plans
|
// Get only active plans
|
||||||
$activePlans = Plan::active()->ordered()->get();
|
$plans = Plan::active()->ordered()->get();
|
||||||
|
|
||||||
// Get coming soon plans (inactive but should be displayed)
|
|
||||||
$comingSoonPlans = Plan::where('is_active', false)
|
|
||||||
->whereIn('slug', ['business'])
|
|
||||||
->ordered()
|
|
||||||
->get();
|
|
||||||
|
|
||||||
$allPlans = $activePlans->merge($comingSoonPlans);
|
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'data' => [
|
'data' => [
|
||||||
'plans' => $allPlans->map(function ($plan) {
|
'plans' => $plans->map(function ($plan) {
|
||||||
return [
|
return [
|
||||||
'id' => $plan->id,
|
'id' => $plan->id,
|
||||||
'slug' => $plan->slug,
|
'slug' => $plan->slug,
|
||||||
|
|||||||
@ -14,14 +14,16 @@ class AccountDeletionConfirmation extends Mailable
|
|||||||
|
|
||||||
public $code;
|
public $code;
|
||||||
public $userName;
|
public $userName;
|
||||||
|
public $userLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new message instance.
|
* Create a new message instance.
|
||||||
*/
|
*/
|
||||||
public function __construct($code, $userName)
|
public function __construct($code, $userName, $userLocale = 'pt-BR')
|
||||||
{
|
{
|
||||||
$this->code = $code;
|
$this->code = $code;
|
||||||
$this->userName = $userName;
|
$this->userName = $userName;
|
||||||
|
$this->userLocale = $userLocale;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,111 +1,46 @@
|
|||||||
<!DOCTYPE html>
|
@extends('emails.layouts.base')
|
||||||
<html lang="pt-BR">
|
|
||||||
<head>
|
@php $locale = $userLocale ?? 'pt-BR'; @endphp
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
@section('title')
|
||||||
<title>Código de Confirmação</title>
|
@if($locale === 'pt-BR')
|
||||||
<style>
|
Confirmação de Eliminação de Conta
|
||||||
body {
|
@elseif($locale === 'en')
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
Account Deletion Confirmation
|
||||||
background-color: #f4f4f4;
|
@else
|
||||||
margin: 0;
|
Confirmación de Eliminación de Cuenta
|
||||||
padding: 0;
|
@endif
|
||||||
}
|
@endsection
|
||||||
.container {
|
|
||||||
max-width: 600px;
|
@section('content')
|
||||||
margin: 40px auto;
|
@if($locale === 'pt-BR')
|
||||||
background-color: #ffffff;
|
{{-- Portuguese (Brazil) --}}
|
||||||
border-radius: 8px;
|
<p class="greeting">Olá, {{ $userName }}</p>
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||||
}
|
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||||
.header {
|
<p class="status-title" style="margin-bottom: 15px;">CÓDIGO DE CONFIRMAÇÃO</p>
|
||||||
background: linear-gradient(135deg, #dc3545 0%, #c82333 100%);
|
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||||
color: white;
|
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||||
padding: 30px;
|
{{ $code }}
|
||||||
text-align: center;
|
</div>
|
||||||
}
|
</div>
|
||||||
.header h1 {
|
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||||
margin: 0;
|
Válido por 10 minutos
|
||||||
font-size: 24px;
|
</p>
|
||||||
}
|
</div>
|
||||||
.content {
|
|
||||||
padding: 40px 30px;
|
<div class="status-card warning">
|
||||||
}
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ ATENÇÃO - AÇÃO IRREVERSÍVEL</p>
|
||||||
.warning-box {
|
<p style="color: #78350f; margin: 0;">
|
||||||
background-color: #fff3cd;
|
Esta ação <strong>NÃO pode ser desfeita</strong>. Uma vez confirmada, todos os seus dados serão
|
||||||
border-left: 4px solid #ffc107;
|
permanentemente deletados dos nossos servidores sem possibilidade de recuperação.
|
||||||
padding: 15px;
|
</p>
|
||||||
margin: 20px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.warning-box strong {
|
|
||||||
color: #856404;
|
|
||||||
}
|
|
||||||
.code-box {
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
border: 2px solid #dc3545;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 20px;
|
|
||||||
text-align: center;
|
|
||||||
margin: 30px 0;
|
|
||||||
}
|
|
||||||
.code {
|
|
||||||
font-size: 36px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #dc3545;
|
|
||||||
letter-spacing: 8px;
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
.info-text {
|
|
||||||
color: #6c757d;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
padding: 20px;
|
|
||||||
text-align: center;
|
|
||||||
color: #6c757d;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
.danger-list {
|
|
||||||
background-color: #f8d7da;
|
|
||||||
border-left: 4px solid #dc3545;
|
|
||||||
padding: 15px;
|
|
||||||
margin: 20px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.danger-list ul {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
.danger-list li {
|
|
||||||
color: #721c24;
|
|
||||||
margin: 5px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="header">
|
|
||||||
<h1>⚠️ EXCLUSÃO PERMANENTE DE CONTA</h1>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p>Olá, <strong>{{ $userName }}</strong></p>
|
<p><strong>🗑️ Serão deletados permanentemente:</strong></p>
|
||||||
|
<ul class="info-list">
|
||||||
<p class="info-text">
|
|
||||||
Você solicitou a exclusão <strong>PERMANENTE E IRREVERSÍVEL</strong> de sua conta no WebMoney.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="warning-box">
|
|
||||||
<strong>⚠️ ATENÇÃO:</strong> Esta ação NÃO pode ser desfeita. Uma vez confirmada, todos os seus dados serão permanentemente deletados dos nossos servidores sem possibilidade de recuperação.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="danger-list">
|
|
||||||
<strong>🗑️ Serão deletados permanentemente:</strong>
|
|
||||||
<ul>
|
|
||||||
<li>Todas as transações</li>
|
<li>Todas as transações</li>
|
||||||
<li>Todas as contas bancárias e de ativos</li>
|
<li>Todas as contas bancárias e de ativos</li>
|
||||||
<li>Todos os cartões de crédito e contas de passivos</li>
|
<li>Todos os cartões de crédito e contas de passivos</li>
|
||||||
@ -118,33 +53,133 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="info-text">
|
<div class="status-card info">
|
||||||
Para confirmar esta ação, utilize o código abaixo:
|
<p class="status-title" style="margin-bottom: 10px;">🔒 Não foi você?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
Se você não solicitou esta exclusão, ignore este email e sua conta permanecerá intacta.
|
||||||
|
Recomendamos alterar sua senha imediatamente por segurança.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="code-box">
|
|
||||||
<div style="font-size: 14px; color: #6c757d; margin-bottom: 10px;">
|
|
||||||
SEU CÓDIGO DE CONFIRMAÇÃO
|
|
||||||
</div>
|
</div>
|
||||||
<div class="code">{{ $code }}</div>
|
|
||||||
<div style="font-size: 12px; color: #6c757d; margin-top: 10px;">
|
<div class="status-card info">
|
||||||
|
<p class="status-title" style="margin-bottom: 10px;">💾 Quer fazer backup?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
Antes de confirmar a exclusão, você pode exportar todos os seus dados para um arquivo JSON
|
||||||
|
e importá-los posteriormente em uma nova conta.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@elseif($locale === 'en')
|
||||||
|
{{-- English --}}
|
||||||
|
<p class="greeting">Hello, {{ $userName }}</p>
|
||||||
|
|
||||||
|
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||||
|
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||||
|
<p class="status-title" style="margin-bottom: 15px;">CONFIRMATION CODE</p>
|
||||||
|
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||||
|
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||||
|
{{ $code }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||||
|
Valid for 10 minutes
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card warning">
|
||||||
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ WARNING - IRREVERSIBLE ACTION</p>
|
||||||
|
<p style="color: #78350f; margin: 0;">
|
||||||
|
This action <strong>CANNOT be undone</strong>. Once confirmed, all your data will be
|
||||||
|
permanently deleted from our servers with no possibility of recovery.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p><strong>🗑️ Will be permanently deleted:</strong></p>
|
||||||
|
<ul class="info-list">
|
||||||
|
<li>All transactions</li>
|
||||||
|
<li>All bank accounts and asset accounts</li>
|
||||||
|
<li>All credit cards and liability accounts</li>
|
||||||
|
<li>Custom budgets and categories</li>
|
||||||
|
<li>Cost centers and keywords</li>
|
||||||
|
<li>Financial goals</li>
|
||||||
|
<li>Investments and price history</li>
|
||||||
|
<li>Settings and preferences</li>
|
||||||
|
<li>Your user account</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info">
|
||||||
|
<p class="status-title" style="margin-bottom: 10px;">🔒 Wasn't you?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
If you did not request this deletion, ignore this email and your account will remain intact.
|
||||||
|
We recommend changing your password immediately for security.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info">
|
||||||
|
<p class="status-title" style="margin-bottom: 10px;">💾 Want to backup?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
Before confirming the deletion, you can export all your data to a JSON file
|
||||||
|
and import it later into a new account.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@else
|
||||||
|
{{-- Spanish --}}
|
||||||
|
<p class="greeting">Hola, {{ $userName }}</p>
|
||||||
|
|
||||||
|
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||||
|
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||||
|
<p class="status-title" style="margin-bottom: 15px;">CÓDIGO DE CONFIRMACIÓN</p>
|
||||||
|
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||||
|
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||||
|
{{ $code }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||||
Válido por 10 minutos
|
Válido por 10 minutos
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="info-text">
|
|
||||||
<strong>Não foi você?</strong> Se você não solicitou esta exclusão, ignore este email e sua conta permanecerá intacta. Recomendamos alterar sua senha imediatamente por segurança.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="info-text">
|
|
||||||
<strong>Quer fazer backup?</strong> Antes de confirmar a exclusão, você pode exportar todos os seus dados para um arquivo JSON e importá-los posteriormente em uma nova conta.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="status-card warning">
|
||||||
<p>Este é um email automático do <strong>WebMoney</strong></p>
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ ATENCIÓN - ACCIÓN IRREVERSIBLE</p>
|
||||||
<p>Por favor, não responda a este email.</p>
|
<p style="color: #78350f; margin: 0;">
|
||||||
|
Esta acción <strong>NO se puede deshacer</strong>. Una vez confirmada, todos tus datos serán
|
||||||
|
eliminados permanentemente de nuestros servidores sin posibilidad de recuperación.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p><strong>🗑️ Serán eliminados permanentemente:</strong></p>
|
||||||
|
<ul class="info-list">
|
||||||
|
<li>Todas las transacciones</li>
|
||||||
|
<li>Todas las cuentas bancarias y de activos</li>
|
||||||
|
<li>Todas las tarjetas de crédito y cuentas de pasivos</li>
|
||||||
|
<li>Presupuestos y categorías personalizadas</li>
|
||||||
|
<li>Centros de costo y palabras clave</li>
|
||||||
|
<li>Objetivos financieros</li>
|
||||||
|
<li>Inversiones e historial de precios</li>
|
||||||
|
<li>Configuraciones y preferencias</li>
|
||||||
|
<li>Tu cuenta de usuario</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
</html>
|
<div class="status-card info">
|
||||||
|
<p class="status-title" style="margin-bottom: 10px;">🔒 ¿No fuiste tú?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
Si no solicitaste esta eliminación, ignora este email y tu cuenta permanecerá intacta.
|
||||||
|
Recomendamos cambiar tu contraseña inmediatamente por seguridad.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info">
|
||||||
|
<p class="status-title" style="margin-bottom: 10px;">💾 ¿Quieres hacer backup?</p>
|
||||||
|
<p style="margin: 0;">
|
||||||
|
Antes de confirmar la eliminación, puedes exportar todos tus datos a un archivo JSON
|
||||||
|
e importarlos posteriormente en una nueva cuenta.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|||||||
@ -1,160 +1,48 @@
|
|||||||
<!DOCTYPE html>
|
@extends('emails.layouts.base')
|
||||||
<html lang="pt-BR">
|
|
||||||
<head>
|
@php $locale = $userLocale ?? 'pt-BR'; @endphp
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
@section('title')
|
||||||
<title>Oferta Especial de Retenção</title>
|
@if($locale === 'pt-BR')
|
||||||
<style>
|
Oferta Especial de Retenção
|
||||||
body {
|
@elseif($locale === 'en')
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
Special Retention Offer
|
||||||
background-color: #f4f4f4;
|
@else
|
||||||
margin: 0;
|
Oferta Especial de Retención
|
||||||
padding: 0;
|
@endif
|
||||||
}
|
@endsection
|
||||||
.container {
|
|
||||||
max-width: 600px;
|
@section('content')
|
||||||
margin: 40px auto;
|
@if($locale === 'pt-BR')
|
||||||
background-color: #ffffff;
|
{{-- Portuguese (Brazil) --}}
|
||||||
border-radius: 8px;
|
<p class="greeting">Olá, {{ $user->name }} 🎉</p>
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
|
||||||
color: white;
|
|
||||||
padding: 40px 30px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.header h1 {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 28px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.header .emoji {
|
|
||||||
font-size: 48px;
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
padding: 40px 30px;
|
|
||||||
}
|
|
||||||
.highlight-box {
|
|
||||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
|
||||||
color: white;
|
|
||||||
border-radius: 12px;
|
|
||||||
padding: 30px;
|
|
||||||
text-align: center;
|
|
||||||
margin: 30px 0;
|
|
||||||
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
|
|
||||||
}
|
|
||||||
.highlight-box .number {
|
|
||||||
font-size: 72px;
|
|
||||||
font-weight: bold;
|
|
||||||
line-height: 1;
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
.highlight-box .text {
|
|
||||||
font-size: 24px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.benefit-list {
|
|
||||||
background-color: #f0fdf4;
|
|
||||||
border-left: 4px solid #10b981;
|
|
||||||
padding: 20px;
|
|
||||||
margin: 25px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.benefit-list ul {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
|
||||||
.benefit-list li {
|
|
||||||
color: #065f46;
|
|
||||||
margin: 10px 0;
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
.emotional-message {
|
|
||||||
background-color: #fef3c7;
|
|
||||||
border-left: 4px solid #f59e0b;
|
|
||||||
padding: 20px;
|
|
||||||
margin: 25px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.emotional-message p {
|
|
||||||
color: #78350f;
|
|
||||||
margin: 0;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
.cta-box {
|
|
||||||
text-align: center;
|
|
||||||
margin: 30px 0;
|
|
||||||
padding: 20px;
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
.cta-box .date {
|
|
||||||
font-size: 18px;
|
|
||||||
color: #059669;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top: 15px;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
padding: 20px;
|
|
||||||
text-align: center;
|
|
||||||
color: #6c757d;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
.divider {
|
|
||||||
height: 1px;
|
|
||||||
background-color: #e5e7eb;
|
|
||||||
margin: 30px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="header">
|
|
||||||
<span class="emoji">🎉</span>
|
|
||||||
<h1>OFERTA EXCLUSIVA PARA VOCÊ!</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p style="font-size: 16px; color: #374151; line-height: 1.6;">
|
<p>Entendemos que o preço pode ser uma preocupação, e <strong>queremos mantê-lo conosco</strong>! Por isso, temos uma oferta especial só para você:</p>
|
||||||
Olá, <strong>{{ $user->name }}</strong>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-size: 16px; color: #374151; line-height: 1.6;">
|
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||||
Entendemos que o preço pode ser uma preocupação, e <strong>queremos mantê-lo conosco</strong>!
|
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
||||||
Por isso, temos uma oferta especial só para você:
|
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||||
</p>
|
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">MESES GRÁTIS</div>
|
||||||
|
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">Sem custos, sem compromisso!</div>
|
||||||
<div class="highlight-box">
|
|
||||||
<div style="font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
|
||||||
<div class="number">{{ $freeMonths }}</div>
|
|
||||||
<div class="text">MESES GRÁTIS</div>
|
|
||||||
<div style="font-size: 16px; margin-top: 15px; opacity: 0.9;">
|
|
||||||
Sem custos, sem compromisso!
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="emotional-message">
|
<div class="status-card warning">
|
||||||
<p style="font-weight: bold; margin-bottom: 10px;">💙 Você é importante para nós!</p>
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 Você é importante para nós!</p>
|
||||||
<p>
|
<p style="color: #78350f;">
|
||||||
Sabemos que as coisas podem estar apertadas financeiramente. Esta oferta especial de
|
Sabemos que as coisas podem estar apertadas financeiramente. Esta oferta especial de
|
||||||
<strong>{{ $freeMonths }} meses grátis</strong> é nossa forma de dizer:
|
<strong>{{ $freeMonths }} meses grátis</strong> é nossa forma de dizer:
|
||||||
<em>"Queremos você aqui com a gente!"</em>
|
<em>"Queremos você aqui com a gente!"</em>
|
||||||
</p>
|
</p>
|
||||||
<p style="margin-top: 10px;">
|
<p style="color: #78350f; margin-top: 12px;">
|
||||||
Durante este período, você terá acesso completo a todos os recursos premium do WebMoney,
|
Durante este período, você terá acesso completo a todos os recursos premium do WebMoney,
|
||||||
sem pagar nada. É tempo suficiente para as coisas melhorarem! 🌟
|
sem pagar nada. É tempo suficiente para as coisas melhorarem! 🌟
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="benefit-list">
|
<div class="status-card success">
|
||||||
<strong style="color: #065f46; font-size: 16px;">O que você continua tendo GRÁTIS:</strong>
|
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">O que você continua tendo GRÁTIS:</p>
|
||||||
<ul>
|
<ul class="info-list" style="color: #065f46;">
|
||||||
<li>📊 Controle completo de todas as suas contas</li>
|
<li>📊 Controle completo de todas as suas contas</li>
|
||||||
<li>💳 Gestão ilimitada de cartões de crédito</li>
|
<li>💳 Gestão ilimitada de cartões de crédito</li>
|
||||||
<li>📈 Orçamentos e metas financeiras</li>
|
<li>📈 Orçamentos e metas financeiras</li>
|
||||||
@ -165,45 +53,153 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="divider"></div>
|
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||||
|
<p class="status-title" style="margin-bottom: 15px;">✅ Oferta Já Aplicada!</p>
|
||||||
<div class="cta-box">
|
<p style="margin-bottom: 20px;">
|
||||||
<p style="font-size: 18px; color: #374151; font-weight: bold; margin: 0 0 15px 0;">
|
|
||||||
✅ Oferta Já Aplicada!
|
|
||||||
</p>
|
|
||||||
<p style="font-size: 15px; color: #6b7280; margin: 0;">
|
|
||||||
Sua assinatura foi estendida automaticamente por {{ $freeMonths }} meses.<br>
|
Sua assinatura foi estendida automaticamente por {{ $freeMonths }} meses.<br>
|
||||||
Continue aproveitando todos os recursos premium sem custo!
|
Continue aproveitando todos os recursos premium sem custo!
|
||||||
</p>
|
</p>
|
||||||
<div class="date">
|
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||||
Sua próxima cobrança será em:<br>
|
Sua próxima cobrança será em:<br>
|
||||||
<strong>{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
||||||
</div>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color: #eff6ff; border-left: 4px solid #3b82f6; padding: 20px; border-radius: 4px; margin-top: 25px;">
|
<div class="status-card info">
|
||||||
<p style="color: #1e40af; margin: 0; font-size: 14px;">
|
<p style="margin: 0; font-size: 14px;">
|
||||||
<strong>📌 Importante:</strong> Esta oferta é exclusiva e pode ser usada apenas uma vez.
|
<strong>📌 Importante:</strong> Esta oferta é exclusiva e pode ser usada apenas uma vez.
|
||||||
Após os {{ $freeMonths }} meses, sua assinatura voltará ao valor normal. Você pode cancelar
|
Após os {{ $freeMonths }} meses, sua assinatura voltará ao valor normal. Você pode cancelar
|
||||||
a qualquer momento antes disso, sem nenhum custo.
|
a qualquer momento antes disso, sem nenhum custo.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p style="font-size: 16px; color: #374151; line-height: 1.6; margin-top: 30px;">
|
<p>Muito obrigado por escolher o <strong>WebMoney</strong>! Estamos aqui para ajudá-lo a alcançar seus objetivos financeiros. 💚</p>
|
||||||
Muito obrigado por escolher o <strong>WebMoney</strong>! Estamos aqui para ajudá-lo a alcançar
|
</div>
|
||||||
seus objetivos financeiros. 💚
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-size: 14px; color: #6b7280; margin-top: 25px;">
|
@elseif($locale === 'en')
|
||||||
Com carinho,<br>
|
{{-- English --}}
|
||||||
<strong style="color: #374151;">Equipe WebMoney</strong>
|
<p class="greeting">Hello, {{ $user->name }} 🎉</p>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p>We understand that price can be a concern, and <strong>we want to keep you with us</strong>! That's why we have a special offer just for you:</p>
|
||||||
|
|
||||||
|
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||||
|
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ EXCLUSIVE OFFER ✨</div>
|
||||||
|
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||||
|
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">FREE MONTHS</div>
|
||||||
|
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">No cost, no commitment!</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card warning">
|
||||||
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 You are important to us!</p>
|
||||||
|
<p style="color: #78350f;">
|
||||||
|
We know things can be financially tight. This special offer of
|
||||||
|
<strong>{{ $freeMonths }} free months</strong> is our way of saying:
|
||||||
|
<em>"We want you here with us!"</em>
|
||||||
|
</p>
|
||||||
|
<p style="color: #78350f; margin-top: 12px;">
|
||||||
|
During this period, you will have full access to all WebMoney premium features,
|
||||||
|
at no cost. It's enough time for things to get better! 🌟
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="status-card success">
|
||||||
<p>Este é um email automático do <strong>WebMoney</strong></p>
|
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">What you continue to have FREE:</p>
|
||||||
<p>Por favor, não responda a este email.</p>
|
<ul class="info-list" style="color: #065f46;">
|
||||||
|
<li>📊 Complete control of all your accounts</li>
|
||||||
|
<li>💳 Unlimited credit card management</li>
|
||||||
|
<li>📈 Budgets and financial goals</li>
|
||||||
|
<li>📱 Automatic statement import</li>
|
||||||
|
<li>🎯 Smart transaction categorization</li>
|
||||||
|
<li>📋 Detailed reports and insights</li>
|
||||||
|
<li>☁️ Automatic cloud backup</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||||
|
<p class="status-title" style="margin-bottom: 15px;">✅ Offer Already Applied!</p>
|
||||||
|
<p style="margin-bottom: 20px;">
|
||||||
|
Your subscription has been automatically extended for {{ $freeMonths }} months.<br>
|
||||||
|
Continue enjoying all premium features at no cost!
|
||||||
|
</p>
|
||||||
|
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||||
|
Your next charge will be on:<br>
|
||||||
|
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('m/d/Y') }}</strong>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
</html>
|
<div class="status-card info">
|
||||||
|
<p style="margin: 0; font-size: 14px;">
|
||||||
|
<strong>📌 Important:</strong> This offer is exclusive and can only be used once.
|
||||||
|
After the {{ $freeMonths }} months, your subscription will return to the regular price. You can cancel
|
||||||
|
at any time before that, at no cost.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>Thank you very much for choosing <strong>WebMoney</strong>! We are here to help you achieve your financial goals. 💚</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@else
|
||||||
|
{{-- Spanish --}}
|
||||||
|
<p class="greeting">Hola, {{ $user->name }} 🎉</p>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p>Entendemos que el precio puede ser una preocupación, y <strong>¡queremos que sigas con nosotros</strong>! Por eso, tenemos una oferta especial solo para ti:</p>
|
||||||
|
|
||||||
|
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||||
|
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
||||||
|
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||||
|
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">MESES GRATIS</div>
|
||||||
|
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">¡Sin costos, sin compromiso!</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card warning">
|
||||||
|
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 ¡Eres importante para nosotros!</p>
|
||||||
|
<p style="color: #78350f;">
|
||||||
|
Sabemos que las cosas pueden estar ajustadas financieramente. Esta oferta especial de
|
||||||
|
<strong>{{ $freeMonths }} meses gratis</strong> es nuestra forma de decir:
|
||||||
|
<em>"¡Te queremos aquí con nosotros!"</em>
|
||||||
|
</p>
|
||||||
|
<p style="color: #78350f; margin-top: 12px;">
|
||||||
|
Durante este período, tendrás acceso completo a todas las funciones premium de WebMoney,
|
||||||
|
sin pagar nada. ¡Es tiempo suficiente para que las cosas mejoren! 🌟
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card success">
|
||||||
|
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">Lo que sigues teniendo GRATIS:</p>
|
||||||
|
<ul class="info-list" style="color: #065f46;">
|
||||||
|
<li>📊 Control completo de todas tus cuentas</li>
|
||||||
|
<li>💳 Gestión ilimitada de tarjetas de crédito</li>
|
||||||
|
<li>📈 Presupuestos y metas financieras</li>
|
||||||
|
<li>📱 Importación automática de extractos</li>
|
||||||
|
<li>🎯 Categorización inteligente de transacciones</li>
|
||||||
|
<li>📋 Reportes detallados e insights</li>
|
||||||
|
<li>☁️ Backup automático en la nube</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||||
|
<p class="status-title" style="margin-bottom: 15px;">✅ ¡Oferta Ya Aplicada!</p>
|
||||||
|
<p style="margin-bottom: 20px;">
|
||||||
|
Tu suscripción ha sido extendida automáticamente por {{ $freeMonths }} meses.<br>
|
||||||
|
¡Sigue disfrutando de todas las funciones premium sin costo!
|
||||||
|
</p>
|
||||||
|
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||||
|
Tu próximo cargo será el:<br>
|
||||||
|
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="status-card info">
|
||||||
|
<p style="margin: 0; font-size: 14px;">
|
||||||
|
<strong>📌 Importante:</strong> Esta oferta es exclusiva y solo puede usarse una vez.
|
||||||
|
Después de los {{ $freeMonths }} meses, tu suscripción volverá al precio normal. Puedes cancelar
|
||||||
|
en cualquier momento antes de eso, sin ningún costo.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>¡Muchas gracias por elegir <strong>WebMoney</strong>! Estamos aquí para ayudarte a alcanzar tus objetivos financieros. 💚</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endsection
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Palavra-passe</span><br>
|
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Palavra-passe</span><br>
|
||||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Password</span><br>
|
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Password</span><br>
|
||||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -143,7 +143,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Contraseña</span><br>
|
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Contraseña</span><br>
|
||||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@ -2228,6 +2228,28 @@
|
|||||||
"paypalSecure": "Secure payment with PayPal",
|
"paypalSecure": "Secure payment with PayPal",
|
||||||
"comingSoon": "Coming Soon",
|
"comingSoon": "Coming Soon",
|
||||||
"forPymes": "Tools for SMEs",
|
"forPymes": "Tools for SMEs",
|
||||||
|
"planNames": {
|
||||||
|
"Básico": "Basic",
|
||||||
|
"Pro Mensual": "Pro Monthly",
|
||||||
|
"Pro Anual": "Pro Annual",
|
||||||
|
"Business": "Business"
|
||||||
|
},
|
||||||
|
"planFeatures": {
|
||||||
|
"1 cuenta bancaria": "1 bank account",
|
||||||
|
"10 categorías": "10 categories",
|
||||||
|
"100 subcategorías": "100 subcategories",
|
||||||
|
"1.000 transacciones": "1,000 transactions",
|
||||||
|
"Cuentas ilimitadas": "Unlimited accounts",
|
||||||
|
"Categorías ilimitadas": "Unlimited categories",
|
||||||
|
"Transacciones ilimitadas": "Unlimited transactions",
|
||||||
|
"Reportes avanzados": "Advanced reports",
|
||||||
|
"Múltiples usuarios": "Multiple users",
|
||||||
|
"Facturación integrada": "Integrated billing",
|
||||||
|
"Gestión de flujo de caja": "Cash flow management",
|
||||||
|
"Control de presupuesto": "Budget control",
|
||||||
|
"Módulo de negocios": "Business module",
|
||||||
|
"Soporte prioritario": "Priority support"
|
||||||
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"multiUsers": "Multiple users",
|
"multiUsers": "Multiple users",
|
||||||
"integratedBilling": "Integrated billing",
|
"integratedBilling": "Integrated billing",
|
||||||
|
|||||||
@ -2220,6 +2220,28 @@
|
|||||||
"paypalSecure": "Pago seguro con PayPal",
|
"paypalSecure": "Pago seguro con PayPal",
|
||||||
"comingSoon": "Próximamente",
|
"comingSoon": "Próximamente",
|
||||||
"forPymes": "Herramientas para PyMEs",
|
"forPymes": "Herramientas para PyMEs",
|
||||||
|
"planNames": {
|
||||||
|
"Básico": "Básico",
|
||||||
|
"Pro Mensual": "Pro Mensual",
|
||||||
|
"Pro Anual": "Pro Anual",
|
||||||
|
"Business": "Business"
|
||||||
|
},
|
||||||
|
"planFeatures": {
|
||||||
|
"1 cuenta bancaria": "1 cuenta bancaria",
|
||||||
|
"10 categorías": "10 categorías",
|
||||||
|
"100 subcategorías": "100 subcategorías",
|
||||||
|
"1.000 transacciones": "1.000 transacciones",
|
||||||
|
"Cuentas ilimitadas": "Cuentas ilimitadas",
|
||||||
|
"Categorías ilimitadas": "Categorías ilimitadas",
|
||||||
|
"Transacciones ilimitadas": "Transacciones ilimitadas",
|
||||||
|
"Reportes avanzados": "Reportes avanzados",
|
||||||
|
"Múltiples usuarios": "Múltiples usuarios",
|
||||||
|
"Facturación integrada": "Facturación integrada",
|
||||||
|
"Gestión de flujo de caja": "Gestión de flujo de caja",
|
||||||
|
"Control de presupuesto": "Control de presupuesto",
|
||||||
|
"Módulo de negocios": "Módulo de negocios",
|
||||||
|
"Soporte prioritario": "Soporte prioritario"
|
||||||
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"multiUsers": "Múltiples usuarios",
|
"multiUsers": "Múltiples usuarios",
|
||||||
"integratedBilling": "Facturación integrada",
|
"integratedBilling": "Facturación integrada",
|
||||||
|
|||||||
@ -2238,6 +2238,28 @@
|
|||||||
"paypalSecure": "Pagamento seguro com PayPal",
|
"paypalSecure": "Pagamento seguro com PayPal",
|
||||||
"comingSoon": "Em Breve",
|
"comingSoon": "Em Breve",
|
||||||
"forPymes": "Ferramentas para PMEs",
|
"forPymes": "Ferramentas para PMEs",
|
||||||
|
"planNames": {
|
||||||
|
"Básico": "Básico",
|
||||||
|
"Pro Mensual": "Pro Mensal",
|
||||||
|
"Pro Anual": "Pro Anual",
|
||||||
|
"Business": "Negócios"
|
||||||
|
},
|
||||||
|
"planFeatures": {
|
||||||
|
"1 cuenta bancaria": "1 conta bancária",
|
||||||
|
"10 categorías": "10 categorias",
|
||||||
|
"100 subcategorías": "100 subcategorias",
|
||||||
|
"1.000 transacciones": "1.000 transações",
|
||||||
|
"Cuentas ilimitadas": "Contas ilimitadas",
|
||||||
|
"Categorías ilimitadas": "Categorias ilimitadas",
|
||||||
|
"Transacciones ilimitadas": "Transações ilimitadas",
|
||||||
|
"Reportes avanzados": "Relatórios avançados",
|
||||||
|
"Múltiples usuarios": "Múltiplos usuários",
|
||||||
|
"Facturación integrada": "Faturamento integrado",
|
||||||
|
"Gestión de flujo de caja": "Gestão de fluxo de caixa",
|
||||||
|
"Control de presupuesto": "Controle de orçamento",
|
||||||
|
"Módulo de negocios": "Módulo de negócios",
|
||||||
|
"Soporte prioritario": "Suporte prioritário"
|
||||||
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"multiUsers": "Múltiplos usuários",
|
"multiUsers": "Múltiplos usuários",
|
||||||
"integratedBilling": "Faturamento integrado",
|
"integratedBilling": "Faturamento integrado",
|
||||||
|
|||||||
@ -123,7 +123,9 @@ export default function Pricing() {
|
|||||||
|
|
||||||
<div className="card-body d-flex flex-column">
|
<div className="card-body d-flex flex-column">
|
||||||
{/* Plan Name */}
|
{/* Plan Name */}
|
||||||
<h3 className="card-title text-center mb-3">{plan.name}</h3>
|
<h3 className="card-title text-center mb-3">
|
||||||
|
{t(`pricing.planNames.${plan.name}`, plan.name)}
|
||||||
|
</h3>
|
||||||
|
|
||||||
{/* Price */}
|
{/* Price */}
|
||||||
<div className="text-center mb-4">
|
<div className="text-center mb-4">
|
||||||
@ -170,7 +172,7 @@ export default function Pricing() {
|
|||||||
{plan.features?.map((feature, idx) => (
|
{plan.features?.map((feature, idx) => (
|
||||||
<li key={idx} className="mb-2">
|
<li key={idx} className="mb-2">
|
||||||
<i className="bi bi-check-circle-fill text-success me-2"></i>
|
<i className="bi bi-check-circle-fill text-success me-2"></i>
|
||||||
{feature}
|
{t(`pricing.planFeatures.${feature}`, feature)}
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user