constAppDataSource=require('../config/database');constUser=require('../entities/User');// Import User entityconstRole=require('../entities/Role');// Import Role entityconstUserRole=require('../entities/UserRole');// Import UserRole entity/** * নির্দিষ্ট একটি ব্যবহারকারীকে নির্দিষ্ট একটি ভূমিকা (Role) অ্যাসাইন করার ফাংশন। * @function assignRoleToUser * @param{object}req - রিকোয়েস্ট অবজেক্ট যা ব্যবহারকারীর ইনপুট ডেটা ধারণ করে। * @param{object}res - রেসপন্স অবজেক্ট যা ক্লায়েন্টকে রেসপন্স পাঠাতে ব্যবহৃত হয়। * @returns{Promise<void>} - ফাংশনটি একটি প্রমিস রিটার্ন করে যা রিকোয়েস্ট সম্পন্ন হওয়ার পর রেসপন্স প্রদান করে। */constassignRoleToUser=async(req,res)=>{// রিকোয়েস্ট বডি থেকে ইউজার আইডি এবং রোল আইডি গ্রহণ করা হচ্ছেconst{userId,roleId}=req.body;try{// ইউজার এবং রোল রেপোজিটরি তৈরি করা হচ্ছেconstuserRepository=AppDataSource.getRepository(User);constroleRepository=AppDataSource.getRepository(Role);constuserRoleRepository=AppDataSource.getRepository(UserRole);// ইউজার এবং রোল খুঁজে বের করা হচ্ছেconstuser=awaituserRepository.findOne({where:{id:userId}});constrole=awaitroleRepository.findOne({where:{id:roleId}});if (!user) {// যদি ইউজার না পাওয়া যায়, তাহলে 404 স্টেটাস কোড এবং একটি মেসেজ পাঠানো হচ্ছেreturnres.status(404).json({message:'ব্যবহারকারী খুঁজে পাওয়া যায়নি।'});}if (!role) {// যদি রোল না পাওয়া যায়, তাহলে 404 স্টেটাস কোড এবং একটি মেসেজ পাঠানো হচ্ছেreturnres.status(404).json({message:'ভূমিকা (Role) খুঁজে পাওয়া যায়নি।'});}// চেক করা হচ্ছে এই রোলটি ইতোমধ্যে ব্যবহারকারীর কাছে অ্যাসাইন করা আছে কিনাconstexistingUserRole=awaituserRoleRepository.findOne({where:{user:{id:userId},role:{id:roleId}}});if (existingUserRole) {returnres.status(400).json({message:'এই রোলটি ইতোমধ্যে ব্যবহারকারীর কাছে অ্যাসাইন করা আছে।'});}// নতুন UserRole তৈরি করা হচ্ছে এবং ডাটাবেজে সংরক্ষণ করা হচ্ছেconstuserRole=newUserRole();userRole.user=user;userRole.role=role;awaituserRoleRepository.save(userRole);// সফলভাবে রোল অ্যাসাইন করা হয়েছে এমন মেসেজ পাঠানো হচ্ছেreturnres.status(200).json({message:'ভূমিকা (Role) সফলভাবে ব্যবহারকারীকে অ্যাসাইন করা হয়েছে।'});}catch (err) {// যদি কোন অপ্রত্যাশিত ত্রূটি ঘটে, তাহলে 500 স্টেটাস কোড এবং ত্রূটির মেসেজ পাঠানো হচ্ছেreturnres.status(500).json({message:'ভূমিকা অ্যাসাইন করতে ত্রূটি ঘটেছে।',error:err.message});}};module.exports={assignRoleToUser,};