ExpressJs

⌘K
  1. Home
  2. Docs
  3. ExpressJs
  4. Role And Permission
  5. 6.UserUserGroup (কোন ইউজারের কোন usergroup)

6.UserUserGroup (কোন ইউজারের কোন usergroup)

const { EntitySchema } = require('typeorm');

module.exports = new EntitySchema({
    name: 'UserUserGroup',
    tableName: 'user_usergroups',
    columns: {
        userId: {
            name: 'user_id',
            type: 'int',
            primary: true,
        },
        usergroupId: {
            name: 'usergroup_id',
            type: 'int',
            primary: true,
        },
    },
    relations: {
        user: {
            type: 'many-to-one',
            target: 'User',
            joinColumn: { name: 'user_id' },
            onDelete: 'CASCADE',
        },
        usergroup: {
            type: 'many-to-one',
            target: 'UserGroup',
            joinColumn: { name: 'usergroup_id' },
            onDelete: 'CASCADE',
        },
    },
});
const { AppDataSource } = require('../../../index');
const UserUserGroup = require('../entities/userUserGroup.entity');

/**
 * Format the userUserGroup response to exclude sensitive or unnecessary fields.
 * @param {object} userUserGroup - The userUserGroup entity object.
 * @returns {object} - The formatted userUserGroup response.
 */
const formatUserUserGroupResponse = (userUserGroup) => {
    if (!userUserGroup) return null;
    return {
        userId: userUserGroup.userId,
        usergroupId: userUserGroup.usergroupId,
    };
};

/**
 * Create a new UserUserGroup entry.
 * @param {object} data - The data to create the userUserGroup.
 * @returns {Promise<object>} - The saved userUserGroup response.
 */
const createUserUserGroup = async (data) => {
    const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
    const userUserGroup = userUserGroupRepository.create(data);
    const savedUserUserGroup = await userUserGroupRepository.save(userUserGroup);
    return formatUserUserGroupResponse(savedUserUserGroup);
};

/**
 * Find a UserUserGroup by its userId and usergroupId.
 * @param {number} userId - The ID of the user.
 * @param {number} usergroupId - The ID of the user group.
 * @returns {Promise<object>} - The found userUserGroup or null.
 */
const findUserUserGroupById = async (userId, usergroupId) => {
    const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
    const userUserGroup = await userUserGroupRepository.findOne({
        where: { userId, usergroupId },
    });
    return formatUserUserGroupResponse(userUserGroup);
};

/**
 * Update a UserUserGroup entry.
 * @param {number} userId - The ID of the user.
 * @param {number} usergroupId - The ID of the user group.
 * @param {object} newData - The data to update the userUserGroup.
 * @returns {Promise<object>} - The updated userUserGroup or null if not found.
 */
const updateUserUserGroup = async (userId, usergroupId, newData) => {
    const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
    const userUserGroup = await userUserGroupRepository.findOne({ where: { userId, usergroupId } });
    if (!userUserGroup) return null;

    Object.assign(userUserGroup, newData); // Update the existing fields
    const updatedUserUserGroup = await userUserGroupRepository.save(userUserGroup);
    return formatUserUserGroupResponse(updatedUserUserGroup);
};

/**
 * Delete a UserUserGroup by userId and usergroupId.
 * @param {number} userId - The ID of the user.
 * @param {number} usergroupId - The ID of the user group.
 * @returns {Promise<number>} - Number of affected rows (0 if not found).
 */
const deleteUserUserGroup = async (userId, usergroupId) => {
    const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
    const result = await userUserGroupRepository.delete({ userId, usergroupId });
    return result.affected; // Returns 1 if deleted, 0 if not found
};

/**
 * Get all UserUserGroup entries.
 * @returns {Promise<Array>} - List of all userUserGroups.
 */
const getAllUserUserGroups = async () => {
    const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
    const userUserGroups = await userUserGroupRepository.find();
    return userUserGroups.map(formatUserUserGroupResponse);
};

module.exports = {
    createUserUserGroup,
    findUserUserGroupById,
    updateUserUserGroup,
    deleteUserUserGroup,
    getAllUserUserGroups,
};
const userUserGroupService = require('../services/userUserGroup.service');

/**
 * Controller to handle creating a new userUserGroup.
 * @param {object} req - The request object with the userId and usergroupId in the body.
 * @param {object} res - The response object.
 * @returns {Promise<void>}
 */
const createUserUserGroup = async (req, res) => {
    const { userId, usergroupId } = req.body;

    try {
        const newUserUserGroup = await userUserGroupService.createUserUserGroup({ userId, usergroupId });
        res.status(201).json({ message: 'UserUserGroup created successfully', userUserGroup: newUserUserGroup });
    } catch (error) {
        res.status(500).json({ message: 'Error creating userUserGroup', error: error.message });
    }
};

/**
 * Controller to get a userUserGroup by userId and usergroupId.
 * @param {object} req - The request object with userId and usergroupId as params.
 * @param {object} res - The response object.
 * @returns {Promise<void>}
 */
const getUserUserGroupById = async (req, res) => {
    const { userId, usergroupId } = req.params;

    try {
        const userUserGroup = await userUserGroupService.findUserUserGroupById(userId, usergroupId);
        if (!userUserGroup) {
            return res.status(404).json({ message: 'UserUserGroup not found' });
        }
        res.status(200).json(userUserGroup);
    } catch (error) {
        res.status(500).json({ message: 'Error retrieving userUserGroup', error: error.message });
    }
};

