From 4dcc3450a52cb7e8f20734cf196ba6074c04bd7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com>
Date: Sun, 24 Jan 2021 19:06:38 +0100
Subject: [PATCH] fix bugs

---
 src/middlewares/files/createFile.ts      |  7 ++++---
 src/middlewares/files/imageFilter.ts     |  2 +-
 src/middlewares/term/getTerm.ts          |  5 ++---
 src/middlewares/term/isBeforeDeadline.ts | 18 ++++++++++++++++++
 src/models/TermSchema.ts                 |  4 ++--
 src/routes/files.ts                      | 22 +++++++++++-----------
 src/routes/terms.ts                      | 20 +++++++++++---------
 src/routes/users/user.ts                 |  2 +-
 8 files changed, 50 insertions(+), 30 deletions(-)
 create mode 100644 src/middlewares/term/isBeforeDeadline.ts

diff --git a/src/middlewares/files/createFile.ts b/src/middlewares/files/createFile.ts
index 05aec916..a49017a1 100644
--- a/src/middlewares/files/createFile.ts
+++ b/src/middlewares/files/createFile.ts
@@ -1,8 +1,7 @@
 import { NextFunction, Request, Response } from "express";
-
-import { ErrorHandler } from "../utils/ErrorHandler";
-import File from "../../models/FileSchema";
 import fs from "fs";
