/** * ترجع ج٠Ùع اÙÙئات اÙ٠تÙاجدة Ù٠٠صÙÙÙØ© اÙÙتاÙ٠بدÙ٠تÙرارات. * @param {Array} fatawaArray - ٠صÙÙÙØ© اÙÙتاÙ٠اÙت٠Ùت٠استخدا٠Ùا Ùاسترداد اÙÙئات. * @returns {Array} - ٠صÙÙÙØ© تØتÙ٠عÙ٠ج٠Ùع اÙÙئات اÙÙ ÙجÙدة بدÙ٠تÙرار. */ function getAllCategories(fatawaArray) { let allCategories = []; fatawaArray.forEach(fatwa => { allCategories = allCategories.concat(fatwa.categories); }); // استخدا٠Set ÙإزاÙØ© اÙتÙرارات Ùإعادة اÙتØÙÙ٠إÙ٠٠صÙÙÙØ© return Array.from(new Set(allCategories)); } /** * ترجع ٠صÙÙÙØ© تØتÙ٠عÙ٠أس٠اء اÙÙئات ٠ع عدد اÙÙ ÙاضÙع اÙ٠رتبطة بÙا. * @param {Array} fatawaArray - ٠صÙÙÙØ© اÙÙتاÙ٠اÙت٠تØتÙ٠عÙ٠اÙبÙاÙات. * @returns {Array} - ٠صÙÙÙØ© تØتÙ٠عÙÙ ÙائÙات ت٠ث٠ÙÙ Ùئة ٠ع عدد اÙÙ ÙاضÙع اÙ٠رتبطة بÙا. * @throws {Error} - ÙÙ ØاÙØ© عد٠تÙÙر ٠صÙÙÙØ© اÙÙتاÙ٠أ٠ØدÙØ« خطأ أثÙاء ٠عاÙجة اÙبÙاÙات. */ function getCategorysWithCounts(fatawaArray) { if (!Array.isArray(fatawaArray)) { throw new Error('٠صÙÙÙØ© اÙÙتاÙ٠غÙر صاÙØØ©.'); } const categoryCounts = new Map(); // تج٠Ùع اÙÙتاÙÙات بÙاء٠عÙ٠اÙÙئات fatawaArray.forEach(fatwa => { fatwa.categories.forEach(category => { if (categoryCounts.has(category)) { categoryCounts.set(category, categoryCounts.get(category) + 1); } else { categoryCounts.set(category, 1); } }); }); // تØÙÙ٠اÙخرÙطة Ø¥Ù٠٠صÙÙÙØ© ٠٠اÙأزÙاج { category, numberOfFatwas } const categoriesWithCounts = Array.from(categoryCounts, ([category, numberOfFatwas]) => ({ category, numberOfFatwas })); return categoriesWithCounts; } /** * ترجع ج٠Ùع اÙÙتاÙ٠اÙت٠تÙت٠٠إÙÙ Ùئة Ù Øددة. * @param {Array} fatawaArray - ٠صÙÙÙØ© اÙÙتاÙ٠اÙت٠Ùت٠اÙبØØ« ÙÙÙا. * @param {string} targetCategory - اÙÙئة اÙ٠ستÙدÙØ© Ùاسترجاع اÙÙتاÙ٠اÙ٠رتبطة بÙا. * @returns {Array} - ٠صÙÙÙØ© تØتÙ٠عÙ٠ج٠Ùع اÙÙتاÙ٠اÙÙ Ùت٠ÙØ© Ø¥Ù٠اÙÙئة اÙÙ Øددة. */ function getFatwasForCategory(fatawaArray, targetCategory) { return fatawaArray.filter(fatwa => fatwa.categories.includes(targetCategory)); } /** * ترجع اÙÙتÙ٠اÙÙ ÙجÙدة Ù٠٠صÙÙÙØ© اÙÙتاÙ٠بÙاء٠عÙ٠اÙ٠عر٠(ID). * @param {Array} fatawaArray - ٠صÙÙÙØ© اÙÙتاÙ٠اÙت٠Ùت٠اÙبØØ« ÙÙÙا. * @param {string|number} fatwaId - اÙ٠عر٠(ID) ÙÙÙتÙ٠اÙÙ Ø·ÙÙبة. * @returns {Object|null} - اÙÙتÙ٠اÙÙ Ø·ÙÙبة إذا ت٠اÙعثÙر عÙÙÙØ§Ø Ø£Ù ÙÙÙ Ø© null إذا ÙÙ Ùت٠اÙعثÙر عÙÙÙا. */ function getFatwaById(fatawaArray, fatwaId) { const fatwaMap = new Map(fatawaArray.map(fatwa => [fatwa.id.toString(), fatwa])); // اÙبØØ« ع٠اÙÙتÙ٠باستخدا٠اÙ٠عر٠(ID) ÙÙ ÙØªØ§Ø Ù٠اÙخرÙطة return fatwaMap.get(fatwaId.toString()) || null; } // تصدÙر اÙدÙا٠ÙÙاستخدا٠Ù٠سÙا٠آخر export { getAllCategories, getCategorysWithCounts, getFatwasForCategory, getFatwaById };