update crud user
This commit is contained in:
@@ -1,169 +1,103 @@
|
||||
const userService = require("../services/user.service");
|
||||
const { ErrorHandler } = require("../helpers/error");
|
||||
const { setResponse } = require("../helpers/utils");
|
||||
const { userSchema, newPasswordSchema } = require("../validate/user.schema");
|
||||
const UserService = require('../services/user.service');
|
||||
const { setResponse, setResponsePaging, checkValidate } = require('../helpers/utils');
|
||||
const { userSchema, newPasswordSchema } = require('../validate/user.schema');
|
||||
|
||||
class UserController {
|
||||
// Get all users
|
||||
static async getAllUsers(req, res) {
|
||||
try {
|
||||
const users = await userService.getAllUsers();
|
||||
return res.status(200).json(setResponse(users, "Users retrieved successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
static async getAll(req, res) {
|
||||
const queryParams = req.query;
|
||||
|
||||
const results = await UserService.getAllUsers(queryParams);
|
||||
const response = await setResponsePaging(queryParams, results, 'Users retrieved successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Get user by ID
|
||||
static async getUserById(req, res) {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const user = await userService.getUserById(id);
|
||||
return res.status(200).json(setResponse(user, "User retrieved successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
static async getById(req, res) {
|
||||
const { id } = req.params;
|
||||
|
||||
const results = await UserService.getUserById(id);
|
||||
const response = await setResponse(results, 'User retrieved successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Create new user
|
||||
static async createUser(req, res) {
|
||||
try {
|
||||
const { error, value } = userSchema.validate(req.body, { abortEarly: false });
|
||||
// Create user
|
||||
static async create(req, res) {
|
||||
const { error, value } = await checkValidate(userSchema, req);
|
||||
|
||||
if (error) {
|
||||
const validationErrors = error.details.map((err) => err.message);
|
||||
throw new ErrorHandler(400, validationErrors);
|
||||
}
|
||||
|
||||
// Kirim approved_by dari user yang bikin
|
||||
const result = await userService.createUser({
|
||||
...value,
|
||||
approved_by: req.user.user_id
|
||||
});
|
||||
|
||||
return res.status(201).json(setResponse(result, "User created successfully", 201));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
if (error) {
|
||||
return res.status(400).json(setResponse(error, 'Validation failed', 400));
|
||||
}
|
||||
|
||||
value.approved_by = req.user.user_id;
|
||||
|
||||
const results = await UserService.createUser(value);
|
||||
const response = await setResponse(results, 'User created successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Update user
|
||||
static async updateUser(req, res) {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const {
|
||||
fullname,
|
||||
name,
|
||||
email,
|
||||
phone,
|
||||
role_id,
|
||||
is_sa,
|
||||
is_active,
|
||||
is_approve
|
||||
} = req.body;
|
||||
const updatedById = req.user?.user_id;
|
||||
static async update(req, res) {
|
||||
const { id } = req.params;
|
||||
const { error, value } = await checkValidate(userSchema, req);
|
||||
|
||||
const result = await userService.updateUser({
|
||||
user_id: parseInt(id, 10),
|
||||
fullname,
|
||||
name,
|
||||
email,
|
||||
phone,
|
||||
role_id,
|
||||
is_sa,
|
||||
is_active,
|
||||
is_approve,
|
||||
updatedById
|
||||
});
|
||||
|
||||
console.log("PARAM ID:", req.params);
|
||||
console.log("BODY:", req.body);
|
||||
|
||||
return res.status(200).json(setResponse(result, "User updated successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
if (error) {
|
||||
return res.status(400).json(setResponse(error, 'Validation failed', 400));
|
||||
}
|
||||
|
||||
value.updated_by = req.user.user_id;
|
||||
|
||||
const results = await UserService.updateUser(id, value);
|
||||
const response = await setResponse(results, 'User updated successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Delete user
|
||||
static async deleteUser(req, res) {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const deletedBy = req.user?.user_id;
|
||||
// Soft delete user
|
||||
static async delete(req, res) {
|
||||
const { id } = req.params;
|
||||
|
||||
const result = await userService.deleteUser(id, deletedBy);
|
||||
return res.status(200).json(setResponse(result, "User deleted successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
const results = await UserService.deleteUser(id, req.user.user_id);
|
||||
const response = await setResponse(results, 'User deleted successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Change user password
|
||||
static async changePassword(req, res) {
|
||||
try {
|
||||
const { new_password } = req.body;
|
||||
const { id } = req.params;
|
||||
const { error, value } = await checkValidate(newPasswordSchema, req);
|
||||
|
||||
if (!id || !new_password) {
|
||||
throw new ErrorHandler(400, "user_id and new_password are required");
|
||||
if (error) {
|
||||
return res.status(400).json(setResponse(error, 'Validation failed', 400));
|
||||
}
|
||||
|
||||
const { error } = newPasswordSchema.validate({ new_password });
|
||||
const results = await UserService.changeUserPassword(id, value.new_password);
|
||||
const response = await setResponse(results, 'Password changed successfully');
|
||||
|
||||
if (error) {
|
||||
const errors = error.details.reduce((acc, cur) => {
|
||||
const field = Array.isArray(cur.path) ? cur.path.join('.') : String(cur.path);
|
||||
if (!acc[field]) acc[field] = [];
|
||||
acc[field].push(cur.message);
|
||||
return acc;
|
||||
}, {});
|
||||
return res.status(400).json(setResponse(errors, 'Validation failed', 400));
|
||||
}
|
||||
|
||||
const result = await userService.changeUserPassword(id, new_password);
|
||||
return res.status(200).json(setResponse(result, "Password changed successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Get all status users
|
||||
static async getAllStatusUsers(req, res) {
|
||||
try {
|
||||
const result = await userService.getAllStatusUsers();
|
||||
return res.status(200).json(setResponse(result, "Status list retrieved successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
static async getAllStatus(req, res) {
|
||||
const results = await UserService.getAllStatusUsers();
|
||||
const response = await setResponse(results, 'Status list retrieved successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
|
||||
// Approve user
|
||||
static async approveUser(req, res) {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const approverId = req.user?.user_id || null;
|
||||
static async approve(req, res) {
|
||||
const { id } = req.params;
|
||||
const approverId = req.user?.user_id || null;
|
||||
|
||||
const result = await userService.approveUser(id, approverId);
|
||||
return res.status(200).json(setResponse(result, "User approved successfully", 200));
|
||||
} catch (error) {
|
||||
return res
|
||||
.status(error.statusCode || 500)
|
||||
.json(setResponse(null, error.message, error.statusCode || 500));
|
||||
}
|
||||
const results = await UserService.approveUser(id, approverId);
|
||||
const response = await setResponse(results, 'User approved successfully');
|
||||
|
||||
res.status(response.statusCode).json(response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user