Hozifa Elgharbawy commited on
Commit
3787f0d
·
1 Parent(s): 5981b95
src/common/models/user.model.ts CHANGED
@@ -35,7 +35,7 @@ export interface IUser {
35
 
36
  const userSchema = new Schema({
37
  name: { type: String, required: true },
38
- email: { type: String, required: true, unique: true, dropDups: true },
39
  password: { type: String, required: true },
40
  image: { type: Object },
41
  gender: {
 
35
 
36
  const userSchema = new Schema({
37
  name: { type: String, required: true },
38
+ email: { type: String, required: true },
39
  password: { type: String, required: true },
40
  image: { type: Object },
41
  gender: {
src/common/validations/user-register.validation.ts CHANGED
@@ -132,15 +132,15 @@ export const userRegisterKeys = {
132
  }),
133
  preferred_days: joi
134
  .array()
135
- .valid(...Object.values(PreferredDay))
136
  .empty()
137
  .required()
138
  .items(
139
- joi.string().empty().required().messages({
140
- "string.base": "please enter a valid preferred_days",
141
- "any.required": "preferred_days must be entered",
142
- "string.empty": "preferred_days cannot be empty",
143
- })
 
144
  ),
145
  workout_place: joi
146
  .string()
@@ -154,28 +154,28 @@ export const userRegisterKeys = {
154
  }),
155
  preferred_equipment: joi
156
  .array()
157
- .valid(...Object.values(PreferredEquipment))
158
  .empty()
159
  .required()
160
  .items(
161
- joi.string().empty().required().messages({
162
- "string.base": "please enter a valid preferred_equipment",
163
- "any.required": "preferred_equipment must be entered",
164
- "string.empty": "preferred_equipment cannot be empty",
165
- })
 
166
  ),
167
  }),
168
  injuries: joi
169
  .array()
170
- .valid(...Object.values(Injury))
171
  .empty()
172
  .required()
173
  .items(
174
- joi.string().empty().required().messages({
175
- "string.base": "please enter a valid injuries",
176
- "any.required": "injuries must be entered",
177
- "string.empty": "injuries cannot be empty",
178
- })
 
179
  ),
180
  dob: joi.date().empty().optional().messages({
181
  "date.base": "please enter a valid date",
 
132
  }),
133
  preferred_days: joi
134
  .array()
 
135
  .empty()
136
  .required()
137
  .items(
138
+ joi.string().valid(...Object.values(PreferredDay))
139
+ .empty().required().messages({
140
+ "string.base": "please enter a valid preferred_days",
141
+ "any.required": "preferred_days must be entered",
142
+ "string.empty": "preferred_days cannot be empty",
143
+ })
144
  ),
145
  workout_place: joi
146
  .string()
 
154
  }),
155
  preferred_equipment: joi
156
  .array()
 
157
  .empty()
158
  .required()
159
  .items(
160
+ joi.string().valid(...Object.values(PreferredEquipment))
161
+ .empty().required().messages({
162
+ "string.base": "please enter a valid preferred_equipment",
163
+ "any.required": "preferred_equipment must be entered",
164
+ "string.empty": "preferred_equipment cannot be empty",
165
+ })
166
  ),
167
  }),
168
  injuries: joi
169
  .array()
 
170
  .empty()
171
  .required()
172
  .items(
173
+ joi.string().valid(...Object.values(Injury))
174
+ .empty().required().messages({
175
+ "string.base": "please enter a valid injuries",
176
+ "any.required": "injuries must be entered",
177
+ "string.empty": "injuries cannot be empty",
178
+ })
179
  ),
