using MudBlazor;

namespace FrontOffice.Main.Pages;
public partial class FAQ
{
    private string _searchQuery = "";
    private List<FAQCategory> _categories = new();
    private List<FAQQuestion> _filteredQuestions = new();

    protected override void OnInitialized()
    {
        LoadFAQData();
    }

    protected override void OnParametersSet()
    {
        FilterQuestions();
    }

    private void LoadFAQData()
    {
        _categories = new List<FAQCategory>
    {
        new FAQCategory
        {
            Id = "getting-started",
            Title = "شروع کار",
            Description = "نحوه ثبت‌نام و شروع استفاده",
            Icon = Icons.Material.Filled.PlayArrow,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "چگونه حساب کاربری بسازم؟", Answer = "برای ایجاد حساب کاربری، روی دکمه «شروع کنید» کلیک کنید و مراحل ثبت‌نام را دنبال کنید. نیاز به شماره موبایل معتبر دارید." },
                new() { Question = "آیا ثبت‌نام رایگان است؟", Answer = "بله، ثبت‌نام اولیه کاملاً رایگان است. شما می‌توانید از امکانات پایه به صورت رایگان استفاده کنید." },
                new() { Question = "چه مدارکی برای ثبت‌نام نیاز است؟", Answer = "تنها شماره موبایل معتبر نیاز است. برای استفاده از امکانات پیشرفته‌تر ممکن است نیاز به احراز هویت کامل باشد." }
            }
        },
        new FAQCategory
        {
            Id = "pricing",
            Title = "قیمت‌گذاری",
            Description = "طرح‌های قیمت‌گذاری و پرداخت",
            Icon = Icons.Material.Filled.Payment,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "طرح‌های قیمت‌گذاری شما چیست؟", Answer = "ما سه طرح داریم: استارتر (رایگان)، رشد (۳۹ دلار/ماه)، و اسکیل (تماس بگیرید). هر طرح برای اندازه تیم شما مناسب است." },
                new() { Question = "آیا امکان ارتقا یا کاهش طرح وجود دارد؟", Answer = "بله، شما می‌توانید در هر زمان طرح خود را ارتقا دهید. کاهش طرح نیز با محدودیت‌های زمانی ممکن است." },
                new() { Question = "چه روش‌های پرداختی پشتیبانی می‌شود؟", Answer = "از کارت‌های بانکی ایرانی، درگاه‌های پرداخت آنلاین، و کیف پول‌های دیجیتال پشتیبانی می‌کنیم." }
            }
        },
        new FAQCategory
        {
            Id = "features",
            Title = "امکانات",
            Description = "ویژگی‌ها و قابلیت‌های سیستم",
            Icon = Icons.Material.Filled.Build,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "سازمان فروش چگونه کار می‌کند؟", Answer = "سازمان فروش بصری نمایش سلسله مراتبی تیم شما را نشان می‌دهد و امکان ردیابی روابط ارجاعی را فراهم می‌کند." },
                new() { Question = "گزارش‌گیری به چه صورت است؟", Answer = "سیستم گزارش‌های جامع مالی، عملکردی و آماری ارائه می‌دهد که قابل فیلتر و دانلود به فرمت Excel است." },
                new() { Question = "آیا از موبایل قابل استفاده است؟", Answer = "بله، اپلیکیشن کاملاً responsive است و تجربه کاربری عالی در موبایل و تبلت ارائه می‌دهد." }
            }
        },
        new FAQCategory
        {
            Id = "security",
            Title = "امنیت",
            Description = "امنیت داده‌ها و حریم خصوصی",
            Icon = Icons.Material.Filled.Security,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "داده‌های من چگونه محافظت می‌شود؟", Answer = "از رمزنگاری پیشرفته، پشتیبان‌گیری منظم، و پروتکل‌های امنیتی استاندارد استفاده می‌کنیم." },
                new() { Question = "آیا داده‌ها را با دیگران به اشتراک می‌گذاریم؟", Answer = "خیر، داده‌های شما کاملاً خصوصی است و تنها برای ارائه خدمات به شما استفاده می‌شود." },
                new() { Question = "چگونه می‌توانم حساب خود را حذف کنم؟", Answer = "از طریق تنظیمات پروفایل می‌توانید درخواست حذف حساب دهید. این فرآیند ۳۰ روز طول می‌کشد." }
            }
        },
        new FAQCategory
        {
            Id = "support",
            Title = "پشتیبانی",
            Description = "کمک و پشتیبانی فنی",
            Icon = Icons.Material.Filled.Help,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "پشتیبانی چگونه کار می‌کند؟", Answer = "پشتیبانی ۲۴ ساعته از طریق چت آنلاین، ایمیل و تلفن ارائه می‌شود. پاسخگویی در کمتر از ۲ ساعت." },
                new() { Question = "آیا آموزش‌هایی دارید؟", Answer = "بله، مرکز راهنمایی جامع با ویدیوهای آموزشی، راهنماها و وبینارهای آموزشی داریم." },
                new() { Question = "چگونه مشکل فنی گزارش دهم؟", Answer = "از طریق پنل پشتیبانی یا ایمیل support@kbs1.co می‌توانید مشکلات را گزارش دهید." }
            }
        },
        new FAQCategory
        {
            Id = "legal",
            Title = "قوانین و مقررات",
            Description = "قوانین استفاده و شرایط",
            Icon = Icons.Material.Filled.Gavel,
            Questions = new List<FAQQuestion>
            {
                new() { Question = "شرایط استفاده از خدمات چیست؟", Answer = "با ثبت‌نام، شرایط استفاده را می‌پذیرید. این شرایط در صفحه قوانین کامل توضیح داده شده است." },
                new() { Question = "سیاست بازگشت وجه چگونه است؟", Answer = "در صورت عدم رضایت، امکان بازگشت وجه در ۱۴ روز اول وجود دارد. شرایط کامل در صفحه بازگشت وجه." },
                new() { Question = "چگونه می‌توانم شکایت کنم؟", Answer = "از طریق ایمیل legal@kbs1.co یا فرم تماس شکایات می‌توانید شکایت خود را ثبت کنید." }
            }
        }
    };

        // Calculate question counts
        foreach (var category in _categories)
        {
            category.QuestionCount = category.Questions.Count;
        }
    }

    private void FilterQuestions()
    {
        if (string.IsNullOrWhiteSpace(_searchQuery))
        {
            _filteredQuestions = new List<FAQQuestion>();
            return;
        }

        _filteredQuestions = _categories
            .SelectMany(c => c.Questions)
            .Where(q => q.Question.Contains(_searchQuery, StringComparison.OrdinalIgnoreCase) ||
                       q.Answer.Contains(_searchQuery, StringComparison.OrdinalIgnoreCase))
            .ToList();
    }

    private void ScrollToCategory(string categoryId)
    {
        // TODO: Implement smooth scroll to category
    }

    public class FAQCategory
    {
        public string? Id { get; set; }
        public string? Title { get; set; }
        public string? Description { get; set; }
        public string? Icon { get; set; }
        public int QuestionCount { get; set; }
        public List<FAQQuestion> Questions { get; set; } = new();
    }

    public class FAQQuestion
    {
        public string? Question { get; set; }
        public string? Answer { get; set; }
    }
}