mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 18:41:46 +00:00
Compare commits
3 Commits
47b825c4b2
...
feature/he
| Author | SHA1 | Date | |
|---|---|---|---|
| 1822f074c6 | |||
| db946b9531 | |||
| 25ede3c9e7 |
@ -1,9 +1,12 @@
|
||||
import { Controller, Get, UseGuards } from '@nestjs/common';
|
||||
import { BadRequestException, Controller, Get, Req, UseGuards } from '@nestjs/common';
|
||||
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
|
||||
import { Request } from 'express';
|
||||
import { AccessTokenGuard } from '~/common/guards';
|
||||
import { ApiDataArrayResponse } from '~/core/decorators';
|
||||
import { ApiDataArrayResponse, ApiLangRequestHeader } from '~/core/decorators';
|
||||
import { ResponseFactory } from '~/core/utils';
|
||||
import { DocumentMetaResponseDto } from '~/document/dtos/response';
|
||||
import { HelpSupportFaqResponseDto } from '../dtos/response';
|
||||
import { LookupLanguage } from '../enums';
|
||||
import { LookupService } from '../services';
|
||||
|
||||
@Controller('lookup')
|
||||
@ -29,4 +32,24 @@ export class LookupController {
|
||||
|
||||
return ResponseFactory.dataArray(avatars.map((avatar) => new DocumentMetaResponseDto(avatar)));
|
||||
}
|
||||
|
||||
@UseGuards(AccessTokenGuard)
|
||||
@Get('help-support-faqs')
|
||||
@ApiDataArrayResponse(HelpSupportFaqResponseDto)
|
||||
@ApiLangRequestHeader()
|
||||
getHelpSupportFaqs(@Req() request: Request) {
|
||||
const header = request.headers['accept-language'];
|
||||
const lang = Array.isArray(header) ? header[0] : header;
|
||||
const normalized = (lang || '').trim().toLowerCase();
|
||||
|
||||
if (normalized && normalized !== LookupLanguage.EN && normalized !== LookupLanguage.AR) {
|
||||
throw new BadRequestException('Accept-Language must be "en" or "ar".');
|
||||
}
|
||||
|
||||
const faqs = this.lookupService.getHelpSupportFaqs(
|
||||
normalized === LookupLanguage.AR ? LookupLanguage.AR : LookupLanguage.EN,
|
||||
);
|
||||
|
||||
return ResponseFactory.dataArray(faqs);
|
||||
}
|
||||
}
|
||||
|
||||
72
src/common/modules/lookup/data/help-support-faqs.json
Normal file
72
src/common/modules/lookup/data/help-support-faqs.json
Normal file
@ -0,0 +1,72 @@
|
||||
[
|
||||
{
|
||||
"id": "transfer_failed_or_delayed",
|
||||
"question_en": "What happens if a transfer fails or is delayed?",
|
||||
"answer_en": "If a transfer fails, the amount will not be deducted from your balance. If a transfer is delayed, it will usually complete within a short time. If the issue continues, please contact customer support.",
|
||||
"question_ar": "ماذا يحدث إذا فشل التحويل أو تأخر؟",
|
||||
"answer_ar": "إذا فشل التحويل، لن يُخصم المبلغ من رصيدك. إذا تأخر التحويل، فعادةً يكتمل خلال وقت قصير. إذا استمرت المشكلة، يرجى التواصل مع دعم العملاء."
|
||||
},
|
||||
{
|
||||
"id": "same_email_or_phone_multiple_accounts",
|
||||
"question_en": "Can I use the same email or phone number for multiple accounts?",
|
||||
"answer_en": "No. Each email address and phone number can be used for only one account.",
|
||||
"question_ar": "هل يمكنني استخدام نفس البريد الإلكتروني أو رقم الهاتف لعدة حسابات؟",
|
||||
"answer_ar": "لا. يمكن استخدام كل بريد إلكتروني ورقم هاتف لحساب واحد فقط."
|
||||
},
|
||||
{
|
||||
"id": "update_profile_details",
|
||||
"question_en": "How do I update my profile details?",
|
||||
"answer_en": "Go to Profile - Edit Profile, update your details, and save the changes.",
|
||||
"question_ar": "كيف يمكنني تحديث بيانات ملفي الشخصي؟",
|
||||
"answer_ar": "انتقل إلى الملف الشخصي - تعديل الملف الشخصي، حدّث بياناتك ثم احفظ التغييرات."
|
||||
},
|
||||
{
|
||||
"id": "change_email_address",
|
||||
"question_en": "How do I change my email address?",
|
||||
"answer_en": "You can update your email or phone number from Profile - Edit Profile. You may be asked to re-login for security reasons.",
|
||||
"question_ar": "كيف أغيّر عنوان بريدي الإلكتروني؟",
|
||||
"answer_ar": "يمكنك تحديث بريدك الإلكتروني أو رقم هاتفك من الملف الشخصي - تعديل الملف الشخصي. قد يُطلب منك تسجيل الدخول مرة أخرى لأسباب أمنية."
|
||||
},
|
||||
{
|
||||
"id": "change_phone_number",
|
||||
"question_en": "How do I change my phone number?",
|
||||
"answer_en": "At the moment, phone numbers can’t be changed directly in the app. Please contact our support team, and they’ll assist you with updating it.",
|
||||
"question_ar": "كيف أغيّر رقم هاتفي؟",
|
||||
"answer_ar": "حاليًا لا يمكن تغيير أرقام الهواتف مباشرةً داخل التطبيق. يرجى التواصل مع فريق الدعم، وسيساعدونك في تحديثه."
|
||||
},
|
||||
{
|
||||
"id": "activate_card",
|
||||
"question_en": "How do I activate my card?",
|
||||
"answer_en": "Transfer 20 SAR to activate your card. Once completed, your card will become active.",
|
||||
"question_ar": "كيف أقوم بتفعيل بطاقتي؟",
|
||||
"answer_ar": "حوّل 20 ريالًا سعوديًا لتفعيل بطاقتك. بعد إتمام التحويل، ستصبح البطاقة نشطة."
|
||||
},
|
||||
{
|
||||
"id": "why_transfer_20_sar",
|
||||
"question_en": "Why do I need to transfer 20 SAR to activate the card?",
|
||||
"answer_en": "This amount is required to activate the card and enable usage.",
|
||||
"question_ar": "لماذا يجب علي تحويل 20 ريالًا سعوديًا لتفعيل البطاقة؟",
|
||||
"answer_ar": "هذا المبلغ مطلوب لتفعيل البطاقة وتمكين استخدامها."
|
||||
},
|
||||
{
|
||||
"id": "where_activation_amount_go",
|
||||
"question_en": "Where does the activation amount go?",
|
||||
"answer_en": "The activation amount is collected by the company as part of the card activation process.",
|
||||
"question_ar": "أين يذهب مبلغ التفعيل؟",
|
||||
"answer_ar": "يتم تحصيل مبلغ التفعيل من قبل الشركة كجزء من عملية تفعيل البطاقة."
|
||||
},
|
||||
{
|
||||
"id": "top_up_external_bank",
|
||||
"question_en": "Can I top up from an external bank account?",
|
||||
"answer_en": "Yes. You can transfer funds from your external bank to your ZOD account",
|
||||
"question_ar": "هل يمكنني الشحن من حساب بنكي خارجي؟",
|
||||
"answer_ar": "نعم. يمكنك تحويل الأموال من بنكك الخارجي إلى حسابك في زد."
|
||||
},
|
||||
{
|
||||
"id": "data_security",
|
||||
"question_en": "Is my data secure in the ZOD app?",
|
||||
"answer_en": "Yes. We use secure systems and encryption to protect your data.",
|
||||
"question_ar": "هل بياناتي آمنة في تطبيق زد؟",
|
||||
"answer_ar": "نعم. نستخدم أنظمة آمنة وتشفيرًا لحماية بياناتك."
|
||||
}
|
||||
]
|
||||
@ -0,0 +1,18 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
export class HelpSupportFaqResponseDto {
|
||||
@ApiProperty()
|
||||
id!: string;
|
||||
|
||||
@ApiProperty()
|
||||
question!: string;
|
||||
|
||||
@ApiProperty()
|
||||
answer!: string;
|
||||
|
||||
constructor(item: { id: string; question: string; answer: string }) {
|
||||
this.id = item.id;
|
||||
this.question = item.question;
|
||||
this.answer = item.answer;
|
||||
}
|
||||
}
|
||||
1
src/common/modules/lookup/dtos/response/index.ts
Normal file
1
src/common/modules/lookup/dtos/response/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './help-support-faq.response.dto';
|
||||
1
src/common/modules/lookup/enums/index.ts
Normal file
1
src/common/modules/lookup/enums/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './lookup-language.enum';
|
||||
4
src/common/modules/lookup/enums/lookup-language.enum.ts
Normal file
4
src/common/modules/lookup/enums/lookup-language.enum.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export enum LookupLanguage {
|
||||
EN = 'en',
|
||||
AR = 'ar',
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
import { Injectable, Logger } from '@nestjs/common';
|
||||
import { DocumentType } from '~/document/enums';
|
||||
import { DocumentService, OciService } from '~/document/services';
|
||||
import { HelpSupportFaqResponseDto } from '../dtos/response';
|
||||
import { LookupLanguage } from '../enums';
|
||||
import helpSupportFaqs from '../data/help-support-faqs.json';
|
||||
|
||||
@Injectable()
|
||||
export class LookupService {
|
||||
@ -33,4 +36,16 @@ export class LookupService {
|
||||
this.logger.log(`Default tasks logos returned successfully`);
|
||||
return documents;
|
||||
}
|
||||
|
||||
getHelpSupportFaqs(lang: LookupLanguage = LookupLanguage.EN): HelpSupportFaqResponseDto[] {
|
||||
const useArabic = lang === LookupLanguage.AR;
|
||||
|
||||
return helpSupportFaqs.map((faq) =>
|
||||
new HelpSupportFaqResponseDto({
|
||||
id: faq.id,
|
||||
question: useArabic ? faq.question_ar : faq.question_en,
|
||||
answer: useArabic ? faq.answer_ar : faq.answer_en,
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user