const sharedFaqs = [
  {
    question: "چند نوع سرمایه‌گذاری داریم؟",
    answer: "2 نوع؛ سرمایه‌گذاری مستقیم و سرمایه‌گذاری غیر‌مستقیم.",
  },
  {
    question: "چند نوع صندوق‌ سرمایه‌گذاری وجود دارد؟",
    answer:
      "درآمد ثابت/ سهامی/ مختلط/ اهرمی/ بخشی/ کالایی/ طلا/ زمین‌ و ‌ساختمان/ نیکوکاری/ پروژه/ جسورانه/ شاخصی/ تضمین اصل سرمایه/ بازارگردانی/ تامین مالی.",
  },
  {
    question: "یک سرمایه‌گذار خوب چه ویژگی‌هایی دارد؟",
    answer:
      "سرمایه‌گذاری‌ای که بین ریسک و بازده صندوق رابطه معقولی برقرار باشد و نقدشوندگی بالا داشته باشد.",
  },
  {
    question: "بهترین سرمایه‌گذاری کدام است؟",
    answer:
      "تشکیل پرتفوی (سبد سهام) از انواع سرمایه‌گذاری‌ها در راستای کاهش ریسک سبد.",
  },
  {
    question: "چه روش‌هایی برای سرمایه‌گذاری در بورس وجود دارد؟",
    answer:
      "خرید سهام شرکت‌های پذیرفته‌شده در بورس یا خرید واحدهای صندوق‌های سرمایه‌گذاری.",
  },
  {
    question: "با چه افق زمانی می‌توان در صندوق‌ها سرمایه‌گذاری کرد؟",
    answer:
      "بسته به نوع صندوق از نظر ترکیب دارایی‌ها (درآمد ثابت، سهامی، طلا و …) می‌تواند کوتاه‌مدت یا بلندمدت باشد.",
  },
  {
    question: "صندوق‌های سرمایه‌گذاری امید کدامند؟",
    answer:
      "گنجینه‌مهر/ نویدانصار/ زرافشان‌امیدایرانیان/ بذرامید‌آفرین/ گنجینه امیدایرانیان و امید انصار.",
  },
  {
    question: "مجمع عمومی شرکت‌ها چیست و چرا برگزار می‌شود؟",
    answer:
      "مجمع عمومی شرکت به‌صورت سالانه و حداکثر چهارماه پس از پایان سال مالی تشکیل می‌شود و با نصف+۱ سهامداران رسمیت می‌یابد. در آن صورت‌های مالی تصویب و درباره حسابرس، تقسیم سود و سایر موارد تصمیم‌گیری می‌شود.",
  },
  {
    question: "هدف از ارایه صورت‌های مالی چیست؟",
    answer:
      "گزارش ترازنامه و سود و زیان؛ گزارشی از عملکرد و دارایی‌های شرکت طی دوره مورد گزارش.",
  },
  {
    question: "مخاطب اصلی جهت انتشار صورت‌های مالی چه کسانی هستند؟",
    answer:
      "استفاده‌کنندگان صورت‌های مالی شامل سهامداران بالفعل و بالقوه، نهادهای ناظر (مانند اداره مالیات، سازمان بورس و …)، کارهای پژوهشی و … .",
  },
  {
    question:
      "از ماهیت صندوق گفتن و اینکه چرا باید این صندوق جزو انتخاب‌های ما باشد؟",
    answer:
      "جمع‌آوری سرمایه‌های خرد جهت سرمایه‌گذاری در سهام/اوراق/سپرده به‌منظور کسب حداکثر بازده انجام می‌گیرد؛ کاهش ریسک و هزینه با وجود تیم تحلیل از مزیت‌های صندوق‌های سرمایه‌گذاری است.",
  },
  {
    question: "کدام صندوق‌ها برای من مناسب هستند؟",
    answer: "بستگی به نوع سرمایه‌گذاری شما دارد.",
  },
  {
    question: "چطور می‌توانیم سرمایه‌گذاری را شروع کنیم؟",
    answer:
      "ابتدا در سامانه سجام ثبت‌نام کنید و سپس از طریق پنل کارگزاری‌ها یا تارنمای صندوق‌ها اقدام به سرمایه‌گذاری کنید.",
  },
  {
    question: "مدت زمان مورد نیاز برای صدور و ابطال چه میزان است؟",
    answer: "در حد چند دقیقه.",
  },
  {
    question: "صدور و ابطال واحدهای صندوق سرمایه‌گذاری شامل کارمزد است؟",
    answer:
      "کارمزد اندکِ ما‌به‌التفاوت NAV صدور و ابطال در هر صندوق. در صندوق‌های درآمد ثابت حداکثر پس از ۱.۵ روز کارمزد جبران می‌شود.",
  },
  {
    question: "آیا سرمایه‌گذاری در هر صندوق همیشه سودآور است؟",
    answer:
      "در صندوق‌های با درآمد ثابت بله؛ اما در صندوق‌های سهامی یا طلا بستگی به روند بازار دارد.",
  },
  {
    question:
      "حداقل مبلغ سرمایه‌گذاری مورد نیاز برای سرمایه‌گذاری در هر صندوق چقدر است؟",
    answer:
      "به میزان حداقل قیمت هر واحد صندوق. در صندوق‌های قابل معامله، طبق الزام سازمان بورس، حداقل سفارش خرید ۵ میلیون ریال است.",
  },
  {
    question: "صندوق‌های سرمایه‌گذاری معاف از مالیات هستند؟",
    answer:
      "بله، مطابق تبصره ۱ ماده ۱۴۳ مکرر قانون مالیات‌های مستقیم، صندوق‌ها و فعالیت‌های بورسی معاف از مالیات هستند.",
  },
];