/**
 * Controller to update an existing userUserGroup.
 * @param {object} req - The request object with userId and usergroupId as params and data in the body.
 * @param {object} res - The response object.
 * @returns {Promise<void>}
 */
const updateUserUserGroup = async (req, res) => {
    const { userId, usergroupId } = req.params;
    const newData = req.body;

    try {
        const updatedUserUserGroup = await userUserGroupService.updateUserUserGroup(userId, usergroupId, newData);
        if (!updatedUserUserGroup) {
            return res.status(404).json({ message: 'UserUserGroup not found' });
        }
        res.status(200).json({ message: 'UserUserGroup updated successfully', userUserGroup: updatedUserUserGroup });
    } catch (error) {
        res.status(500).json({ message: 'Error updating userUserGroup', error: error.message });
    }
};

/**
 * Controller to delete a userUserGroup.
 * @param {object} req - The request object with userId and usergroupId as params.
 * @param {object} res - The response object.
 * @returns {Promise<void>}
 */
const deleteUserUserGroup = async (req, res) => {
    const { userId, usergroupId } = req.params;

    try {
        const deleted = await userUserGroupService.deleteUserUserGroup(userId, usergroupId);
        if (!deleted) {
            return res.status(404).json({ message: 'UserUserGroup not found' });
        }
        res.status(200).json({ message: 'UserUserGroup deleted successfully' });
    } catch (error) {
        res.status(500).json({ message: 'Error deleting userUserGroup', error: error.message });
    }
};

/**
 * Controller to get all userUserGroups.
 * @param {object} req - The request object.
 * @param {object} res - The response object.
 * @returns {Promise<void>}
 */
const getAllUserUserGroups = async (req, res) => {
    try {
        const userUserGroups = await userUserGroupService.getAllUserUserGroups();
        res.status(200).json(userUserGroups);
    } catch (error) {
        res.status(500).json({ message: 'Error retrieving userUserGroups', error: error.message });
    }
};

module.exports = {
    createUserUserGroup,
    getUserUserGroupById,
    updateUserUserGroup,
    deleteUserUserGroup,
    getAllUserUserGroups,
};
const express = require('express');
const router = express.Router();
const userUserGroupController = require('../controllers/userUserGroup.controller');

// Routes for userUserGroup CRUD operations
router.post('/user-user-groups', userUserGroupController.createUserUserGroup);
router.get('/user-user-groups/:userId/:usergroupId', userUserGroupController.getUserUserGroupById);
router.put('/user-user-groups/:userId/:usergroupId', userUserGroupController.updateUserUserGroup);
router.delete('/user-user-groups/:userId/:usergroupId', userUserGroupController.deleteUserUserGroup);
router.get('/user-user-groups', userUserGroupController.getAllUserUserGroups);

module.exports = router;
    const userUserGroupRoutes = require('./modules/Authentication/routes/userUserGroupRoutes');
    app.use('/api', userUserGroupRoutes); 
/**
 * নির্দিষ্ট ইউজারকে একটি ইউজারগ্রুপে অ্যাসাইন করার জন্য মেথড
 * @function assignUserToUserGroup
 * @description এই মেথডটি নির্দিষ্ট ব্যবহারকারীকে একটি নির্দিষ্ট ইউজারগ্রুপে অ্যাসাইন করে।
 * @param {object} req - রিকোয়েস্ট অবজেক্ট যা ইউজার আইডি এবং ইউজারগ্রুপ আইডি ধারণ করে।
 * @param {object} res - রেসপন্স অবজেক্ট যা ক্লায়েন্টকে রেসপন্স পাঠাতে ব্যবহৃত হয়।
 * @returns {Promise<void>} - ফাংশনটি একটি প্রমিস রিটার্ন করে যা রিকোয়েস্ট সম্পন্ন হওয়ার পর রেসপন্স প্রদান করে।
 */
const assignUserToUserGroup = async (req, res) => {
    const { userId, userGroupId } = req.body;

    const userRepository = getRepository(User);
    const userGroupRepository = getRepository(UserGroup);

    try {
        // চেক করা হচ্ছে ব্যবহারকারী এবং ইউজারগ্রুপ বিদ্যমান কিনা
        const user = await userRepository.findOne({ where: { id: userId } });
        const userGroup = await userGroupRepository.findOne({ where: { id: userGroupId } });

        if (!user) {
            return res.status(404).json({ message: 'ব্যবহারকারী পাওয়া যায়নি' });
        }

        if (!userGroup) {
            return res.status(404).json({ message: 'ইউজারগ্রুপ পাওয়া যায়নি' });
        }

        // ইউজারকে ইউজারগ্রুপে অ্যাসাইন করা হচ্ছে
        user.userGroup = userGroup;
        await userRepository.save(user);

        // সফলতার মেসেজ রিটার্ন করা হচ্ছে
        return res.status(200).json({ message: 'ব্যবহারকারী সফলভাবে ইউজারগ্রুপে অ্যাসাইন করা হয়েছে' });

    } catch (err) {
        // ত্রুটি হলে 500 স্টেটাস কোড এবং ত্রুটির মেসেজ পাঠানো হচ্ছে
        return res.status(500).json({ message: 'ব্যবহারকারীকে ইউজারগ্রুপে অ্যাসাইন করতে ত্রুটি', error: err.message });
    }
};

How can we help?