diff --git a/backend/src/modules/user/user.controller.ts b/backend/src/modules/user/user.controller.ts index 3abdee8..f624729 100644 --- a/backend/src/modules/user/user.controller.ts +++ b/backend/src/modules/user/user.controller.ts @@ -1,5 +1,4 @@ import { Request, Response } from "express"; - import { UserService } from "./user.service"; const userService = new UserService(); @@ -10,57 +9,116 @@ export class UserController { req:Request, res:Response ) { - const users = - await userService.getAll(); + try { + const users = await userService.getAll(); res.json(users); + + }catch(error){ + res.status(500).json({ + message:"Error al obtener usuarios", + error + }); + + } } async getById( req:Request, res:Response ){ - const user = - await userService.getById( + try { + + const user = await userService.getById( req.params.id as string ); + if (!user) { + return res.status(404).json({ + message: "Usuario no encontrado" + }); + } + res.json(user); + + } catch(error) { + res.status(500).json({ + message:"Error al obtener usuarios", + error + }); + } } async create ( req:Request, res:Response ) { - const user = - await userService.create( - req.body - ); - res.status(201).json(user); + try { + const user = + await userService.create( + req.body + ); + res.status(201).json(user); + + }catch(error){ + res.status(500).json({ + message:"Error al crear usuario", + error + }); + + } } async update( req:Request, res:Response ){ - const user = - await userService.update( - req.params.id as string, - req.body - ); + try{ + const user = + await userService.update( + req.params.id as string, + req.body + ); - res.json(user); + if(!user){ + return res.status(404).json({ + message:"Usuario no encontrado" + }); + } + res.status(200).json(user); + }catch(error){ + res.status(500).json({ + message:"Error al actualizar usuario", + error + }) + } } - async detele ( + async delete ( req:Request, res:Response ) { - await userService.delete( - req.params.id as string - ); - res.json({message: "Usuario eliminado"}); + try{ + const user = await userService.delete( + req.params.id as string + ); + + if (!user){ + return res.status(404).json({ + message:"Usuario no encontrado" + }); + } + + res.json({ + message: "Usuario eliminado"}); + + }catch(error){ + res.status(500).json({ + message:"Error al eliminar usuario", + error + }); + } } } \ No newline at end of file diff --git a/backend/src/modules/user/user.interface.ts b/backend/src/modules/user/user.interface.ts index bb16751..93d75de 100644 --- a/backend/src/modules/user/user.interface.ts +++ b/backend/src/modules/user/user.interface.ts @@ -1,11 +1,16 @@ -import { ObjectId } from "mongoose"; +import { Types } from "mongoose"; export interface IUser { - employeeId:number; - userName:string; - passwordHash:string; - roleId:ObjectId; - active:boolean; - lastLogin:Date; + employeeId: number; + + userName: string; + + passwordHash: string; + + roleId: Types.ObjectId; + + active: boolean; + + lastLogin?: Date; } \ No newline at end of file diff --git a/backend/src/modules/user/user.model.ts b/backend/src/modules/user/user.model.ts index 65d10f5..71d1de5 100644 --- a/backend/src/modules/user/user.model.ts +++ b/backend/src/modules/user/user.model.ts @@ -21,7 +21,7 @@ const userSchema = new mongoose.Schema({ }, roleId:{ - type:mongoose.Types.ObjectId, + type:mongoose.Schema.Types.ObjectId, ref:"Role", required:true }, diff --git a/backend/src/modules/user/user.routes.ts b/backend/src/modules/user/user.routes.ts index 9a71e15..d1e1943 100644 --- a/backend/src/modules/user/user.routes.ts +++ b/backend/src/modules/user/user.routes.ts @@ -11,10 +11,10 @@ userRouter.get("/", authMiddleware, controller.getAll); userRouter.get("/:id", authMiddleware, controller.getById); -userRouter.post("/", authMiddleware, controller.create); +userRouter.post("/", controller.create); -userRouter.put("/:id", controller.update); +userRouter.put("/:id", authMiddleware, controller.update); -userRouter.delete("/:id", controller.detele); +userRouter.delete("/:id", authMiddleware, controller.delete); export default userRouter; \ No newline at end of file diff --git a/backend/src/modules/user/user.service.ts b/backend/src/modules/user/user.service.ts index 4ffca18..63051e5 100644 --- a/backend/src/modules/user/user.service.ts +++ b/backend/src/modules/user/user.service.ts @@ -1,5 +1,6 @@ import bcrypt from "bcrypt"; import userModel from "./user.model"; +import { IUser } from "./user.interface"; export class UserService { @@ -14,12 +15,12 @@ export class UserService { id:string ) { return await userModel - .find() + .findById(id) .populate("roleId"); } async create( - data:any + data:IUser ) { const passwordHash = await bcrypt.hash( data.passwordHash, @@ -33,8 +34,14 @@ export class UserService { async update( id:string, - data:any + data:Partial ) { + if(data.passwordHash){ + data.passwordHash = await bcrypt.hash( + data.passwordHash, + 10 + ); + } return await userModel.findByIdAndUpdate( id, data,