const LATEST_FUND_REGISTER_CODE = "11339";
const normalizeFundRegisterCode = (value) => String(value || "").trim();

export const publicStaticFunds = [
  {
    fundRegisterCode: "11530",
    fundName: "صندوق طلای زر",
    minimumCapitalUnit: 1,
    liquidityGurantor1: "",
    liquidityGurantor2: null,
    guaranteeRate: 0,
    marketMaker: null,
    profitGurantor: "",
    dailyReturn: 0,
    weeklyReturn: 0,
    monthlyReturn: 0,
    overallReturn: 0,
    quarterReturn: 0,
    annualReturn: 138,
    profitPeriod: 0,
    maximumCapitalUnit: 100000,
    issuanceWage: 0,
    redemtionWage: 0,
    semiYearly: 0,
    profitDay: 0,
    fundTypeTitle: "کالایی",
    managerName: "تامین سرمایه امید",
    investmentManager: "",
    auditor: "",
    custodian: "",
    registrationManager: "تامین سرمایه امید",
    publishDate: "2026-06-01T00:00:00",
    remainedUnit: 200000,
    startDate: "2026-06-01T00:00:00",
    nav: {
      seoRegisterNo: null,
      date: "2026-06-01T00:00:00",
      localDate: null,
      cancelNav: 775626,
      subscriptionNav: 775626,
      statisticNav: 779082,
      totalNetAssetValue: 123053798689258,
      totalUnit: 157947172,
      totalInvestor: 36985,
      totalCancelUnit: 0,
      totalSubscriptionUnit: 0,
      groupId: 0,
      groupName: null,
    },
    wageSettings: [],
    navAdjustSetting: [],
    websiteAddress: "https://www.omidgoldfund.ir/",
    staticContent: {
      slug: "11530",
      updatedAt: "1405/04/28 17:03:39",
      lastTradePrice: "ریال 801,690",
      closingPrice: "ریال 798,136",
      averageAnnualReturn: "138%",
      heroSubtitle: "صندوق طلای زر",
      summary: "با این صندوق به هر میزان که خواستی می‌تونی در طلا ...",
      chips: [
        "کالایی",
        "قابل معامله",
        "میان مدت",
        "ریسک متوسط",
        "طلا",
        "سطح ریسک 3 از ۵",
      ],
      benefitsTitle: "مزیت سرمایه‌گذاری در صندوق طلای زر",
      suitabilityTitle: "صندوق طلای زر مناسب چه کسانی است؟",
      suitabilitySubtitle:
        "با این صندوق به هر میزان که خواستی می‌تونی در طلا ...",
      metrics: [
        {
          title: "کل ارزش خالص دارایی‌ها",
          value: "133,372,320,590,636 ریال",
          helper: "ارزش روز دارایی‌های صندوق منهای بدهی‌ها",
        },
        {
          title: "سطح ریسک",
          value: "سطح ریسک 3 از ۵",
          helper: "هرچه تغییرات قیمت بیشتر باشد، ریسک بیشتر است.",
        },
        {
          title: "تعداد واحدهای سرمایه‌گذاری",
          value: "۱۵۷,۹۴۷,۱۷۱",
          helper: "تعداد واحد‌ها نزد سرمایه‌گذاران",
        },
        {
          title: "تعداد سرمایه‌گذاران",
          value: "164,333,822",
          helper: "حقیقی و حقوقی",
        },
        {
          title: "کارمزد مدیریت",
          value: "ندارد",
          helper: "نرخ سالانه بابت مخارج مدیریت صندوق",
        },
        {
          title: "دوره تقسیم سود",
          value: "ندارد",
          helper: "سود دوره‌ای تقسیم نمی‌شود",
        },
      ],
      benefits: [
        {
          title: "شروع با حداقل سرمایه",
          description: "امکان سرمایه‌گذاری حتی با مبلغ 500 هزار تومان",
        },
        {
          title: "نقدشوندگی بالا",
          description: "امکان خرید و فروش واحدها به‌صورت آنی در بازار",
        },
        {
          title: "کم‌هزینه",
          description: "معاف از مالیات و کارمزدهای پایین مدیریت",
        },
        {
          title: "امن و کاملاً آنلاین",
          description: "خرید و مدیریت سرمایه‌گذاری کاملاً امن و اینترنتی",
        },
      ],
      faqs: sharedFaqs,
      investUrl: "https://my.omidib.ir/",
      websiteUrl: "https://www.omidgoldfund.ir/",
    },
  },
];

