From f692ee80cb7d89b7781c94335d8d038e5170b62d Mon Sep 17 00:00:00 2001
From: Pierre-Louis BERTRAND <plbertrand@takima.fr>
Date: Sun, 8 Oct 2023 23:21:31 +0200
Subject: [PATCH] cleaned project

---
 back-skeleton/initdb/2_DEFAULT_ENTRIES.sql    |  6 +-
 .../takima/backskeleton/DTO/StudentDto.java   |  1 -
 .../backskeleton/DTO/StudentMapper.java       |  1 -
 .../controllers/StudentController.java        |  5 --
 .../takima/backskeleton/models/Student.java   |  8 --
 epf-front-skeleton-main/src/app/app.module.ts |  2 -
 .../src/app/services/constantsMock.service.ts | 77 -------------------
 .../src/app/services/course.service.ts        |  8 +-
 .../src/app/services/major.service.ts         | 15 +---
 .../src/app/services/student.service.ts       | 18 +----
 .../students/research/research.component.html | 19 -----
 .../students/research/research.component.scss |  8 --
 .../students/research/research.component.ts   | 31 --------
 .../student-details.component.html            |  7 --
 .../student-details.component.ts              | 10 ---
 .../src/app/students/students.component.html  |  5 --
 16 files changed, 6 insertions(+), 215 deletions(-)
 delete mode 100644 epf-front-skeleton-main/src/app/services/constantsMock.service.ts
 delete mode 100644 epf-front-skeleton-main/src/app/students/research/research.component.html
 delete mode 100644 epf-front-skeleton-main/src/app/students/research/research.component.scss
 delete mode 100644 epf-front-skeleton-main/src/app/students/research/research.component.ts

diff --git a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
index 1b1ea1b..709ae5f 100644
--- a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
+++ b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
@@ -8,9 +8,9 @@ INSERT INTO majors (id, name, description) VALUES (7, 'Ingénierie & Santé', 'O
 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);
