From b421df52ed0406c5b0b90c22320cb1550b0b70b6 Mon Sep 17 00:00:00 2001 From: "alec.schmidt" <alec.schmidt@etu.hesge.ch> Date: Mon, 5 Jun 2023 16:35:04 +0200 Subject: [PATCH] MERCI RICHARD --- frontend/src/app/Types/types.ts | 26 ++++++++++ .../src/app/admin/admin-routing.module.ts | 10 ++++ frontend/src/app/admin/admin.component.css | 0 frontend/src/app/admin/admin.component.html | 26 ++++++++++ .../src/app/admin/admin.component.spec.ts | 21 +++++++++ frontend/src/app/admin/admin.component.ts | 47 +++++++++++++++++++ frontend/src/app/admin/admin.module.ts | 14 ++++++ frontend/src/app/app-routing.module.ts | 8 +++- frontend/src/app/app.module.ts | 12 +++-- frontend/src/app/login/login.component.ts | 2 +- frontend/src/app/login/login.module.ts | 5 -- .../authentication.service.spec.ts | 0 .../{ => services}/authentication.service.ts | 0 .../src/app/services/users.service.spec.ts | 16 +++++++ frontend/src/app/services/users.service.ts | 19 ++++++++ 15 files changed, 195 insertions(+), 11 deletions(-) create mode 100644 frontend/src/app/Types/types.ts create mode 100644 frontend/src/app/admin/admin-routing.module.ts create mode 100644 frontend/src/app/admin/admin.component.css create mode 100644 frontend/src/app/admin/admin.component.html create mode 100644 frontend/src/app/admin/admin.component.spec.ts create mode 100644 frontend/src/app/admin/admin.component.ts create mode 100644 frontend/src/app/admin/admin.module.ts rename frontend/src/app/{ => services}/authentication.service.spec.ts (100%) rename frontend/src/app/{ => services}/authentication.service.ts (100%) create mode 100644 frontend/src/app/services/users.service.spec.ts create mode 100644 frontend/src/app/services/users.service.ts diff --git a/frontend/src/app/Types/types.ts b/frontend/src/app/Types/types.ts new file mode 100644 index 0000000..405dfe2 --- /dev/null +++ b/frontend/src/app/Types/types.ts @@ -0,0 +1,26 @@ +export type User = { + id: number; + username: string; + password: string; + type: string; +}; + +export type QandA = { + QUESTIONS: Question[]; + ANSWERS: Answer[]; +}; + +export type Question = { + question: string; + category: string; +} + +export type Answer = { + CORRECT: string; + WRONG: string[]; +} + +export type Category = { + id: number; + category: string; +}; \ No newline at end of file diff --git a/frontend/src/app/admin/admin-routing.module.ts b/frontend/src/app/admin/admin-routing.module.ts new file mode 100644 index 0000000..f413300 --- /dev/null +++ b/frontend/src/app/admin/admin-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AdminRoutingModule { } diff --git a/frontend/src/app/admin/admin.component.css b/frontend/src/app/admin/admin.component.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/admin/admin.component.html b/frontend/src/app/admin/admin.component.html new file mode 100644 index 0000000..3e2ff7b --- /dev/null +++ b/frontend/src/app/admin/admin.component.html @@ -0,0 +1,26 @@ +<table> + <thead> + <th>Username</th> + <th>Type</th> + </thead> + <tbody> + <tr *ngFor="let user of users"> + <td>{{user.username}}</td> + <td>{{user.user_type}}</td> + <td><button (click)="deleteUser(user)">DELETE</button></td> + </tr> + </tbody> +</table> + +<table> + <thead> + <th>Question</th> + <th>Catégorie</th> + </thead> + <tbody> + <tr *ngFor="let question of questions"> + <td>{{question.question}}</td> + <td>{{question.category}}</td> + </tr> + </tbody> +</table> \ No newline at end of file diff --git a/frontend/src/app/admin/admin.component.spec.ts b/frontend/src/app/admin/admin.component.spec.ts new file mode 100644 index 0000000..830d8ef --- /dev/null +++ b/frontend/src/app/admin/admin.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminComponent } from './admin.component'; + +describe('AdminComponent', () => { + let component: AdminComponent; + let fixture: ComponentFixture<AdminComponent>; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AdminComponent] + }); + fixture = TestBed.createComponent(AdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/admin/admin.component.ts b/frontend/src/app/admin/admin.component.ts new file mode 100644 index 0000000..2ae1f47 --- /dev/null +++ b/frontend/src/app/admin/admin.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Answer, QandA, Question, User } from '../Types/types'; +import { UsersService } from '../services/users.service'; + + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.css'] +}) +export class AdminComponent implements OnInit { + public data; + public users: User[] = []; + public questions: Question[] = []; + public answers: Answer[] = []; + + constructor( + private router: Router, + private http: HttpClient, + private userController: UsersService) { } + + ngOnInit(): void { + + + let header = new HttpHeaders().set( + "Authorization", localStorage.getItem("token") + ); + + console.log(header); + + this.http.get("http://0.0.0.0:30992/API/v1/user", {headers:header}) + .subscribe(users => { + this.users = users as User[]; + }); + + this.http.get("http://0.0.0.0:30992/API/v1/question", {headers:header}) + .subscribe(res => { + let questions = res as QandA; + this.questions = questions.QUESTIONS; + this.answers = questions.ANSWERS; + }); + } + + deleteUser(user:User) {this.userController.deleteUser(user)} +} diff --git a/frontend/src/app/admin/admin.module.ts b/frontend/src/app/admin/admin.module.ts new file mode 100644 index 0000000..e1c2632 --- /dev/null +++ b/frontend/src/app/admin/admin.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { AdminRoutingModule } from './admin-routing.module'; + + +@NgModule({ + declarations: [], + imports: [ + CommonModule, + AdminRoutingModule + ] +}) +export class AdminModule { } diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index c2cf113..137a71c 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -1,10 +1,14 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { LoginComponent } from './login/login.component'; +import { AdminComponent } from './admin/admin.component'; const routes: Routes = [ { - path: 'login', - loadChildren: () => import('./login/login.module').then(m => m.LoginModule) + path: 'login', component: LoginComponent + }, + { + path: 'admin', component: AdminComponent } ]; diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 7137eee..d7be40c 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -3,16 +3,22 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import {HttpClientModule} from '@angular/common/http'; +import {HttpClientModule} from '@angular/common/http'; +import { AdminComponent } from './admin/admin.component'; +import { LoginComponent } from './login/login.component'; +import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ - AppComponent + AppComponent, + AdminComponent, + LoginComponent ], imports: [ BrowserModule, AppRoutingModule, - HttpClientModule + HttpClientModule, + ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] diff --git a/frontend/src/app/login/login.component.ts b/frontend/src/app/login/login.component.ts index 0caa4f7..64e2754 100644 --- a/frontend/src/app/login/login.component.ts +++ b/frontend/src/app/login/login.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; -import { AuthenticationService } from '../authentication.service'; +import { AuthenticationService } from '../services/authentication.service'; @Component({ selector: 'app-login', diff --git a/frontend/src/app/login/login.module.ts b/frontend/src/app/login/login.module.ts index 9064214..9e04d47 100644 --- a/frontend/src/app/login/login.module.ts +++ b/frontend/src/app/login/login.module.ts @@ -2,17 +2,12 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { LoginRoutingModule } from './login-routing.module'; -import { LoginComponent } from './login.component'; - -import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ - LoginComponent ], imports: [ CommonModule, - ReactiveFormsModule, LoginRoutingModule ] }) diff --git a/frontend/src/app/authentication.service.spec.ts b/frontend/src/app/services/authentication.service.spec.ts similarity index 100% rename from frontend/src/app/authentication.service.spec.ts rename to frontend/src/app/services/authentication.service.spec.ts diff --git a/frontend/src/app/authentication.service.ts b/frontend/src/app/services/authentication.service.ts similarity index 100% rename from frontend/src/app/authentication.service.ts rename to frontend/src/app/services/authentication.service.ts diff --git a/frontend/src/app/services/users.service.spec.ts b/frontend/src/app/services/users.service.spec.ts new file mode 100644 index 0000000..f81244a --- /dev/null +++ b/frontend/src/app/services/users.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UsersService } from './users.service'; + +describe('UsersService', () => { + let service: UsersService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UsersService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/services/users.service.ts b/frontend/src/app/services/users.service.ts new file mode 100644 index 0000000..6dfed51 --- /dev/null +++ b/frontend/src/app/services/users.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { User } from '../Types/types'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class UsersService { + + constructor(private http: HttpClient) { } + + deleteUser(user: User) { + console.log("DELETE START") + this.http.delete("http://0.0.0.0:30992/API/v1/user", {body:user}).subscribe(res => { + console.log("PLZ REFRESH") + }); + } + +} -- GitLab