u
This commit is contained in:
307
src/FrontOffice.Main/Pages/FAQ.razor
Normal file
307
src/FrontOffice.Main/Pages/FAQ.razor
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
@attribute [Route(RouteConstants.FAQ.Index)]
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
|
<PageTitle>سوالات متداول | فرصت</PageTitle>
|
||||||
|
|
||||||
|
<!-- Hero Section -->
|
||||||
|
<section class="faq-hero-section py-16">
|
||||||
|
<MudContainer MaxWidth="MaxWidth.Large">
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Spacing="4">
|
||||||
|
<MudChip T="string" Color="Color.Secondary" Variant="Variant.Filled" Class="mb-2">سوالات متداول</MudChip>
|
||||||
|
<MudText Typo="Typo.h2" Align="Align.Center" Class="mb-3">
|
||||||
|
پاسخ سوالات شما در اینجا
|
||||||
|
</MudText>
|
||||||
|
<MudText Typo="Typo.body1" Align="Align.Center" Class="mud-text-secondary mb-6" MaxWidth="600px">
|
||||||
|
در این بخش به پرتکرارترین سوالات کاربران پاسخ دادهایم. اگر سوال شما در لیست نیست، با تیم پشتیبانی ما تماس بگیرید.
|
||||||
|
</MudText>
|
||||||
|
|
||||||
|
<!-- Search Box -->
|
||||||
|
<MudPaper Elevation="2" Class="pa-4 rounded-2xl w-100" Style="max-width: 500px;">
|
||||||
|
<MudTextField @bind-Value="_searchQuery"
|
||||||
|
Label="جستجو در سوالات..."
|
||||||
|
Variant="Variant.Outlined"
|
||||||
|
Adornment="Adornment.Start"
|
||||||
|
AdornmentIcon="@Icons.Material.Filled.Search"
|
||||||
|
FullWidth="true"
|
||||||
|
Immediate="true"
|
||||||
|
Placeholder="سوال خود را تایپ کنید" />
|
||||||
|
</MudPaper>
|
||||||
|
</MudStack>
|
||||||
|
</MudContainer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<MudStack Spacing="6">
|
||||||
|
|
||||||
|
<!-- FAQ Categories -->
|
||||||
|
<section class="py-8">
|
||||||
|
<MudContainer MaxWidth="MaxWidth.Large">
|
||||||
|
<MudText Typo="Typo.h4" Align="Align.Center" Class="mb-8 mud-typography-subtitle1">دستهبندی سوالات</MudText>
|
||||||
|
<MudGrid Spacing="3" Justify="Justify.Center">
|
||||||
|
@foreach (var category in _categories)
|
||||||
|
{
|
||||||
|
<MudItem xs="12" sm="6" md="4">
|
||||||
|
<MudPaper Elevation="2" Class="pa-4 rounded-xl mud-theme-surface cursor-pointer h-100"
|
||||||
|
OnClick="() => ScrollToCategory(category.Id)">
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Spacing="3">
|
||||||
|
<MudIcon Icon="@category.Icon" Size="Size.Large" Color="Color.Primary" />
|
||||||
|
<MudText Typo="Typo.h6" Align="Align.Center">@category.Title</MudText>
|
||||||
|
<MudText Typo="Typo.caption" Align="Align.Center" Class="mud-text-secondary">
|
||||||
|
@category.Description
|
||||||
|
</MudText>
|
||||||
|
<MudChip T="string" Color="Color.Info" Variant="Variant.Outlined" Size="Size.Small">
|
||||||
|
@category.QuestionCount سوال
|
||||||
|
</MudChip>
|
||||||
|
</MudStack>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
}
|
||||||
|
</MudGrid>
|
||||||
|
</MudContainer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ Content -->
|
||||||
|
<section class="py-8">
|
||||||
|
<MudContainer MaxWidth="MaxWidth.Large">
|
||||||
|
@if (!string.IsNullOrWhiteSpace(_searchQuery))
|
||||||
|
{
|
||||||
|
<!-- Search Results -->
|
||||||
|
<MudStack Spacing="4">
|
||||||
|
<MudText Typo="Typo.h5" Class="mb-4">نتایج جستجو برای "@_searchQuery"</MudText>
|
||||||
|
@if (_filteredQuestions.Any())
|
||||||
|
{
|
||||||
|
<MudExpansionPanels Square="false" Class="rounded-2xl">
|
||||||
|
@foreach (var question in _filteredQuestions)
|
||||||
|
{
|
||||||
|
<MudExpansionPanel Text="@question.Question">
|
||||||
|
<MudText Typo="Typo.body1">@((MarkupString)question.Answer)</MudText>
|
||||||
|
</MudExpansionPanel>
|
||||||
|
}
|
||||||
|
</MudExpansionPanels>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Class="py-8">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.SearchOff" Size="Size.Large" Color="Color.Default" />
|
||||||
|
<MudText Typo="Typo.h6" Class="mt-2">نتیجهای یافت نشد</MudText>
|
||||||
|
<MudText Typo="Typo.body2" Class="mud-text-secondary">
|
||||||
|
سعی کنید از کلمات کلیدی دیگری استفاده کنید.
|
||||||
|
</MudText>
|
||||||
|
</MudStack>
|
||||||
|
}
|
||||||
|
</MudStack>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<!-- Categorized FAQ -->
|
||||||
|
@foreach (var category in _categories)
|
||||||
|
{
|
||||||
|
<MudStack Spacing="4" Class="mb-8">
|
||||||
|
<div id="@category.Id">
|
||||||
|
<MudText Typo="Typo.h5" Class="mb-4">@category.Title</MudText>
|
||||||
|
<MudExpansionPanels Square="false" Class="rounded-2xl">
|
||||||
|
@foreach (var question in category.Questions)
|
||||||
|
{
|
||||||
|
<MudExpansionPanel Text="@question.Question">
|
||||||
|
<MudText Typo="Typo.body1">@((MarkupString)question.Answer)</MudText>
|
||||||
|
</MudExpansionPanel>
|
||||||
|
}
|
||||||
|
</MudExpansionPanels>
|
||||||
|
</div>
|
||||||
|
</MudStack>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</MudContainer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Contact Support -->
|
||||||
|
<section class="py-12 bg-grey-50">
|
||||||
|
<MudContainer MaxWidth="MaxWidth.Large">
|
||||||
|
<MudPaper Elevation="3" Class="pa-8 rounded-2xl mud-theme-surface text-center">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.ContactSupport" Size="Size.Large" Color="Color.Primary" Class="mb-4" />
|
||||||
|
<MudText Typo="Typo.h4" Class="mb-3">سوال شما پاسخ داده نشد؟</MudText>
|
||||||
|
<MudText Typo="Typo.body1" Class="mud-text-secondary mb-6">
|
||||||
|
تیم پشتیبانی ما آماده پاسخگویی به سوالات شما است. از طریق راههای زیر با ما تماس بگیرید.
|
||||||
|
</MudText>
|
||||||
|
|
||||||
|
<MudGrid Spacing="4" Justify="Justify.Center">
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Spacing="2">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.Email" Color="Color.Primary" Size="Size.Large" />
|
||||||
|
<MudText Typo="Typo.h6">ایمیل</MudText>
|
||||||
|
<MudText Typo="Typo.body2" Class="mud-text-secondary">support@foursat.co</MudText>
|
||||||
|
<MudButton Variant="Variant.Outlined" Color="Color.Primary" Size="Size.Small">
|
||||||
|
ارسال ایمیل
|
||||||
|
</MudButton>
|
||||||
|
</MudStack>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Spacing="2">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.Chat" Color="Color.Success" Size="Size.Large" />
|
||||||
|
<MudText Typo="Typo.h6">چت آنلاین</MudText>
|
||||||
|
<MudText Typo="Typo.body2" Class="mud-text-secondary">پاسخگویی ۲۴ ساعته</MudText>
|
||||||
|
<MudButton Variant="Variant.Filled" Color="Color.Success" Size="Size.Small">
|
||||||
|
شروع چت
|
||||||
|
</MudButton>
|
||||||
|
</MudStack>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem xs="12" md="4">
|
||||||
|
<MudStack AlignItems="AlignItems.Center" Spacing="2">
|
||||||
|
<MudIcon Icon="@Icons.Material.Filled.Phone" Color="Color.Warning" Size="Size.Large" />
|
||||||
|
<MudText Typo="Typo.h6">تلفن</MudText>
|
||||||
|
<MudText Typo="Typo.body2" Class="mud-text-secondary">۰۲۱-۱۲۳۴۵۶۷۸</MudText>
|
||||||
|
<MudButton Variant="Variant.Outlined" Color="Color.Warning" Size="Size.Small">
|
||||||
|
تماس تلفنی
|
||||||
|
</MudButton>
|
||||||
|
</MudStack>
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
|
</MudPaper>
|
||||||
|
</MudContainer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</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; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="d-none d-md-flex align-center gap-10">
|
<div class="d-none d-md-flex align-center gap-10">
|
||||||
<MudLink Href="#features" Typo="Typo.subtitle1" Class="mud-link">امکانات</MudLink>
|
<MudLink Href="#features" Typo="Typo.subtitle1" Class="mud-link">امکانات</MudLink>
|
||||||
<MudLink Href="#pricing" Typo="Typo.subtitle1" Class="mud-link">قیمتها</MudLink>
|
<MudLink Href="#pricing" Typo="Typo.subtitle1" Class="mud-link">قیمتها</MudLink>
|
||||||
<MudLink Href="#faq" Typo="Typo.subtitle1" Class="mud-link">سوالات متداول</MudLink>
|
<MudLink Href="@(RouteConstants.FAQ.Index)" Typo="Typo.subtitle1" Class="mud-link">سوالات متداول</MudLink>
|
||||||
<MudLink Href="@(RouteConstants.About.Index)" Typo="Typo.subtitle1" Class="mud-link">درباره ما</MudLink>
|
<MudLink Href="@(RouteConstants.About.Index)" Typo="Typo.subtitle1" Class="mud-link">درباره ما</MudLink>
|
||||||
<MudLink Href="#contact" Typo="Typo.subtitle1" Class="mud-link">ارتباط با ما</MudLink>
|
<MudLink Href="#contact" Typo="Typo.subtitle1" Class="mud-link">ارتباط با ما</MudLink>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
<MudStack Spacing="2">
|
<MudStack Spacing="2">
|
||||||
<MudLink Href="#features" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">امکانات</MudLink>
|
<MudLink Href="#features" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">امکانات</MudLink>
|
||||||
<MudLink Href="#pricing" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">قیمتها</MudLink>
|
<MudLink Href="#pricing" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">قیمتها</MudLink>
|
||||||
<MudLink Href="#faq" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">سوالات متداول</MudLink>
|
<MudLink Href="@(RouteConstants.FAQ.Index)" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">سوالات متداول</MudLink>
|
||||||
<MudLink Href="@(RouteConstants.About.Index)" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">درباره ما</MudLink>
|
<MudLink Href="@(RouteConstants.About.Index)" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">درباره ما</MudLink>
|
||||||
<MudLink Href="#contact" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">ارتباط</MudLink>
|
<MudLink Href="#contact" Typo="Typo.subtitle1" OnClick="() => _drawerOpen=false">ارتباط</MudLink>
|
||||||
|
|
||||||
|
|||||||
@@ -27,4 +27,9 @@ public static class RouteConstants
|
|||||||
{
|
{
|
||||||
public const string Index = "/about";
|
public const string Index = "/about";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class FAQ
|
||||||
|
{
|
||||||
|
public const string Index = "/faq";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user