From 349289579e6fe15ac92e5a1cf1b127657425a301 Mon Sep 17 00:00:00 2001
From: Pierre-Louis BERTRAND <plbertrand@takima.fr>
Date: Sun, 8 Oct 2023 19:10:56 +0200
Subject: [PATCH] more data and major page working

---
 back-skeleton/initdb/2_DEFAULT_ENTRIES.sql             | 10 +++++++++-
 .../major-students/major-students.component.html       |  3 ++-
 .../majors/major-students/major-students.component.ts  |  3 ++-
 .../majors/major-students/major-students.resolver.ts   |  6 +++---
 .../src/app/majors/majors.component.html               |  1 -
 .../src/app/services/constantsMock.service.ts          |  2 +-
 .../src/app/services/major.service.ts                  |  8 +++-----
 7 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
index 321b728..1b1ea1b 100644
--- a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
+++ b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
@@ -1,4 +1,12 @@
-INSERT INTO majors (id, name, description) VALUES (1, 'MIN', 'Ouaiiis du code partout');
+INSERT INTO majors (id, name, description) VALUES (1, 'Ingéniérie du Numérique', 'Ouaiiis du code partout');
+INSERT INTO majors (id, name, description) VALUES (2, 'Structure & Matériaux', 'Beaucoup de béton et des poutres (snif elle a été renomée)');
+INSERT INTO majors (id, name, description) VALUES (3, 'Aéronautique & Espace', 'Vive le vent');
+INSERT INTO majors (id, name, description) VALUES (4, 'Data Engineering', 'Trop cool plein de données à ordonner');
+INSERT INTO majors (id, name, description) VALUES (5, 'Energie & Environnement', 'On est full green');
+INSERT INTO majors (id, name, description) VALUES (6, 'Engineering Management', 'Des managers de qualité');
+INSERT INTO majors (id, name, description) VALUES (7, 'Ingénierie & Santé', 'On connait tous les os et tous les muscles du corps humain');
+INSERT INTO majors (id, name, description) VALUES (8, 'Ingénierie & Architecture durable', 'Objectif 0 carbon');
+INSERT INTO majors (id, name, description) VALUES (9, 'Design Industriel Durable', 'Ca existait pas pour la P2022 ça');
 
 INSERT INTO students (id, first_name, last_name, birthdate, major_id, image) VALUES (1, 'Paul', 'Harrohide', '2002-06-15', 1, null);
 INSERT INTO students (id, first_name, last_name, birthdate, major_id, image) VALUES (2, 'Jean', 'Bonbeur', '2001-08-21', 1, null);
diff --git a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
index cd8c378..eaa1ff0 100644
--- a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
+++ b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
@@ -12,7 +12,8 @@
   </thead>
   <tbody>
   <ng-container *ngIf="studentsFromMajor$ | async; let studentsFromMajor">
-    <tr *ngFor="let student of (studentsFromMajor.students)">
+    <h2 *ngIf="studentsFromMajor.length === 0">Aucun étudiant dans cette Majeure</h2>
+    <tr *ngFor="let student of (studentsFromMajor)">
       <td>{{ student.firstName }}</td>
       <td>{{ student.lastName }}</td>
       <td>{{ student.birthdate | date : "dd/MM/yyyy" }}</td>
diff --git a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.ts b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.ts
index ffcb404..82c251f 100644
--- a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.ts
+++ b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.ts
@@ -2,6 +2,7 @@ import { Component, OnInit } from "@angular/core"
 import { map, Observable } from "rxjs"
 import { ActivatedRoute } from "@angular/router"
 import { MajorStudentsDto } from "../../models/dto/MajorStudentsDto"
