From 1984dd9de295d9aa6e92ecc821c03068dab682bd 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 21:19:59 +0100
Subject: [PATCH] update types

---
 src/types/News.ts    |  7 +++++++
 src/types/Profile.ts | 34 ++++++++++++++++++++++++++++++++++
 src/types/Term.ts    | 37 +++++++++++++++++++++++++++++++++++++
 src/types/types.ts   | 31 -------------------------------
 4 files changed, 78 insertions(+), 31 deletions(-)
 create mode 100644 src/types/News.ts
 create mode 100644 src/types/Profile.ts
 create mode 100644 src/types/Term.ts
 delete mode 100644 src/types/types.ts

diff --git a/src/types/News.ts b/src/types/News.ts
new file mode 100644
index 0000000..58b6d12
--- /dev/null
+++ b/src/types/News.ts
@@ -0,0 +1,7 @@
+export interface INews {
+  title: string;
+  text: string;
+  publishedAt: Date;
+  publishedBy?: string;
+  updatedBy?: string;
+}
diff --git a/src/types/Profile.ts b/src/types/Profile.ts
new file mode 100644
index 0000000..b6d94cb
--- /dev/null
+++ b/src/types/Profile.ts
@@ -0,0 +1,34 @@
+export enum Role {
+  Admin = 'ADMIN',
+  User = 'USER', // default
+}
+
+export interface INotice {
+  _id: string;
+  text: string;
+  redirect?: string;
+  isSeen: boolean;
+}
+
+export interface IWarning {
+  _id: string;
+  text: string;
+  date?: Date;
+  givenBy?: string;
+}
+
+export interface IProfile {
+  _id: string;
+  externalId?: string;
+  studentCardNumber: string;
+  roomNumber: Number;
+  newPicture?: string;
+  acceptedPicture?: string;
+  role: Role;
+  email: string;
+  name: string;
+  isStaffMember?: boolean;
+  staffMemberText?: string;
+  warnings?: IWarning[];
+  notices?: INotice[];
+}
diff --git a/src/types/Term.ts b/src/types/Term.ts
new file mode 100644
index 0000000..0f40552
--- /dev/null
+++ b/src/types/Term.ts
@@ -0,0 +1,37 @@
+export enum MemberState {
+  Accepted = 'ACCEPTED',
+  Applied = 'APPLIED', // default
+  Rejected = 'REJECTED',
+}
+
+export enum CardState {
+  Created = 'CREATED', // default
+  Printed = 'PRINTED',
+  Given = 'GIVEN',
+}
+
+// When Term members listed
+export interface IUserAsMember {
+  _id: string;
+  name: string;
+  warnings: number;
+}
+
+export interface IMember {
+  _id: string;
+  user: IUserAsMember | string; // ... | Mongoose ID
+  memberState: MemberState;
+  cardState: CardState;
+  cardNumber: number;
+  cardReceiveDate?: Date;
+}
+
+export interface ITerm {
+  backgroundFile?: string;
+  name: string;
+  createDate: Date;
+  startDate: Date;
+  endDate: Date;
+  deadline: Date;
+  members: IMember[];
+}
diff --git a/src/types/types.ts b/src/types/types.ts
deleted file mode 100644
index 23e1422..0000000
--- a/src/types/types.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-export enum Role {
-  Admin,
-  Staff,
-  User,
-}
-
-export interface Profile {
-  external_id: string;
-  studentCardNumber: string;
-  roomNumber?: string;
-  picture: string;
-  role: Role.Admin | Role.Staff | Role.User;
-  email?: string;
-  name?: string;
-  warnings: [Warnings] | [];
-}
-
-export interface Warnings {
-  text: string;
-  date: Date;
-  given_by: {
-    _id: string;
-    name: string;
-  };
-}
-
-export interface News {
-  title: string;
-  text: string;
-  publishedAt: string;
-}
-- 
GitLab