+import File from "../../models/FileSchema";
+import { ErrorHandler } from "../utils/ErrorHandler";
 
 const createFile = () => async (
   req: Request,
@@ -10,6 +9,8 @@ const createFile = () => async (
   next: NextFunction
 ) => {
   try {
+    if (!req.file) throw new ErrorHandler(400, "File wasn't provided");
+
     const newFile = new File();
 
     newFile.originalName = req.file.originalname;
diff --git a/src/middlewares/files/imageFilter.ts b/src/middlewares/files/imageFilter.ts
index c8e2f406..6ac4fb0b 100644
--- a/src/middlewares/files/imageFilter.ts
+++ b/src/middlewares/files/imageFilter.ts
@@ -1,5 +1,5 @@
-import { ErrorHandler } from "../utils/ErrorHandler";
 import { FileFilterCallback } from "multer";
+import { ErrorHandler } from "../utils/ErrorHandler";
 
 export function imageFilter(
   req: Express.Request,
diff --git a/src/middlewares/term/getTerm.ts b/src/middlewares/term/getTerm.ts
index 8d9af82a..1df2a15b 100644
--- a/src/middlewares/term/getTerm.ts
+++ b/src/middlewares/term/getTerm.ts
@@ -1,11 +1,10 @@
 import { NextFunction, Request, Response } from "express";
-
 import Term from "../../models/TermSchema";
 
 /**
  * termId -> term
  */
-const getTerm = (sendBgFile = false) => async (
+const getTerm = () => async (
   req: Request,
   res: Response,
   next: NextFunction
@@ -20,7 +19,7 @@ const getTerm = (sendBgFile = false) => async (
         endDate: 1,
         deadline: 1,
         createDate: 1,
-        backgroundFile: sendBgFile ? 1 : 0,
+        backgroundFile: 1,
         members: { $elemMatch: { user: req.params.userId } },
       }
     )
diff --git a/src/middlewares/term/isBeforeDeadline.ts b/src/middlewares/term/isBeforeDeadline.ts
new file mode 100644
index 00000000..a832b78a
--- /dev/null
+++ b/src/middlewares/term/isBeforeDeadline.ts
@@ -0,0 +1,18 @@
+import { NextFunction, Request, Response } from "express";
+
+const isBeforeDeadline = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  try {
+    if (new Date() > res.data.term!.deadline!)
+      return res.status(400).json({ message: "You can no longer apply!" });
+
+    next();
+  } catch (err) {
+    next(err);
+  }
+};
+
+export default isBeforeDeadline;
diff --git a/src/models/TermSchema.ts b/src/models/TermSchema.ts
index a71858c1..dff71706 100644
--- a/src/models/TermSchema.ts
+++ b/src/models/TermSchema.ts
@@ -1,4 +1,4 @@
-import { Document, Schema, model } from "mongoose";
+import { Document, model, Schema } from "mongoose";
 
 export enum MemberState {
   Accepted = "ACCEPTED",
@@ -8,7 +8,7 @@ export enum MemberState {
 
 export enum CardState {
   Created = "CREATED",
-  Printed = "PRINTD",
+  Printed = "PRINTED",
   Given = "GIVEN",
 }
 
diff --git a/src/routes/files.ts b/src/routes/files.ts
index 92d6093f..29e25ddb 100644
--- a/src/routes/files.ts
+++ b/src/routes/files.ts
@@ -1,21 +1,21 @@
 import { Application } from "express";
+import multer from "multer";
+import isAdmin from "../middlewares/auth/isAdmin";
+import isRegistered from "../middlewares/auth/isRegistered";
 import createFile from "../middlewares/files/createFile";
-import createdResponse from "../middlewares/utils/createdResponse";
-import getFieldValue from "../middlewares/utils/getFieldValue";
-import getTerm from "../middlewares/term/getTerm";
-import getTermWithQuery from "../middlewares/term/getTermWithQuery";
-import getUser from "../middlewares/user/getUser";
 import { imageFilter } from "../middlewares/files/imageFilter";
 import { imageStorage } from "../middlewares/files/imageStorage";
-import isAdmin from "../middlewares/auth/isAdmin";
-import isRegistered from "../middlewares/auth/isRegistered";
-import multer from "multer";
 import sendFile from "../middlewares/files/sendFile";
 import sendUserCard from "../middlewares/files/sendUserCard";
-import setOwnUserId from "../middlewares/user/setOwnUserId";
 import updateProfilePicture from "../middlewares/files/updateProfilePicture";
 import updateTermCardBg from "../middlewares/files/updateTermCardBg";
+import getTerm from "../middlewares/term/getTerm";
+import getTermWithQuery from "../middlewares/term/getTermWithQuery";
+import getUser from "../middlewares/user/getUser";
+import setOwnUserId from "../middlewares/user/setOwnUserId";
 import userIsStaff from "../middlewares/user/userIsStaff";
+import createdResponse from "../middlewares/utils/createdResponse";
+import getFieldValue from "../middlewares/utils/getFieldValue";
 
 const profilePictureUpload = multer({
   storage: imageStorage("uploads/profile_pictures/"),
@@ -28,6 +28,7 @@ const CardImageUpload = multer({
 });
 
 // TODO in Future: OwnTermCardPreview(termId)
+// TODO delete file after update
 
 const filesRoute = (prefix: string, app: Application): void => {
   /**
@@ -103,7 +104,6 @@ const filesRoute = (prefix: string, app: Application): void => {
    */
   app.get(
     `${prefix}/staff/:userId/picture`,
-    isRegistered(),
     getUser("_id acceptedPicture isStaffMember staffMemberText"),
     userIsStaff(),
     getFieldValue("profile", "acceptedPicture"),
@@ -119,7 +119,7 @@ const filesRoute = (prefix: string, app: Application): void => {
     isRegistered(),
     isAdmin(),
     getUser("_id acceptedPicture name roomNumber"),
-    getTerm(true),
+    getTerm(),
     sendUserCard()
   );
 
diff --git a/src/routes/terms.ts b/src/routes/terms.ts
index 8a22bf5a..14f4eef8 100644
--- a/src/routes/terms.ts
+++ b/src/routes/terms.ts
@@ -1,25 +1,26 @@
 import { Application } from "express";
+import isAdmin from "../middlewares/auth/isAdmin";
+import isRegistered from "../middlewares/auth/isRegistered";
+import deleteFile from "../middlewares/files/deleteFile";
 import addMember from "../middlewares/term/addMember";
 import addTerm from "../middlewares/term/addTerm";
-import createdEmptyResponse from "../middlewares/utils/createdEmptyResponse";
-import createdResponse from "../middlewares/utils/createdResponse";
-import deleteFile from "../middlewares/files/deleteFile";
 import deleteTerm from "../middlewares/term/deleteTerm";
-import getFieldValue from "../middlewares/utils/getFieldValue";
 import getTerm from "../middlewares/term/getTerm";
 import getTermMembers from "../middlewares/term/getTermMembers";
 import getTermsList from "../middlewares/term/getTermsList";
-import getUser from "../middlewares/user/getUser";
-import isAdmin from "../middlewares/auth/isAdmin";
+import isBeforeDeadline from "../middlewares/term/isBeforeDeadline";
 import isNotMember from "../middlewares/term/isNotMember";
-import isRegistered from "../middlewares/auth/isRegistered";
-import noContentResponse from "../middlewares/utils/noContentResponse";
 import responseMembersList from "../middlewares/term/responseMembersList";
 import responseTerm from "../middlewares/term/responseTerm";
 import responseTermsList from "../middlewares/term/responseTermsList";
-import setOwnUserId from "../middlewares/user/setOwnUserId";
 import updateTerm from "../middlewares/term/updateTerm";
 import updateTermMember from "../middlewares/term/updateTermMember";
+import getUser from "../middlewares/user/getUser";
+import setOwnUserId from "../middlewares/user/setOwnUserId";
+import createdEmptyResponse from "../middlewares/utils/createdEmptyResponse";
+import createdResponse from "../middlewares/utils/createdResponse";
+import getFieldValue from "../middlewares/utils/getFieldValue";
+import noContentResponse from "../middlewares/utils/noContentResponse";
 
 const termsRoute = (prefix: string, app: Application): void => {
   /**
@@ -56,6 +57,7 @@ const termsRoute = (prefix: string, app: Application): void => {
     setOwnUserId(),
     getUser("_id"),
     getTerm(),
+    isBeforeDeadline(),
     isNotMember(),
     addMember(),
     createdEmptyResponse()
diff --git a/src/routes/users/user.ts b/src/routes/users/user.ts
index b54277fd..0bbdab1a 100644
--- a/src/routes/users/user.ts
+++ b/src/routes/users/user.ts
@@ -154,7 +154,7 @@ const usersRoute = (prefix: string, app: Application): void => {
   );
 
   /**
-   * Delete a User
+   * Delete a User TODO
    * Role: ADMIN
    */
   app.delete(
-- 
GitLab