180
  dob: joi.date().empty().optional().messages({
181
  "date.base": "please enter a valid date",
src/modules/console/modules/admins/controllers/admins.controller.ts CHANGED
@@ -14,7 +14,7 @@ import { serialize } from "@helpers/serialize";
14
  import { AdminSerialization } from "src/modules/console/common/serializers/admin.serializtion";
15
 
16
  @Prefix("/console/admins")
17
- @ControllerMiddleware(AdminGuardMiddleware({ roles: [Role.SUPER_ADMIN] }))
18
  export class AdminsController extends BaseController {
19
  private adminsService = new AdminsService();
20
 
@@ -23,8 +23,8 @@ export class AdminsController extends BaseController {
23
  this.router.get("/:id", paramsValidator("id"), asyncHandler(this.get));
24
  this.router.post(
25
  "/",
26
- bodyValidator(createAdminSchema),
27
- asyncHandler(this.create)
28
  );
29
  this.router.patch(
30
  "/:id",
 
14
  import { AdminSerialization } from "src/modules/console/common/serializers/admin.serializtion";
15
 
16
  @Prefix("/console/admins")
17
+ // @ControllerMiddleware(AdminGuardMiddleware({ roles: [Role.SUPER_ADMIN] }))
18
  export class AdminsController extends BaseController {
19
  private adminsService = new AdminsService();
20
 
 
23
  this.router.get("/:id", paramsValidator("id"), asyncHandler(this.get));
24
  this.router.post(
25
  "/",
26
+
27
+ this.create
28
  );
29
  this.router.patch(
30
  "/:id",
src/modules/console/modules/users/controllers/users.controller.ts CHANGED
@@ -17,7 +17,6 @@ export class AdminUsersController extends BaseController {
17
  setRoutes() {
18
  this.router.post(
19
  "/create",
20
- bodyValidator(userRegisterSchema),
21
  asyncHandler(this.create)
22
  );
23
  }
 
17
  setRoutes() {
18
  this.router.post(
19
  "/create",
 
20
  asyncHandler(this.create)
21
  );
22
  }
src/modules/users/auth/controllers/auth.controller.ts CHANGED
@@ -29,8 +29,9 @@ export class UsersAuthController extends BaseController {
29
 
30
  register = async (req: Request, res: Response) => {
31
  const user = await this.authService.register(req.body as IUserRegister);
 
32
  const response = new JsonResponse({
33
- data: serialize(user, UserSerialization),
34
  });
35
  return res.json(response);
36
  };
@@ -38,7 +39,7 @@ export class UsersAuthController extends BaseController {
38
  login = async (req: Request, res: Response) => {
39
  const { user, token } = await this.authService.login(req.body);
40
  const response = new JsonResponse({
41
- data: { user: serialize(user, UserSerialization), token },
42
  });
43
  return res.json(response);
44
  };
 
29
 
30
  register = async (req: Request, res: Response) => {
31
  const user = await this.authService.register(req.body as IUserRegister);
32
+
33
  const response = new JsonResponse({
34
+ data: serialize(user.toJSON(),UserSerialization),
35
  });
36
  return res.json(response);
37
  };
 
39
  login = async (req: Request, res: Response) => {
40
  const { user, token } = await this.authService.login(req.body);
41
  const response = new JsonResponse({
42
+ data: { user, token },
43
  });
44
  return res.json(response);
45
  };
src/routes.ts CHANGED
@@ -30,13 +30,26 @@ const setCustomRoutes = (router: Router) => {
30
  .status(404)
31
  .json({ success: false, message: "Invalid URL!", code: 404 });
32
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  };
34
 
35
  /* importing all controllers */
36
 
37
  const findControllerFiles = (): string[] => {
38
  const controllersPath = path.relative(process.cwd(), path.join(__dirname, "**/*.controller.{ts,js}")).replace(/\\/g, "/")
39
-
40
  return glob.sync(controllersPath, {}).map((file) => {
41
  return path.resolve(file);
42
  });
 
30
  .status(404)
31
  .json({ success: false, message: "Invalid URL!", code: 404 });
32
  });
33
+ router.use((err, req, res, next) => {
34
+ try {
35
+ err.message = JSON.parse(err.message);
36
+ } catch (error) { }
37
+
38
+ res.status(err.status || 500).json({
39
+ status: err.status || 500,
40
+ message: err.message || "Internal Server Error",
41
+ });
42
+
43
+ console.error(err.message, err.stack);
44
+ });
45
+
46
  };
47
 
48
  /* importing all controllers */
49
 
50
  const findControllerFiles = (): string[] => {
51
  const controllersPath = path.relative(process.cwd(), path.join(__dirname, "**/*.controller.{ts,js}")).replace(/\\/g, "/")
52
+
53
  return glob.sync(controllersPath, {}).map((file) => {
54
  return path.resolve(file);
55
  });