From 89e64682f09970d9f6f4476294f2215c9805c234 Mon Sep 17 00:00:00 2001 From: fullpistoladev Date: Sun, 26 Mar 2023 21:55:00 -0300 Subject: [PATCH] refactorin back end, and fixing Class Schema #50 --- .../src/controllers/AvaliationControllers.ts | 36 ++++ server/src/controllers/ClassControlers.ts | 33 +++ server/src/controllers/UsersControllers.ts | 112 +++++++++++ server/src/index.ts | 189 ++---------------- server/src/model/Class.ts | 4 + server/src/model/Professor.ts | 5 +- server/src/model/Student.ts | 4 +- 7 files changed, 204 insertions(+), 179 deletions(-) create mode 100644 server/src/controllers/AvaliationControllers.ts create mode 100644 server/src/controllers/ClassControlers.ts create mode 100644 server/src/controllers/UsersControllers.ts diff --git a/server/src/controllers/AvaliationControllers.ts b/server/src/controllers/AvaliationControllers.ts new file mode 100644 index 0000000..1ec1669 --- /dev/null +++ b/server/src/controllers/AvaliationControllers.ts @@ -0,0 +1,36 @@ +import { Request, Response } from 'express'; +import { AvaliationModel, AvaliationDocument } from '../model/Avaliation'; + +export async function createAvaliationController (req: Request, res: Response) { + try { + const { typeAvaliation, themeAvaliation, questions, initialAvaliation, finalAvaliation, time, points } = req.body; + console.log(req.body); + const NewAvaliation = new AvaliationModel({ + typeAvaliation, + themeAvaliation, + questions, + initialAvaliation, + finalAvaliation, + time, + points, + }); + + const createAvaliation = await NewAvaliation.save(); + + res.status(201).json({ message: 'Form created successfully', createAvaliation }); + } catch (error) { + console.error(error); + res.status(500).json({ message: 'Error creating form' }); + } +} + + +export async function getAvaliationsController (req: Request, res: Response) { + try { + const Avaliations = await AvaliationModel.find(); + res.status(200).json({ message: 'Avaliations found successfully', Avaliations }); + } catch (error) { + console.error(error); + res.status(500).json({ message: 'Error finding Avaliations' }); + } +} \ No newline at end of file diff --git a/server/src/controllers/ClassControlers.ts b/server/src/controllers/ClassControlers.ts new file mode 100644 index 0000000..a498a6c --- /dev/null +++ b/server/src/controllers/ClassControlers.ts @@ -0,0 +1,33 @@ +import { Request, Response } from 'express'; +import { Class, IClass } from '../model/Class'; + + +export async function createClassController (req: Request, res: Response) { + try { + const { className, classSummary, professor, students } = req.body; + + const newClass: IClass = new Class({ + className, + classSummary, + professor, + students + }); + + const savedClass: IClass = await newClass.save(); + + res.status(201).json({ message: 'Form created successfully', savedClass}); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + +export async function getClassesControler(req: Request, res: Response) { + try { + const classes: IClass[] = await Class.find({}); + res.status(200).json({ classes }); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} diff --git a/server/src/controllers/UsersControllers.ts b/server/src/controllers/UsersControllers.ts new file mode 100644 index 0000000..79ba052 --- /dev/null +++ b/server/src/controllers/UsersControllers.ts @@ -0,0 +1,112 @@ +import { Request, Response } from 'express'; +import { Professor, IProfessor } from '../model/Professor'; +import { Student, IStudent } from '../model/Student'; + + +export async function createProfessorController (req: Request, res: Response){ + try { + const { name, password, email, user } = req.body; + + const newProfessor: IProfessor = new Professor({ + name, + password, + email, + user, + }); + + const savedProfessor: IProfessor = await newProfessor.save(); + + res.status(201).json({ message: 'Professor created successfully', savedProfessor}); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + +export async function getProfessorsController (req: Request, res: Response) { + + try { + const Professors: IProfessor[] = await Professor.find({}); + + Professors.forEach((professor) => { + professor.password = ''; + }); + + console.log(Professors); + res.status(200).json({ Professors }); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + +export async function getProfessorByEmailController (req: Request, res: Response){ + try { + const { email } = req.params; + const professor: IProfessor | null = await Professor.findOne({ email }); + if (!professor) { + return res.status(404).json({ message: 'Professor not found' }); + } + res.status(200).json({ professor }); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + +export async function createStudentController (req: Request, res: Response) { + + try { + const { name, password, email, user } = req.body; + + const newStudent: IStudent = new Student({ + name, + password, + email, + user, + }); + + const savedStudent: IStudent = await newStudent.save(); + + res.status(201).json({ message: 'Student created successfully', savedStudent}); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + +export async function getStudentsController (req: Request, res: Response) { + + try { + const Students: IStudent[] = await Student.find({}); + + Students.forEach((student) => { + student.password = ''; + }); + + res.status(200).json({ Students }); + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} + + +export async function searchByEmailController (req: Request, res: Response){ + + try { + const { email } = req.query; + + const professor: IProfessor | null = await Professor.findOne({ email }); + const student: IStudent | null = await Student.findOne({ email }); + + if (professor || student) { + res.status(200).json({ professor, student }); + } else { + res.status(404).json({ message: `No record found for email: ${email}` }); + } + } catch (err) { + console.error(err); + res.status(500).send('Server error'); + } +} \ No newline at end of file diff --git a/server/src/index.ts b/server/src/index.ts index 333815e..3210510 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -10,6 +10,10 @@ import { Professor, IProfessor } from './model/Professor'; import { Student, IStudent } from './model/Student'; import AvaliationResponseModel from './model/AvaliationResponse'; +import { createAvaliationController, getAvaliationsController } from './controllers/AvaliationControllers'; +import { createClassController, getClassesControler } from './controllers/ClassControlers'; +import { createProfessorController, createStudentController, getProfessorByEmailController, getProfessorsController, getStudentsController, searchByEmailController } from './controllers/UsersControllers'; + const app = express(); mongoose.set('strictQuery', false); const PORT = 3000; @@ -21,183 +25,18 @@ app.use( ); app.use(express.json()); - -app.post('/createAvaliation', async (req: Request, res: Response) => { - try { - const { typeAvaliation, themeAvaliation, questions, initialAvaliation, finalAvaliation, time, points } = req.body; - console.log(req.body); - const NewAvaliation = new AvaliationModel({ - typeAvaliation, - themeAvaliation, - questions, - initialAvaliation, - finalAvaliation, - time, - points, - }); - - const createAvaliation = await NewAvaliation.save(); - - res.status(201).json({ message: 'Form created successfully', createAvaliation }); - } catch (error) { - console.error(error); - res.status(500).json({ message: 'Error creating form' }); - } -}); - -app.get('/getAvaliations', async (req: Request, res: Response) => { - try { - const Avaliations = await AvaliationModel.find(); - res.status(200).json({ message: 'Avaliations found successfully', Avaliations }); - } catch (error) { - console.error(error); - res.status(500).json({ message: 'Error finding Avaliations' }); - } -}); - -app.post('/getResponseAvaliation/:id}', async (req: Request, res: Response) => { - try { - const { _id, questions } = req.body; - const form = new AvaliationResponseModel({ - _id, - questions - }); - - const createResponseAvaliation = await form.save(); - res.status(201).json({ message: 'Form created successfully', createResponseAvaliation }); - } catch (error) { - console.error(error); - res.status(500).json({ message: 'Error finding form' }); - } -}); - -app.post('/createClass', async (req: Request, res: Response) => { - try { - const { className, classSummary } = req.body; - - const newClass: IClass = new Class({ - className, - classSummary, - }); - - const savedClass: IClass = await newClass.save(); - - res.status(201).json({ message: 'Form created successfully', savedClass}); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - -app.get('/getClasses', async (req: Request, res: Response) => { - try { - const classes: IClass[] = await Class.find({}); - res.status(200).json({ classes }); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - - - -app.post('/createProfessor', async (req: Request, res: Response) => { - try { - const { name, password, email, user } = req.body; - - const newProfessor: IProfessor = new Professor({ - name, - password, - email, - user, - }); - - const savedProfessor: IProfessor = await newProfessor.save(); - - res.status(201).json({ message: 'Professor created successfully', savedProfessor}); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - - - -app.get('/getProfessorByEmail/:email', async (req: Request, res: Response) => { - try { - const { email } = req.params; - const professor: IProfessor | null = await Professor.findOne({ email }); - if (!professor) { - return res.status(404).json({ message: 'Professor not found' }); - } - res.status(200).json({ professor }); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - -app.get('/searchByEmail', async (req: Request, res: Response) => { - try { - const { email } = req.query; - - const professor: IProfessor | null = await Professor.findOne({ email }); - const student: IStudent | null = await Student.findOne({ email }); - - if (professor || student) { - res.status(200).json({ professor, student }); - } else { - res.status(404).json({ message: `No record found for email: ${email}` }); - } - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - - - -app.post('/createStudent', async (req: Request, res: Response) => { - try { - const { name, password, email, user } = req.body; - - const newStudent: IStudent = new Student({ - name, - password, - email, - user, - }); - - const savedStudent: IStudent = await newStudent.save(); - - res.status(201).json({ message: 'Student created successfully', savedStudent}); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - -app.get('/getProfessors', async (req: Request, res: Response) => { - try { - const Professors: IProfessor[] = await Professor.find({}); - res.status(200).json({ Professors }); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); - +app.post('/createAvaliation', createAvaliationController) +app.get('/getAvaliations', getAvaliationsController) +app.post('/createClass', createClassController); +app.get('/getClasses', getClassesControler); +app.post('/createProfessor', createProfessorController); +app.get('/getProfessors', getProfessorsController); +app.get('/getProfessorByEmail/:email', getProfessorByEmailController) +app.post('/createStudent', createStudentController) +app.get('/getStudents', getStudentsController) +app.get('/searchByEmail', searchByEmailController) -app.get('/getStudents', async (req: Request, res: Response) => { - try { - const Students: IClass[] = await Student.find({}); - res.status(200).json({ Students }); - } catch (err) { - console.error(err); - res.status(500).send('Server error'); - } -}); mongoose.connect(`${process.env.MONGO_URL}`).then(() => { diff --git a/server/src/model/Class.ts b/server/src/model/Class.ts index 284a476..41f74fe 100644 --- a/server/src/model/Class.ts +++ b/server/src/model/Class.ts @@ -1,11 +1,15 @@ import { Document, Model, model, Schema } from 'mongoose'; export interface IClass extends Document { + professor: string; + students: string[]; className: string; classSummary: string; } const classSchema: Schema = new Schema({ + professor: { type: String, required: true }, + students: [{ type: String, required: true }], className: { type: String, required: true }, classSummary: { type: String, required: true }, }); diff --git a/server/src/model/Professor.ts b/server/src/model/Professor.ts index 3d08fa1..52c6b23 100644 --- a/server/src/model/Professor.ts +++ b/server/src/model/Professor.ts @@ -1,6 +1,7 @@ import { Document, Model, model, Schema } from 'mongoose'; export interface IProfessor extends Document { + _id: string; name: string; password: string; email: string; @@ -10,8 +11,8 @@ export interface IProfessor extends Document { const professorSchema: Schema = new Schema({ name: { type: String, required: true }, password: { type: String, required: true }, - email: { type: String, required: true }, - user: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + user: { type: String, required: true, unique: true }, }); export const Professor: Model = model('Professor', professorSchema); \ No newline at end of file diff --git a/server/src/model/Student.ts b/server/src/model/Student.ts index 5d12f6c..0ae2ad0 100644 --- a/server/src/model/Student.ts +++ b/server/src/model/Student.ts @@ -10,8 +10,8 @@ export interface IStudent extends Document { const studentSchema: Schema = new Schema({ name: { type: String, required: true }, password: { type: String, required: true }, - email: { type: String, required: true }, - user: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + user: { type: String, required: true, unique: true }, }); export const Student: Model = model('student', studentSchema); \ No newline at end of file