using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using OnlyOneAccessTemplate.Services; using OnlyOneAccessTemplate.Models; namespace OnlyOneAccessTemplate.Controllers { public class HomeController : BaseController { public HomeController( ISiteConfigurationService siteConfig, ILanguageService languageService, ISeoService seoService, IMemoryCache cache, IConfiguration configuration) : base(siteConfig, languageService, seoService, cache, configuration) { } public async Task Index() { var language = GetCurrentLanguage(); // Get page content from database var pageContent = await _siteConfig.GetPageContentAsync(language, "index"); // If no content exists, create default content if (pageContent == null) { await CreateDefaultContentAsync(language); pageContent = await _siteConfig.GetPageContentAsync(language, "index"); } // Set current page for navigation ViewBag.CurrentPage = "home"; return View(pageContent); } public async Task About() { var language = GetCurrentLanguage(); var pageContent = await _siteConfig.GetPageContentAsync(language, "about"); if (pageContent == null) { await CreateDefaultContentAsync(language); pageContent = await _siteConfig.GetPageContentAsync(language, "about"); } ViewBag.CurrentPage = "about"; return View(pageContent); } public async Task Contact() { var language = GetCurrentLanguage(); var pageContent = await _siteConfig.GetPageContentAsync(language, "contact"); ViewBag.CurrentPage = "contact"; return View(pageContent); } [HttpGet("setup-data")] public async Task SetupDefaultData() { try { var languages = new[] { "pt", "en", "es" }; foreach (var language in languages) { await CreateDefaultContentAsync(language); } return Json(new { success = true, message = "Dados padrão criados com sucesso!" }); } catch (Exception ex) { return Json(new { success = false, message = ex.Message }); } } [HttpGet("privacy")] public IActionResult Privacy() { ViewBag.CurrentPage = "privacy"; SetPageSeo( "Política de Privacidade", "Nossa política de privacidade e proteção de dados", "privacidade, proteção de dados, lgpd" ); return View(); } [HttpGet("terms")] public IActionResult Terms() { ViewBag.CurrentPage = "terms"; SetPageSeo( "Termos de Uso", "Termos e condições de uso do nosso serviço", "termos, condições, uso" ); return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(); } private async Task CreateDefaultContentAsync(string language) { try { // Check if configuration already exists var configExists = await _siteConfig.ConfigurationExistsAsync(language); if (configExists) return; // Create default configuration with sample content var siteConfig = new SiteConfiguration { Language = language, Seo = CreateDefaultSeoConfig(language), Pages = CreateDefaultPages(language), Conversion = CreateDefaultConversionConfig(language), CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow }; await _siteConfig.UpdateConfigurationAsync(siteConfig); } catch (Exception ex) { // Log error but don't break the page Console.WriteLine($"Error creating default content: {ex.Message}"); } } private SeoConfig CreateDefaultSeoConfig(string language) { return language switch { "en" => new SeoConfig { SiteName = "OnlyOne Access Template", DefaultTitle = "Transform Your Business - Conversion Template", DefaultDescription = "Professional conversion solutions to boost your business results with proven methodology", DefaultKeywords = "conversion, business, marketing, results, template", TwitterCard = "summary_large_image", GoogleTagManagerId = "GTM-XXXXXXX", GoogleAnalyticsId = "GA-XXXXXXXX", Author = "OnlyOne Access Team", OgImage = "/img/og-image-en.jpg" }, "es" => new SeoConfig { SiteName = "OnlyOne Access Template", DefaultTitle = "Transforma Tu Negocio - Template de Conversión", DefaultDescription = "Soluciones profesionales de conversión para potenciar los resultados de tu negocio", DefaultKeywords = "conversión, negocio, marketing, resultados, plantilla", TwitterCard = "summary_large_image", GoogleTagManagerId = "GTM-XXXXXXX", GoogleAnalyticsId = "GA-XXXXXXXX", Author = "Equipo OnlyOne Access", OgImage = "/img/og-image-es.jpg" }, _ => new SeoConfig { SiteName = "OnlyOne Access Template", DefaultTitle = "Transforme Seu Negócio - Template de Conversão", DefaultDescription = "Soluções profissionais de conversão para alavancar os resultados do seu negócio", DefaultKeywords = "conversão, negócio, marketing, resultados, template", TwitterCard = "summary_large_image", GoogleTagManagerId = "GTM-XXXXXXX", GoogleAnalyticsId = "GA-XXXXXXXX", Author = "Equipe OnlyOne Access", OgImage = "/img/og-image-pt.jpg" } }; } private Dictionary CreateDefaultPages(string language) { return language switch { "en" => new Dictionary { ["index"] = new PageContent { Title = "Transform Your Business Today", Description = "Increase your sales by up to 300% with our proven methodology and expert support", Keywords = "business transformation, conversion, sales growth, methodology", H1 = "Transform Your Business Today", MetaTitle = "Business Transformation | Conversion Solutions", Blocks = CreateEnglishBlocks(), IsActive = true, PublishDate = DateTime.UtcNow }, ["about"] = new PageContent { Title = "About Us - Our Mission", Description = "Learn about our mission to help businesses achieve better conversion rates", H1 = "About Our Company", MetaTitle = "About Us | Conversion Experts" } }, "es" => new Dictionary { ["index"] = new PageContent { Title = "Transforma Tu Negocio Hoy", Description = "Aumenta tus ventas hasta un 300% con nuestra metodología probada y soporte especializado", Keywords = "transformación empresarial, conversión, crecimiento de ventas, metodología", H1 = "Transforma Tu Negocio Hoy", MetaTitle = "Transformación Empresarial | Soluciones de Conversión", Blocks = CreateSpanishBlocks(), IsActive = true, PublishDate = DateTime.UtcNow }, ["about"] = new PageContent { Title = "Acerca de Nosotros - Nuestra Misión", Description = "Conoce nuestra misión de ayudar a las empresas a lograr mejores tasas de conversión", H1 = "Acerca de Nuestra Empresa", MetaTitle = "Acerca de Nosotros | Expertos en Conversión" } }, _ => new Dictionary { ["index"] = new PageContent { Title = "Transforme Seu Negócio Hoje", Description = "Aumente suas vendas em até 300% com nossa metodologia comprovada e suporte especializado", Keywords = "transformação empresarial, conversão, crescimento de vendas, metodologia", H1 = "Transforme Seu Negócio Hoje", MetaTitle = "Transformação Empresarial | Soluções de Conversão", Blocks = CreatePortugueseBlocks(), IsActive = true, PublishDate = DateTime.UtcNow }, ["about"] = new PageContent { Title = "Sobre Nós - Nossa Missão", Description = "Conheça nossa missão de ajudar empresas a alcançar melhores taxas de conversão", H1 = "Sobre Nossa Empresa", MetaTitle = "Sobre Nós | Especialistas em Conversão" } } }; } private List CreatePortugueseBlocks() { return new List { new ContentBlock { Type = "hero", Title = "Transforme Seu Negócio com Nossa Solução Inovadora", Content = "Aumente suas vendas em até 300% com nossa metodologia comprovada, suporte especializado e resultados garantidos em 30 dias.", ImageUrl = "/img/hero-pt.jpg", ButtonText = "Começar Transformação", ButtonUrl = "#conversion-form", Order = 1, Properties = new Dictionary { { "badge", "🚀 Mais de 1000 empresas transformadas" }, { "features", new[] { "✅ Metodologia comprovada", "✅ Suporte 24/7", "✅ Resultados em 30 dias" } }, { "social_proof", "Mais de 500 avaliações 5 estrelas" } } }, new ContentBlock { Type = "features", Title = "Por Que Escolher Nossa Solução?", Content = "Descubra os benefícios que já transformaram mais de 1000 empresas em todo o Brasil", Order = 2, Properties = new Dictionary { { "feature_list", new[] { new Dictionary { { "icon", "fas fa-rocket" }, { "title", "Resultados Rápidos" }, { "description", "Veja os primeiros resultados em até 30 dias com nossa metodologia testada" } }, new Dictionary { { "icon", "fas fa-shield-alt" }, { "title", "Garantia Total" }, { "description", "100% de garantia ou seu dinheiro de volta. Assumimos o risco por você" } }, new Dictionary { { "icon", "fas fa-users" }, { "title", "Suporte Especializado" }, { "description", "Equipe dedicada 24/7 para garantir seu sucesso em cada etapa" } }, new Dictionary { { "icon", "fas fa-chart-line" }, { "title", "Crescimento Sustentável" }, { "description", "Estratégias de longo prazo para crescimento consistente e duradouro" } }, new Dictionary { { "icon", "fas fa-cog" }, { "title", "Automatização" }, { "description", "Processos automatizados que trabalham para você 24 horas por dia" } }, new Dictionary { { "icon", "fas fa-trophy" }, { "title", "Casos de Sucesso" }, { "description", "Mais de 1000 empresas já alcançaram resultados extraordinários" } } } } } }, new ContentBlock { Type = "testimonials", Title = "O Que Nossos Clientes Dizem", Content = "Mais de 1000 empresas já transformaram seus resultados. Veja alguns depoimentos:", Order = 3, Properties = new Dictionary { { "testimonials", new[] { new Dictionary { { "quote", "Aumentamos nossas vendas em 250% em apenas 3 meses. A metodologia realmente funciona e o suporte é excepcional!" }, { "name", "Maria Silva" }, { "position", "CEO, TechStart Brasil" }, { "avatar", "/img/testimonial-1.jpg" } }, new Dictionary { { "quote", "O ROI foi incrível. Recuperamos o investimento em 30 dias e continuamos crescendo desde então." }, { "name", "João Santos" }, { "position", "Diretor Comercial, InovaCorp" }, { "avatar", "/img/testimonial-2.jpg" } }, new Dictionary { { "quote", "Finalmente encontramos uma solução que entrega o que promete. Resultados desde o primeiro mês!" }, { "name", "Ana Costa" }, { "position", "Fundadora, GrowBiz" }, { "avatar", "/img/testimonial-3.jpg" } } } } } }, new ContentBlock { Type = "cta", Title = "Pronto para Transformar Seu Negócio?", Content = "Junte-se a mais de 1000 empresas que já alcançaram resultados extraordinários com nossa metodologia comprovada.", ButtonText = "Começar Minha Transformação", ButtonUrl = "#conversion-form", Order = 4, Properties = new Dictionary { { "urgency_badge", "⚡ Últimas vagas da semana" }, { "guarantee", "🛡️ Garantia de 30 dias ou seu dinheiro de volta" }, { "secondary_button_text", "Assistir Demonstração" }, { "secondary_button_url", "#demo-video" } } } }; } private List CreateEnglishBlocks() { return new List { new ContentBlock { Type = "hero", Title = "Transform Your Business with Our Innovative Solution", Content = "Increase your sales by up to 300% with our proven methodology, expert support and guaranteed results in 30 days.", ImageUrl = "/img/hero-en.jpg", ButtonText = "Start Transformation", ButtonUrl = "#conversion-form", Order = 1, Properties = new Dictionary { { "badge", "🚀 Over 1000 companies transformed" }, { "features", new[] { "✅ Proven methodology", "✅ 24/7 Support", "✅ Results in 30 days" } }, { "social_proof", "Over 500 five-star reviews" } } }, new ContentBlock { Type = "features", Title = "Why Choose Our Solution?", Content = "Discover the benefits that have already transformed over 1000 companies worldwide", Order = 2, Properties = new Dictionary { { "feature_list", new[] { new Dictionary { { "icon", "fas fa-rocket" }, { "title", "Fast Results" }, { "description", "See first results within 30 days with our tested methodology" } }, new Dictionary { { "icon", "fas fa-shield-alt" }, { "title", "Full Guarantee" }, { "description", "100% guarantee or your money back. We take the risk for you" } }, new Dictionary { { "icon", "fas fa-users" }, { "title", "Expert Support" }, { "description", "24/7 dedicated team to ensure your success at every step" } } } } } }, new ContentBlock { Type = "testimonials", Title = "What Our Clients Say", Content = "Over 1000 companies have already transformed their results. See some testimonials:", Order = 3, Properties = new Dictionary { { "testimonials", new[] { new Dictionary { { "quote", "We increased our sales by 250% in just 3 months. The methodology really works!" }, { "name", "Mary Johnson" }, { "position", "CEO, TechStart USA" }, { "avatar", "/img/testimonial-en-1.jpg" } } } } } }, new ContentBlock { Type = "cta", Title = "Ready to Transform Your Business?", Content = "Join over 1000 companies that have already achieved extraordinary results.", ButtonText = "Start My Transformation", ButtonUrl = "#conversion-form", Order = 4 } }; } private List CreateSpanishBlocks() { return new List { new ContentBlock { Type = "hero", Title = "Transforma Tu Negocio con Nuestra Solución Innovadora", Content = "Aumenta tus ventas hasta un 300% con nuestra metodología probada, soporte especializado y resultados garantizados en 30 días.", ImageUrl = "/img/hero-es.jpg", ButtonText = "Comenzar Transformación", ButtonUrl = "#conversion-form", Order = 1, Properties = new Dictionary { { "badge", "🚀 Más de 1000 empresas transformadas" }, { "features", new[] { "✅ Metodología probada", "✅ Soporte 24/7", "✅ Resultados en 30 días" } }, { "social_proof", "Más de 500 reseñas de 5 estrellas" } } }, new ContentBlock { Type = "features", Title = "¿Por Qué Elegir Nuestra Solución?", Content = "Descubre los beneficios que ya han transformado más de 1000 empresas en todo el mundo", Order = 2 }, new ContentBlock { Type = "testimonials", Title = "Lo Que Dicen Nuestros Clientes", Content = "Más de 1000 empresas ya han transformado sus resultados. Ve algunos testimonios:", Order = 3 }, new ContentBlock { Type = "cta", Title = "¿Listo para Transformar Tu Negocio?", Content = "Únete a más de 1000 empresas que ya han logrado resultados extraordinarios.", ButtonText = "Comenzar Mi Transformación", ButtonUrl = "#conversion-form", Order = 4 } }; } private ConversionConfig CreateDefaultConversionConfig(string language) { return new ConversionConfig { FormAction = "/conversion/submit", ThankYouPage = language switch { "en" => "/en/thank-you", "es" => "/es/gracias", _ => "/obrigado" }, FormFields = language switch { "en" => new List { new() { Name = "name", Type = "text", Label = "Full Name", Placeholder = "Enter your full name", Required = true, Order = 1 }, new() { Name = "email", Type = "email", Label = "Email Address", Placeholder = "Enter your email", Required = true, Order = 2 }, new() { Name = "phone", Type = "tel", Label = "Phone Number", Placeholder = "Enter your phone number", Required = false, Order = 3 }, new() { Name = "company", Type = "text", Label = "Company Name", Placeholder = "Enter your company name", Required = false, Order = 4 } }, "es" => new List { new() { Name = "name", Type = "text", Label = "Nombre Completo", Placeholder = "Ingresa tu nombre completo", Required = true, Order = 1 }, new() { Name = "email", Type = "email", Label = "Correo Electrónico", Placeholder = "Ingresa tu correo", Required = true, Order = 2 }, new() { Name = "phone", Type = "tel", Label = "Número de Teléfono", Placeholder = "Ingresa tu teléfono", Required = false, Order = 3 }, new() { Name = "company", Type = "text", Label = "Nombre de la Empresa", Placeholder = "Ingresa el nombre de tu empresa", Required = false, Order = 4 } }, _ => new List { new() { Name = "name", Type = "text", Label = "Nome Completo", Placeholder = "Digite seu nome completo", Required = true, Order = 1 }, new() { Name = "email", Type = "email", Label = "E-mail", Placeholder = "Digite seu e-mail", Required = true, Order = 2 }, new() { Name = "phone", Type = "tel", Label = "Telefone", Placeholder = "Digite seu telefone", Required = false, Order = 3 }, new() { Name = "company", Type = "text", Label = "Nome da Empresa", Placeholder = "Digite o nome da sua empresa", Required = false, Order = 4 } } } }; } } }