Skip to content

Commit

Permalink
validation integration
Browse files Browse the repository at this point in the history
  • Loading branch information
PluckySquirrel committed Nov 6, 2024
1 parent 1216f72 commit 232a096
Show file tree
Hide file tree
Showing 23 changed files with 445 additions and 174 deletions.
11 changes: 11 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"connect-mysql": "^4.0.0",
"connect-mysql2": "^2.2.6",
"cookie-parser": "^1.4.6",
"date-fns": "^4.1.0",
"dotenv": "^16.4.5",
"express": "^4.21.1",
"express-async-errors": "^3.1.1",
Expand Down
4 changes: 2 additions & 2 deletions src/controller/comment.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const updateCommentPost = asyncHandler(
}

const commentData = new CommentDTO();
commentData.comment_text = updatedText;
commentData.parent_id = undefined;

// Update comment and save to database
comment.comment_text = updatedText;
Expand Down Expand Up @@ -92,7 +92,7 @@ export const createCommentPost = asyncHandler(
commentData.review_id = review_id;
commentData.user_id = user_id;
commentData.comment_text = reply;
commentData.parent_id = parent_id;
commentData.parent_id = parent_id ? parent_id : undefined;
commentData.course_id = course_id;

try {
Expand Down
2 changes: 0 additions & 2 deletions src/controller/course.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ export const courseShowGet = asyncHandler(
filterData.sortOrder = sortOrder;
}

await validateOrReject(filterData);

try {
await validateOrReject(filterData);
const trans = {
Expand Down
6 changes: 3 additions & 3 deletions src/controller/enrollment.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import asyncHandler from 'express-async-handler';
import { updateEnrollmentProgress, enrollUserInCourse, getEnrollment, markLessonAsDone, hasUserPurchasedCourse, getEnrollmentWithCourseAndUser } from '../service/enrollment.service';
import { getProfessorAndCourseCountByCourseId, getSectionsWithLessons, countEnrolledUsersInCourse, getCourseById, getProfessorByCourse } from '../service/course.service';
import { getAllCommentsByCourseId } from '../service/comment.service';
import { getUserById } from '@src/service/user.service';
import { getEnrollmentLesson } from '@src/service/enrollmentlesson.service';
import { getUserById } from 'src/service/user.service';
import { getEnrollmentLesson } from 'src/service/enrollmentlesson.service';
import { validateOrReject } from 'class-validator';
import { plainToInstance } from 'class-transformer';
import { GetUserCourseEnrollmentsDto, UpdateLessonProgressDto } from '@src/entity/dto/entrollment.dto';
import { GetUserCourseEnrollmentsDto, UpdateLessonProgressDto } from 'src/entity/dto/entrollment.dto';


export const getUserCourseEnrollments = asyncHandler(async (req: Request, res: Response) => {
Expand Down
22 changes: 18 additions & 4 deletions src/controller/lesson.controller.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Request, Response } from 'express';
import asyncHandler from 'express-async-handler';
import { createLesson, deleteLesson, findLessonById, getAllLessons, saveLesson } from '../service/lession.service';
import { plainToInstance } from 'class-transformer';
import { LessonCreateDto, LessonUpdateDto } from '@src/entity/dto/lesson.dto';
import { LessonCreateDto, LessonUpdateDto } from 'src/entity/dto/lesson.dto';
import { validate } from 'class-validator';

// Get the list of lessons
Expand All @@ -16,7 +15,15 @@ export const lessonCreateGet = asyncHandler(async (req: Request, res: Response):
});

export const lessonCreatePost = asyncHandler(async (req: Request, res: Response): Promise<void> => {
const lessonData = plainToInstance(LessonCreateDto, req.body);
const lessonData = new LessonCreateDto()
lessonData.content = req.body.content
lessonData.description = req.body.description
lessonData.name = req.body.name
lessonData.progress = req.body.progress
lessonData.section_id = req.body.section_id
lessonData.time = req.body.time
lessonData.type = req.body.type

const errors = await validate(lessonData);

if (errors.length > 0) {
Expand Down Expand Up @@ -65,7 +72,14 @@ export const lessonUpdatePost = asyncHandler(async (req: Request, res: Response)
return res.status(404).render('error', { message: req.t('course.lesson_not_found') });
}

const lessonData = plainToInstance(LessonUpdateDto, req.body);
const lessonData = new LessonUpdateDto()
lessonData.content = req.body.content ? req.body.content : undefined
lessonData.description = req.body.description ? req.body.description : undefined
lessonData.name = req.body.name ? req.body.name : undefined
lessonData.progress = req.body.progress ? req.body.progress : undefined
lessonData.time = req.body.time ? req.body.time : undefined
lessonData.type = req.body.type ? req.body.type : undefined

const errors = await validate(lessonData);

if (errors.length > 0) {
Expand Down
4 changes: 2 additions & 2 deletions src/controller/payment.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
} from "../service/payment.service";
import { getCourseById } from "../service/course.service";
import { hasUserPurchasedCourse } from "../service/enrollment.service";
import { getItemByCourseId, removeFromCart } from "@src/service/cart.service";
import { ProcessPaymentDto, SubmitPaymentDto } from "@src/entity/dto/payment.dto";
import { getItemByCourseId, removeFromCart } from "src/service/cart.service";
import { ProcessPaymentDto, SubmitPaymentDto } from "src/entity/dto/payment.dto";
import { validateOrReject } from "class-validator";

export const processPayment = asyncHandler(
Expand Down
18 changes: 10 additions & 8 deletions src/controller/professor/professorCourse.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ export const professorCreateCourse = async (req: Request, res: Response) => {
throw new Error(req.t('course.invalid_professor_id'));
}
const courseData = new CreateCourseDto();
courseData.average_rating = req.body.average_rating
courseData.category_id = req.body.category_id
courseData.average_rating = req.body.average_rating ? parseInt(req.body.average_rating) : 0
courseData.category_id = req.body.category_id ? parseInt(req.body.category_id) : 0
courseData.description = req.body.description
courseData.name = req.body.name
courseData.price = req.body.price
courseData.price = req.body.price ? parseInt(req.body.category_id) : 0
console.log(courseData)

await validateOrReject(courseData)

Expand All @@ -62,6 +63,7 @@ export const professorCreateCourse = async (req: Request, res: Response) => {
} catch (error) {
if (Array.isArray(error) && error[0].constraints) {
const validationErrors = error.map(err => Object.values(err.constraints)).flat();
console.log(validationErrors)
res.status(400).render('error', { message: req.t('course.update_error', { error: validationErrors.join(', ') }) });
} else {
res.status(400).render("error", { error: error.message });
Expand All @@ -84,11 +86,11 @@ export const professorUpdateCourse = async (req: Request, res: Response) => {
}

const courseData = new CreateCourseDto();
courseData.average_rating = req.body.average_rating
courseData.category_id = req.body.category_id
courseData.description = req.body.description
courseData.name = req.body.name
courseData.price = req.body.price
courseData.average_rating = req.body.average_rating ? parseInt(req.body.average_rating) : 0
courseData.category_id = req.body.category_id ? parseInt(req.body.category_id) : 0
courseData.description = req.body.description ? req.body.description : undefined
courseData.name = req.body.name ? req.body.name : undefined
courseData.price = req.body.price ? parseInt(req.body.price) : 0

await validateOrReject(courseData)

Expand Down
20 changes: 17 additions & 3 deletions src/controller/professor/professorLesson.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import asyncHandler from 'express-async-handler';
import { getLessonsBySectionIds, createLesson, updateLesson, deleteLesson } from 'src/service/lession.service';
import { getCoursesByUserId } from 'src/service/course.service';
import { getSectionsByCourseIds } from 'src/service/section.service';
import { LessonCreateDto } from 'src/entity/dto/lesson.dto';
import { plainToClass } from 'class-transformer';
import { LessonCreateDto, LessonUpdateDto } from 'src/entity/dto/lesson.dto';
import { validateOrReject } from 'class-validator';

export const professorLesonShowGet = asyncHandler(async (req: Request, res: Response) => {
Expand Down Expand Up @@ -41,7 +40,14 @@ export const professorLesonShowGet = asyncHandler(async (req: Request, res: Resp
});

export const professorCreateLesson = async (req: Request, res: Response) => {
const lessonData = plainToClass(LessonCreateDto, req.body)
const lessonData = new LessonCreateDto()
lessonData.content = req.body.content
lessonData.description = req.body.description
lessonData.name = req.body.name
lessonData.progress = req.body.progress ? parseInt(req.body.progress) : 0
lessonData.section_id = req.body.section_id ? parseInt(req.body.section_id) : 0
lessonData.time = req.body.time ? parseInt(req.body.time) : 0
lessonData.type = req.body.type
try {
await validateOrReject(lessonData);

Expand Down Expand Up @@ -89,6 +95,14 @@ export const professorUpdateLesson = async (req: Request, res: Response) => {
return;
}

const lessonData = new LessonUpdateDto()
lessonData.content = req.body.content ? req.body.content : undefined
lessonData.description = req.body.description ? req.body.description : undefined
lessonData.name = req.body.name ? req.body.name : undefined
lessonData.progress = req.body.progress ? parseInt(req.body.progress) : 0
lessonData.time = req.body.time ? parseInt(req.body.time) : 0
lessonData.type = req.body.type ? req.body.type : undefined

const updatedLesson = await updateLesson(lessonId, req.body);

if (!updatedLesson) {
Expand Down
13 changes: 9 additions & 4 deletions src/controller/professor/professorSection.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ export const professorCreateSection = async (req: Request, res: Response) => {

const sectionData = new CreateSectionDto();
sectionData.name = names[i];
sectionData.total_lesson = totalLessons[i];
sectionData.total_lesson = totalLessons[i] ? totalLessons[i] : undefined;
sectionData.course_id = courseId;
sectionData.total_time = totalTimes[i];
sectionData.total_time = totalTimes[i] ? totalTimes[i] : undefined;

const errors = await validate(sectionData);

Expand Down Expand Up @@ -61,8 +61,13 @@ export const professorUpdateSection = async (req: Request, res: Response) => {
return;
}

const sectionDto = plainToInstance(UpdateSectionDto, req.body);
const errors = await validate(sectionDto);
const sectionData = new UpdateSectionDto()
sectionData.id = sectionId
sectionData.name = req.body.name ? req.body.name : undefined
sectionData.total_lesson = req.body.total_lesson ? req.body.total_lesson : undefined
sectionData.total_time = req.body.total_time ? req.body.total_time : undefined

const errors = await validate(sectionData);

if (errors.length > 0) {
const messages = errors.map((err) => Object.values(err.constraints || {})).flat();
Expand Down
10 changes: 5 additions & 5 deletions src/controller/review.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ export const createReviewPost = asyncHandler(
}

const reviewDto = new CreateReviewDto();
reviewDto.user_id = user_id;
reviewDto.course_id = course_id;
reviewDto.rating = rating;
reviewDto.user_id = parseInt(user_id);
reviewDto.course_id = parseInt(course_id);
reviewDto.rating = parseInt(rating);

const commentDto = new CreateCommentDto();
commentDto.review_id = 0;
commentDto.user_id = user_id;
commentDto.parent_id = parent_id;
commentDto.user_id = parseInt(user_id);
commentDto.parent_id = parent_id ? parseInt(parent_id) : 0;
commentDto.comment = comment;

try {
Expand Down
Loading

0 comments on commit 232a096

Please sign in to comment.