export const mergePublicStaticFunds = (fundsResponse) => {
  const mergeItems = (items = []) => {
    const fundsByCode = new Map();

    items.forEach((fund) => {
      const fundRegisterCode = normalizeFundRegisterCode(
        fund?.fundRegisterCode,
      );
      if (fundRegisterCode) {
        fundsByCode.set(fundRegisterCode, fund);
      }
    });

    publicStaticFunds.forEach((fund) => {
      const fundRegisterCode = normalizeFundRegisterCode(
        fund?.fundRegisterCode,
      );
      if (!fundsByCode.has(fundRegisterCode)) {
        fundsByCode.set(fundRegisterCode, fund);
      }
    });

    const mergedItems = Array.from(fundsByCode.values());
    const latestFundIndex = mergedItems.findIndex(
      (fund) =>
        normalizeFundRegisterCode(fund?.fundRegisterCode) ===
        LATEST_FUND_REGISTER_CODE,
    );

    if (latestFundIndex >= 0) {
      const [latestFund] = mergedItems.splice(latestFundIndex, 1);
      mergedItems.push(latestFund);
    }

    return mergedItems;
  };

  if (Array.isArray(fundsResponse)) {
    return mergeItems(fundsResponse);
  }

  for (const key of ["items", "funds", "data"]) {
    if (Array.isArray(fundsResponse?.[key])) {
      const mergedItems = mergeItems(fundsResponse[key]);
      return {
        ...fundsResponse,
        [key]: mergedItems,
        totalItemCount:
          key === "items" &&
          Number.isFinite(Number(fundsResponse?.totalItemCount))
            ? mergedItems.length
            : fundsResponse?.totalItemCount,
        firstItemOnPage:
          key === "items"
            ? mergedItems.length
              ? 1
              : 0
            : fundsResponse?.firstItemOnPage,
        lastItemOnPage:
          key === "items" ? mergedItems.length : fundsResponse?.lastItemOnPage,
      };
    }
  }

  return fundsResponse;
};