-INSERT INTO students (id, first_name, last_name, birthdate, major_id, image) VALUES (3, 'Alain', 'Térieur', '2000-01-11', 1, null);
+INSERT INTO students (id, first_name, last_name, birthdate, major_id) VALUES (1, 'Paul', 'Harrohide', '2002-06-15', 1);
+INSERT INTO students (id, first_name, last_name, birthdate, major_id) VALUES (2, 'Jean', 'Bonbeur', '2001-08-21', 1);
+INSERT INTO students (id, first_name, last_name, birthdate, major_id) VALUES (3, 'Alain', 'Térieur', '2000-01-11', 1);
 
 INSERT INTO courses (id, name, hours) VALUES (1, 'Spanish', 30);
 INSERT INTO courses (id, name, hours) VALUES (2, 'German', 30);
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java
index f92a778..f0a938e 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java
@@ -17,5 +17,4 @@ public class StudentDto {
     private Instant birthdate;
     private List<Course> courses;
     private Major major;
-    private MultipartFile image;
 }
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
index 64d86d7..17a583b 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
@@ -13,7 +13,6 @@ public class StudentMapper {
                 .birthdate(dto.getBirthdate())
                 .courses(dto.getCourses())
                 .major(dto.getMajor())
-                .image(dto.getImage() == null ? null : dto.getImage().getBytes())
                 .build();
     }
 
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
index 16c7382..4508fa5 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
@@ -42,9 +42,4 @@ public class StudentController {
     public void updateStudent(@RequestBody StudentDto studentDto, @PathVariable Long id) {
         studentService.updateStudent(studentDto, id);
     }
-
-    @PostMapping("/{id}/picture")
-    public void editStudentPicture(@RequestPart("file") MultipartFile file) {
-
-    }
 }
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
index 9370abe..59e05c0 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
@@ -27,8 +27,6 @@ public class Student {
     @ManyToOne(cascade = CascadeType.MERGE)
     @JoinColumn(name = "major_id")
     private Major major;
-    @Column(name = "image")
-    private byte[] image;
 
     private Student(Builder builder) {
         this.id = builder.id;
@@ -37,7 +35,6 @@ public class Student {
         this.birthdate = builder.birthdate;
         this.courses = builder.courses;
         this.major = builder.major;
-        this.image = builder.image;
     }
     public Student() {
     }
@@ -49,7 +46,6 @@ public class Student {
         private Instant birthdate;
         private List<Course> courses;
         private Major major;
-        private byte[] image;
 
         public Builder id (Long id) {
             this.id = id;
@@ -76,10 +72,6 @@ public class Student {
             this.birthdate = birthdate;
             return this;
         }
-        public Builder image(byte[] image) {
-            this.image = image;
-            return this;
-        }
 
         public Student build() {
             return new Student(this);
diff --git a/epf-front-skeleton-main/src/app/app.module.ts b/epf-front-skeleton-main/src/app/app.module.ts
index dcf8a2e..9369f0e 100644
--- a/epf-front-skeleton-main/src/app/app.module.ts
+++ b/epf-front-skeleton-main/src/app/app.module.ts
@@ -14,7 +14,6 @@ import { MatIconModule } from "@angular/material/icon"
 import { MatButtonModule } from "@angular/material/button"
 import { MajorsComponent } from "majors/majors.component"
 import { MajorStudentsComponent } from "majors/major-students/major-students.component"
-import { ResearchComponent } from "students/research/research.component"
 import { HttpClientModule } from "@angular/common/http"
 
 @NgModule({
@@ -26,7 +25,6 @@ import { HttpClientModule } from "@angular/common/http"
     StudentDetailsComponent,
     MajorsComponent,
     MajorStudentsComponent,
-    ResearchComponent,
   ],
   imports: [
     BrowserModule,
diff --git a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts b/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
deleted file mode 100644
index 1561a1b..0000000
--- a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import { Injectable } from "@angular/core"
-import { Student } from "models/student.model"
-import { Course } from "models/course.model"
-import { Major } from "models/major.model"
-
-@Injectable({
-  providedIn: "root",
-})
-export class ConstantsMockService {
-  constructor() {
-  }
-
-  private spanish: Course = {name: "Spanish", hours: 2}
-  private german: Course = {name: "German", hours: 2}
-  private ioT: Course = {name: "Internet Of Things", hours: 15}
-  private termo: Course = {name: "Thermodynamic", hours: 10}
-  private anatomie: Course = {name: "Anatomy", hours: 7}
-  private java: Course = {name: "Java", hours: 15}
-  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 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: []}
-  private mde: Major = {name: "Data Engineering", description: "Trop cool plein de données à ordonner", id: 4n, students: []}
-  private mee: Major = {name: "Energie & Environnement", description: "On est full green", id: 5n, students: []}
-  private mem: Major = {name: "Engineering Management", description: "Des managers de qualité", id: 6n, students: []}
-  private mis: Major = {name: "Ingénierie & Santé", description: "On connait tous les os et tous les muscles du corps humain", id: 7n, students: []}
-  private miad: Major = {name: "Ingénierie & Architecture durable", description: "Objectif 0 carbon", id: 8n, students: []}
-  private mdid: Major = {name: "Design Industriel Durable", description: "Ca existait pas pour la P2022 ça", id: 9n, students: []}
-
-  private student1: Student = {
-    firstName: "Harry",
-    lastName: "Cover",
-    major: this.mem,
-    birthdate: new Date("1998-10-10"),
-    courses: [this.german, this.termo],
-    id: 1n,
-  }
-  private student2: Student = {
-    firstName: "Jacques",
-    lastName: "Climate",
-    major: this.mee,
-    birthdate: new Date("1999-11-07"),
-    courses: [this.german, this.termo],
-    id: 2n,
-  }
-  private student3: Student = {
-    firstName: "Alain",
-    lastName: "Parfait",
-    major: this.min,
-    birthdate: new Date("1999-04-12"),
-    courses: [this.german, this.ioT, this.java],
-    id: 3n,
-  }
-  private student4: Student = {
-    firstName: "Cathy",
-    lastName: "Mini",
-    major: this.mde,
-    birthdate: new Date("1999-05-12"),
-    courses: [this.spanish, this.math, this.java],
-    id: 4n,
-  }
-  private student5: Student = {
-    firstName: "Côme",
-    lastName: "Toulemonde",
-    major: this.mis,
-    birthdate: new Date("1999-07-16"),
-    courses: [this.spanish, this.anatomie, this.math],
-    id: 5n,
-  }
-
-  students: Student[] = [this.student1, this.student2, this.student3, this.student4, this.student5]
-  majors: Major[] = [this.min, this.msm, this.mae, this.mde, this.mee, this.mem, this.mis, this.miad, this.mdid]
-  courses: Course[] = [this.spanish, this.german, this.ioT, this.termo, this.anatomie, this.math, this.java, this.management]
-}
diff --git a/epf-front-skeleton-main/src/app/services/course.service.ts b/epf-front-skeleton-main/src/app/services/course.service.ts
index b0dd5b1..8f59125 100644
--- a/epf-front-skeleton-main/src/app/services/course.service.ts
+++ b/epf-front-skeleton-main/src/app/services/course.service.ts
@@ -1,23 +1,17 @@
 import { Injectable } from "@angular/core"
 import { Observable } from "rxjs"
 import { Course } from "models/course.model"
-import { ConstantsMockService } from "./constantsMock.service"
 import { HttpClient } from "@angular/common/http"
 
 @Injectable({
   providedIn: "root",
 })
 export class CourseService {
-  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
+  constructor(private http: HttpClient) {
   }
 
   private coursesUrl = "http://localhost:8080/courses"
 
-  // // FIXME : change to api call with httpclient
-  // findAll(): Observable<Course[]> {
-  //   return new Observable((observer) => observer.next(this.constantsMockService.courses))
-  // }
-
   findAll(): Observable<Course[]> {
     return this.http.get<Course[]>(this.coursesUrl)
   }
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 8337b71..5b34140 100644
--- a/epf-front-skeleton-main/src/app/services/major.service.ts
+++ b/epf-front-skeleton-main/src/app/services/major.service.ts
@@ -3,7 +3,6 @@ import { Observable } from "rxjs"
 import { Major } from "models/major.model"
 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"
 
@@ -11,15 +10,11 @@ import { Student } from "../models/student.model"
   providedIn: "root",
 })
 export class MajorService {
-  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
+  constructor(private http: HttpClient) {
   }
 
   private majorUrl = "http://localhost:8080/majors"
 
-  // findAll(): Observable<Major[]> {
-  //   return new Observable((observer) => observer.next(this.constantsMockService.majors))
-  // }
-
   findAll(): Observable<Major[]> {
     return this.http.get<Major[]>(this.majorUrl)
   }
@@ -28,12 +23,4 @@ export class MajorService {
     return this.http.get<Student[]>(this.majorUrl + `/${majorId}/students`)
   }
 
-  findById(id: bigint) {
-    return this.constantsMockService.majors.find((m) => m.id === id)
-  }
-
-  findAllMajorsAndAllCourses(): Observable<MajorsAndCoursesDto> {
-    return new Observable((observer) => observer.next(new MajorsAndCoursesDto(this.constantsMockService.majors, this.constantsMockService.courses)))
-  }
-
 }
diff --git a/epf-front-skeleton-main/src/app/services/student.service.ts b/epf-front-skeleton-main/src/app/services/student.service.ts
index 310ae3f..968a2cc 100644
--- a/epf-front-skeleton-main/src/app/services/student.service.ts
+++ b/epf-front-skeleton-main/src/app/services/student.service.ts
@@ -2,15 +2,13 @@ import { Injectable } from "@angular/core"
 import { Observable } from "rxjs"
 import { Student } from "models/student.model"
 import { Course } from "models/course.model"
-import { ConstantsMockService } from "./constantsMock.service"
-import { MajorsAndCoursesDto } from "models/dto/majorsAndCoursesDto"
 import { HttpClient } from "@angular/common/http"
 
 @Injectable({
   providedIn: "root",
 })
 export class StudentService {
-  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
+  constructor(private http: HttpClient) {
   }
 
   private studentsUrl = "http://localhost:8080/students"
@@ -52,18 +50,4 @@ export class StudentService {
     return student
   }
 
-  // save(student: Student) {
-  //   const index = this.constantsMockService.students.indexOf(student)
-  //   if (index > -1) {
-  //     this.constantsMockService.students.splice(index, 1, student)
-  //   } else {
-  //     student.id = BigInt(this.constantsMockService.students.length + 1)
-  //     this.constantsMockService.students.push(student)
-  //   }
-  // }
-
-  searchByMajorAndCourse(majorsAndCoursesDto: MajorsAndCoursesDto): Observable<Student[]> {
-    return new Observable((observer) => observer.next(this.constantsMockService.students.filter(s => s.major.id === majorsAndCoursesDto.majors[0].id && s.courses?.includes(majorsAndCoursesDto.courses[0]))))
-  }
-
 }
diff --git a/epf-front-skeleton-main/src/app/students/research/research.component.html b/epf-front-skeleton-main/src/app/students/research/research.component.html
deleted file mode 100644
index af983b0..0000000
--- a/epf-front-skeleton-main/src/app/students/research/research.component.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<ng-container *ngIf="majorsAndCourses$ | async; let majorAndCourse">
-  <form (ngSubmit)="search()" #researchForm="ngForm" class="d-flex">
-    <div class="form-group">
-      <select id="major" [(ngModel)]="majorModel" name="major" class="form-control">
-        <option [ngValue]="null" [disabled]="true">Select a major</option>
-        <option *ngFor="let major of majorAndCourse.majors" [ngValue]="major">{{major.name}}</option>
-      </select>
-    </div>
-    <div class="form-group">
-      <select id="course" [(ngModel)]="courseModel" name="course" class="form-control">
-        <option [ngValue]="null" [disabled]="true">Select a course</option>
-        <option *ngFor="let course of majorAndCourse.courses" [ngValue]="course">{{course.name}}</option>
-      </select>
-    </div>
-    <button type="submit" mat-raised-button color="primary" [disabled]="majorModel == null || courseModel == null">
-      Search
-    </button>
-  </form>
-</ng-container>
diff --git a/epf-front-skeleton-main/src/app/students/research/research.component.scss b/epf-front-skeleton-main/src/app/students/research/research.component.scss
deleted file mode 100644
index 069b30c..0000000
--- a/epf-front-skeleton-main/src/app/students/research/research.component.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-:host {
-  margin-left: 100px;
-  display: flex;
-
-  .form-group {
-    margin-right: 10px;
-  }
-}
diff --git a/epf-front-skeleton-main/src/app/students/research/research.component.ts b/epf-front-skeleton-main/src/app/students/research/research.component.ts
deleted file mode 100644
index ec56e51..0000000
--- a/epf-front-skeleton-main/src/app/students/research/research.component.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Component, EventEmitter, OnInit, Output } from "@angular/core"
-import { Observable } from "rxjs"
-import { MajorsAndCoursesDto } from "models/dto/majorsAndCoursesDto"
-import { Major } from "models/major.model"
-import { MajorService } from "services/major.service"
-import { Course } from "models/course.model"
-import { StudentService } from "services/student.service"
-import { Student } from "models/student.model"
-
-@Component({
-  selector: "epf-research",
-  templateUrl: "./research.component.html",
-  styleUrls: ["./research.component.scss"],
-})
-export class ResearchComponent implements OnInit {
-  majorsAndCourses$: Observable<MajorsAndCoursesDto> | undefined
-  majorModel: Major | null = null
-  courseModel: Course | null = null
-  @Output() searchEvent = new EventEmitter<Observable<Student[]>>()
-
-  constructor(private majorService: MajorService, private studentService: StudentService) {
-  }
-
-  ngOnInit(): void {
-    this.majorsAndCourses$ = this.majorService.findAllMajorsAndAllCourses()
-  }
-
-  search() {
-    this.searchEvent.emit(this.studentService.searchByMajorAndCourse(new MajorsAndCoursesDto([this.majorModel!!], [this.courseModel!!])))
-  }
-}
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
index 46d69fb..0ea9817 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
@@ -1,13 +1,6 @@
 <ng-container *ngIf="student$ | async; let student">
   <h1>Student's personal data</h1>
   <form (ngSubmit)="save(student)" #studentForm="ngForm">
-    <div class="form-group">
-      <label for="image">Picture</label>
-      <input type="file" class="form-control" id="image" (change)="onFileSelected($event)"
-
-        [(ngModel)]="student.image" name="image">
-    </div>
-
     <div class="form-group">
       <label for="firstName">First Name</label>
       <input type="text" class="form-control" id="firstName"
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
index e5e35f5..577b853 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
@@ -21,7 +21,6 @@ export class StudentDetailsComponent {
   courseSelectModel: Course | null = null
   notSelectedCourse: boolean | undefined
   today = new Date(Date.now())
-  selectedFile: File | null = null
 
   constructor(
     private _route: ActivatedRoute,
@@ -49,18 +48,9 @@ export class StudentDetailsComponent {
     this.studentService.removeCourseToStudent(student, course)
   }
 
-  onFileSelected(event: any) {
-    this.selectedFile = event.target.files[0]
-  }
-
   save(student: Student) {
     const id = this._route.snapshot.params["id"]
 
-    if (this.selectedFile !== null) {
-      const formData = new FormData()
-      formData.append('file', this.selectedFile)
-    }
-
     if (this.majorSelectModel !== null) {
       student.major = this.majorSelectModel
     }
diff --git a/epf-front-skeleton-main/src/app/students/students.component.html b/epf-front-skeleton-main/src/app/students/students.component.html
index 2af75c7..72af817 100644
--- a/epf-front-skeleton-main/src/app/students/students.component.html
+++ b/epf-front-skeleton-main/src/app/students/students.component.html
@@ -1,12 +1,10 @@
 <div class="d-flex align-items-center">
   <h1>Students</h1>
   <a mat-raised-button color="primary" routerLink="/student-details/new">New</a>
-  <epf-research (searchEvent)="searchByMajorAndCourse($event)"></epf-research>
 </div>
 <table class="table table-hover">
   <thead>
   <tr>
-    <th scope="col">Picture</th>
     <th scope="col">First Name</th>
     <th scope="col">Last Name</th>
     <th scope="col">Birthdate</th>
@@ -16,9 +14,6 @@
   </thead>
   <tbody>
   <tr *ngFor="let student of (students$ | async)" routerLink="/student-details/{{student.id}}">
-    <td>
-      <img [src]="student.image" alt="Pas de photo">
-    </td>
     <td>{{ student.firstName }}</td>
     <td>{{ student.lastName }}</td>
     <td>{{ student.birthdate | date : "dd/MM/yyyy" }}</td>
-- 
GitLab