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