u
This commit is contained in:
@@ -2,38 +2,37 @@
|
||||
@model FrontOffice.Main.Pages.ErrorModel
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="fa" dir="rtl">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<title>Error</title>
|
||||
<link href="~/css/bootstrap/bootstrap.min.css" rel="stylesheet" />
|
||||
<title>خطا</title>
|
||||
<link href="~/css/site.css" rel="stylesheet" asp-append-version="true" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="content px-4">
|
||||
<h1 class="text-danger">Error.</h1>
|
||||
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||
<h1 class="text-danger">خطا.</h1>
|
||||
<h2 class="text-danger">در هنگام پردازش درخواست شما خطایی رخ داد.</h2>
|
||||
|
||||
@if (Model.ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@Model.RequestId</code>
|
||||
<strong>شناسه درخواست:</strong> <code>@Model.RequestId</code>
|
||||
</p>
|
||||
}
|
||||
|
||||
<h3>Development Mode</h3>
|
||||
<h3>حالت توسعه</h3>
|
||||
<p>
|
||||
Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
|
||||
تغییر به محیط <strong>توسعه</strong> اطلاعات دقیقتری درباره خطای رخ داده نمایش میدهد.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
<strong>محیط توسعه نباید برای برنامههای مستقر شده فعال باشد.</strong>
|
||||
این کار ممکن است منجر به نمایش اطلاعات حساس از خطاها به کاربران نهایی شود.
|
||||
برای اشکالزدایی محلی، محیط توسعه را با تنظیم متغیر محیطی <strong>ASPNETCORE_ENVIRONMENT</strong> روی <strong>Development</strong>
|
||||
فعال کرده و برنامه را مجدداً راهاندازی کنید.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -163,145 +163,3 @@
|
||||
|
||||
</MudStack>
|
||||
|
||||
@code {
|
||||
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@foursat.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@foursat.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; }
|
||||
}
|
||||
}
|
||||
146
src/FrontOffice.Main/Pages/FAQ.razor.cs
Normal file
146
src/FrontOffice.Main/Pages/FAQ.razor.cs
Normal file
@@ -0,0 +1,146 @@
|
||||
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@foursat.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@foursat.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; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user