+import { Student } from "../../models/student.model"
 
 @Component({
   selector: "epf-major-students",
@@ -9,7 +10,7 @@ import { MajorStudentsDto } from "../../models/dto/MajorStudentsDto"
   styleUrls: ["./major-students.component.scss"],
 })
 export class MajorStudentsComponent implements OnInit {
-  studentsFromMajor$: Observable<MajorStudentsDto> = this._route.data.pipe(map((data) => data["studentsFromMajor"]))
+  studentsFromMajor$: Observable<Student[]> = this._route.data.pipe(map((data) => data["studentsFromMajor"]))
 
   constructor(private _route: ActivatedRoute) {
   }
diff --git a/epf-front-skeleton-main/src/app/majors/major-students/major-students.resolver.ts b/epf-front-skeleton-main/src/app/majors/major-students/major-students.resolver.ts
index 83b3bd2..71c0844 100644
--- a/epf-front-skeleton-main/src/app/majors/major-students/major-students.resolver.ts
+++ b/epf-front-skeleton-main/src/app/majors/major-students/major-students.resolver.ts
@@ -2,16 +2,16 @@ import { Injectable } from "@angular/core"
 import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from "@angular/router"
 import { Observable } from "rxjs"
 import { MajorService } from "../../services/major.service"
-import { MajorStudentsDto } from "../../models/dto/MajorStudentsDto"
+import { Student } from "../../models/student.model"
 
 @Injectable({
   providedIn: "root",
 })
-export class MajorStudentsResolver implements Resolve<MajorStudentsDto> {
+export class MajorStudentsResolver implements Resolve<Student[]> {
   constructor(private majorService: MajorService) {
   }
 
-  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<MajorStudentsDto> {
+  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Student[]> {
     return this.majorService.findStudentsFromMajor(route.params["id"])
   }
 }
diff --git a/epf-front-skeleton-main/src/app/majors/majors.component.html b/epf-front-skeleton-main/src/app/majors/majors.component.html
index ba79aa8..7c3a077 100644
--- a/epf-front-skeleton-main/src/app/majors/majors.component.html
+++ b/epf-front-skeleton-main/src/app/majors/majors.component.html
@@ -1,6 +1,5 @@
 <div class="d-flex align-items-center">
   <h1>Majors</h1>
-  <a mat-raised-button color="primary" routerLink="/major-details/new">New</a>
 </div>
 <table class="table table-hover">
   <thead>
diff --git a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts b/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
index 05b709a..1561a1b 100644
--- a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
+++ b/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
@@ -19,7 +19,7 @@ export class ConstantsMockService {
   private math: Course = {name: "Maths", hours: 30}
   private management: Course = {name: "Lean Management", hours: 30}
 
-  private min: Major = {name: "Ingéniérie du Numérique", description: "Des lignes de code partout !!", id: 1n, students: []}
+    private min: Major = {name: "Ingéniérie du Numérique", description: "Des lignes de code partout !!", id: 1n, students: []}
   private msm: Major = {name: "Structure & Matériaux", description: "Beaucoup de béton et des poutres (snif elle a été renomée)", id: 2n, students: []}
 
   private mae: Major = {name: "Aéronautique & Espace", description: "Vive le vent", id: 3n, students: []}
diff --git a/epf-front-skeleton-main/src/app/services/major.service.ts b/epf-front-skeleton-main/src/app/services/major.service.ts
index 87cafcb..8337b71 100644
--- a/epf-front-skeleton-main/src/app/services/major.service.ts
+++ b/epf-front-skeleton-main/src/app/services/major.service.ts
@@ -5,6 +5,7 @@ import { MajorStudentsDto } from "models/dto/MajorStudentsDto"
 import { MajorsAndCoursesDto } from "models/dto/majorsAndCoursesDto"
 import { ConstantsMockService } from "./constantsMock.service"
 import { HttpClient } from "@angular/common/http"
+import { Student } from "../models/student.model"
 
 @Injectable({
   providedIn: "root",
@@ -23,11 +24,8 @@ export class MajorService {
     return this.http.get<Major[]>(this.majorUrl)
   }
 
-  findStudentsFromMajor(majorId: string): Observable<MajorStudentsDto> {
-    let major = this.findById(BigInt(majorId))
-    return new Observable((observer) =>
-      observer.next(new MajorStudentsDto(major!!, this.constantsMockService.students.filter(s => s.major === major))),
-    )
+  findStudentsFromMajor(majorId: string): Observable<Student[]> {
+    return this.http.get<Student[]>(this.majorUrl + `/${majorId}/students`)
   }
 
   findById(id: bigint) {
-- 
GitLab