diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 0cd2e35..8327538 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -10,6 +10,9 @@ import {BusinessunitEditComponent} from "./components/businessunit/businessunit- import {PeriodeEssaiComponent} from "./components/periode-essai/periode-essai.component"; import {PeriodeEssaiEditComponent} from "./components/periode-essai/periode-essai-edit/periode-essai-edit.component"; import {CollaborateurAddComponent} from "./components/collaborateur/collaborateur-add/collaborateur-add.component"; +import {ReferencementComponent} from "./components/referencement/referencement.component"; +import {ReferencementAddComponent} from "./components/referencement/referencement-add/referencement-add.component"; +import {ReferencementEditComponent} from "./components/referencement/referencement-edit/referencement-edit.component"; const routes : Routes = [ {path:'', redirectTo:'/home', pathMatch:'full'}, @@ -17,6 +20,9 @@ const routes : Routes = [ { path:'collaborateurs',component:CollaborateurComponent, data:{title:'Collaborateurs'} }, { path:'collaborateurs/add',component:CollaborateurAddComponent, data:{title:'Collaborateurs'} }, { path: 'collaborateurs/:id', component: CollaborateurEditComponent, data:{title:'Collaborateurs'} }, + { path:'referencements',component:ReferencementComponent, data:{title:'Referencements'} }, + { path:'referencements/add',component:ReferencementAddComponent, data:{title:'Referencements'} }, + { path: 'referencements/:id', component: ReferencementEditComponent, data:{title:'Referencements'} }, { path:'agences',component:AgenceComponent, data:{title:'Agences'} }, { path: 'agences/:id', component: AgenceEditComponent, data:{title:'Agences'} }, { path:'businessunits',component:BusinessunitComponent, data:{title:'BusinessUnits'} }, diff --git a/src/app/app.component.html b/src/app/app.component.html index 0155050..043d823 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -8,13 +8,22 @@ -
- -
+
+ +
+ +
+ +
+ + +
+
+ diff --git a/src/app/app.module.ts b/src/app/app.module.ts index fe5967b..28d735c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -18,6 +18,9 @@ import {PeriodeEssaiEditComponent} from './components/periode-essai/periode-essa import {CollaborateurAddComponent} from './components/collaborateur/collaborateur-add/collaborateur-add.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { ToastrModule } from 'ngx-toastr'; +import { ReferencementComponent } from './components/referencement/referencement.component'; +import { ReferencementAddComponent } from './components/referencement/referencement-add/referencement-add.component'; +import { ReferencementEditComponent } from './components/referencement/referencement-edit/referencement-edit.component'; @NgModule({ declarations: [ @@ -32,6 +35,9 @@ import { ToastrModule } from 'ngx-toastr'; PeriodeEssaiComponent, PeriodeEssaiEditComponent, CollaborateurAddComponent, + ReferencementComponent, + ReferencementAddComponent, + ReferencementEditComponent, ], imports: [ diff --git a/src/app/components/collaborateur/collaborateur-add/collaborateur-add.component.html b/src/app/components/collaborateur/collaborateur-add/collaborateur-add.component.html index e0a5a82..53588f2 100644 --- a/src/app/components/collaborateur/collaborateur-add/collaborateur-add.component.html +++ b/src/app/components/collaborateur/collaborateur-add/collaborateur-add.component.html @@ -140,19 +140,6 @@
-
- - -
-
Vous devez préciser le référent du collaborateur
-
-
-
- - - -
-
Vous devez préciser le référent du collaborateur
-
-
-
+
+ +
+ + +
+ +
+ +
+ +
+ + +
+
Vous devez préciser le référent du référencement
+
+
+ +
+ + +
+
Vous devez préciser le référent du référencement
+
+
+ +
+ +
+ + +
+ diff --git a/src/app/components/referencement/referencement-add/referencement-add.component.scss b/src/app/components/referencement/referencement-add/referencement-add.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/referencement/referencement-add/referencement-add.component.ts b/src/app/components/referencement/referencement-add/referencement-add.component.ts new file mode 100644 index 0000000..75502f3 --- /dev/null +++ b/src/app/components/referencement/referencement-add/referencement-add.component.ts @@ -0,0 +1,107 @@ +import { Component, OnInit } from '@angular/core'; +import {Collaborateur} from "../../../interfaces/collaborateur"; +import {FormBuilder, FormGroup, Validators} from "@angular/forms"; +import {HttpClient} from "@angular/common/http"; +import {CollaborateurService} from "../../../services/collaborateur.service"; +import {ToastrService} from "ngx-toastr"; +import {ReferencementService} from "../../../services/referencement.service"; +import {Referencement} from "../../../interfaces/referencement"; + +@Component({ + selector: 'app-referencement-add', + templateUrl: './referencement-add.component.html', + styleUrls: ['./referencement-add.component.scss'] +}) +export class ReferencementAddComponent implements OnInit { + + collaborateurs: Collaborateur[] = []; + collaborateur = {} as Collaborateur; + referencements: Referencement[] = []; + referencement = {} as Referencement; + + errorValue: number = 0; + rDate: String = ""; + bDate: String = ""; + + registerForm!: FormGroup; + submitted = false; + + constructor(private http: HttpClient, + private referencementService: ReferencementService, + private collaborateurService: CollaborateurService, + private formBuilder: FormBuilder, + private toastr: ToastrService) { + } + + ngOnInit(): void { + this.getCollaborateurs(); + this.getReferencements(); + this.registerForm = this.formBuilder.group({ + referredId: ['', Validators.required], + referrerId: ['', Validators.required], + startingDate: ['', Validators.required], + endingDate: [], + }); + if (this.referencement.startingDate) { + this.rDate = new Date(this.collaborateur.resignationDate).toISOString().split('T')[0]; + } + if (this.referencement.endingDate) { + this.bDate = new Date(this.collaborateur.birthDate).toISOString().split('T')[0]; + } + } + + getCollaborateurs(): void { + this.collaborateurService.getCollaborateurs() + .subscribe(collaborateurs => this.collaborateurs = collaborateurs); + } + + getReferencements(): void { + this.referencementService.getReferencements() + .subscribe(referencement => this.referencements = referencement); + } + + onSubmit() { + this.submitted = true; + if (this.registerForm.invalid) { + return; + } + this.referencement = this.registerForm.value + if (this.referencement) { + this.referencementService.addReferencement(this.referencement).subscribe(referencement => { + this.referencements.push(referencement); + this.showSuccess(); + }, + () => { + this.showError() + }) + + } + } + + get form() { + return this.registerForm.controls; + } + + onReset() { + this.submitted = false; + this.registerForm.reset(); + } + + onStartingDateChange($event: any): void { + this.collaborateur.resignationDate = new Date($event.target.value); + } + + onEndingDateChange($event: any): void { + this.collaborateur.birthDate = new Date($event.target.value); + } + + showSuccess() { + this.toastr.success('Création réussie', 'Référencement'); + } + + showError() { + this.toastr.error('Création échouée', 'Référencement'); + } + +} + diff --git a/src/app/components/referencement/referencement-edit/referencement-edit.component.html b/src/app/components/referencement/referencement-edit/referencement-edit.component.html new file mode 100644 index 0000000..5d849df --- /dev/null +++ b/src/app/components/referencement/referencement-edit/referencement-edit.component.html @@ -0,0 +1,57 @@ +

Modifier un collaborateur :

+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ + +
+
Vous devez préciser le référent du référencement
+
+
+ +
+ + +
+
Vous devez préciser le référent du référencement
+
+
+ +
+ +
+ + + + +
+
diff --git a/src/app/components/referencement/referencement-edit/referencement-edit.component.scss b/src/app/components/referencement/referencement-edit/referencement-edit.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/referencement/referencement-edit/referencement-edit.component.ts b/src/app/components/referencement/referencement-edit/referencement-edit.component.ts new file mode 100644 index 0000000..73ecc39 --- /dev/null +++ b/src/app/components/referencement/referencement-edit/referencement-edit.component.ts @@ -0,0 +1,137 @@ +import { Component, OnInit } from '@angular/core'; +import {Collaborateur} from "../../../interfaces/collaborateur"; +import {Referencement} from "../../../interfaces/referencement"; +import {FormBuilder, FormGroup, Validators} from "@angular/forms"; +import {HttpClient} from "@angular/common/http"; +import {ReferencementService} from "../../../services/referencement.service"; +import {CollaborateurService} from "../../../services/collaborateur.service"; +import {ToastrService} from "ngx-toastr"; +import {Location} from "@angular/common"; +import {ActivatedRoute} from "@angular/router"; +import {Observable} from "rxjs"; +import {take, tap} from "rxjs/operators"; + +@Component({ + selector: 'app-referencement-edit', + templateUrl: './referencement-edit.component.html', + styleUrls: ['./referencement-edit.component.scss'] +}) +export class ReferencementEditComponent implements OnInit { + + referencementObservable! : Observable; + id: number; + + collaborateurs: Collaborateur[] = []; + collaborateur = {} as Collaborateur; + referencements: Referencement[] = []; + referencement = {} as Referencement; + + errorValue: number = 0; + rDate: String = ""; + bDate: String = ""; + + registerForm!: FormGroup; + submitted = false; + + constructor(private http: HttpClient, + private referencementService: ReferencementService, + private collaborateurService: CollaborateurService, + private formBuilder: FormBuilder, + private location: Location, + private route: ActivatedRoute, + private toastr: ToastrService) { + this.id = Number(this.route.snapshot.paramMap.get('id')) + } + + async ngOnInit() { + this.getCollaborateurs(); + this.getReferencements(); + this.registerForm = this.formBuilder.group({ + referredId: ['', Validators.required], + referrerId: ['', Validators.required], + startingDate: ['', Validators.required], + endingDate: [], + }); + + this.referencementObservable = this.referencementService.getReferencement(this.id).pipe(tap(ref => this.registerForm.patchValue(ref))) + this.referencement = await this.referencementObservable.pipe(take(1)).toPromise() + + if (this.referencement.startingDate) { + this.rDate = new Date(this.referencement.startingDate).toISOString().split('T')[0]; + } + if (this.referencement.endingDate) { + this.bDate = new Date(this.referencement.endingDate).toISOString().split('T')[0]; + } + } + + getCollaborateurs(): void { + this.collaborateurService.getCollaborateurs() + .subscribe(collaborateurs => this.collaborateurs = collaborateurs); + } + + getReferencements(): void { + this.referencementService.getReferencements() + .subscribe(referencement => this.referencements = referencement); + } + + onSubmit() { + this.submitted = true; + if (this.registerForm.invalid) { + return; + } + this.referencement.referredId = this.registerForm.value.referredId + this.referencement.referrerId = this.registerForm.value.referrerId + this.referencement.startingDate = this.registerForm.value.startingDate + + if(this.registerForm.value.endingDate != undefined){ + this.referencement.referredId = this.registerForm.value.referredId + } + + if (this.referencement) { + this.referencementService.updateReferencement(this.referencement).subscribe(() => { + this.showSuccess(); + }, + () => { + this.showError() + }) + + } + } + + get form() { + return this.registerForm.controls; + } + + onReset() { + this.submitted = false; + this.registerForm.reset(); + } + + onStartingDateChange($event: any): void { + this.collaborateur.resignationDate = new Date($event.target.value); + } + + onEndingDateChange($event: any): void { + this.collaborateur.birthDate = new Date($event.target.value); + } + + showSuccess() { + this.toastr.success('Modification réussie', 'Référencement'); + } + + showError() { + this.toastr.error('Modification échouée', 'Référencement'); + } + + goBack(): void { + this.location.back(); + } + + delete():void { + if (this.referencement){ + this.referencementService.deleteReferencement(this.referencement) + .subscribe(()=>this.goBack()); + } + } + +} diff --git a/src/app/components/referencement/referencement.component.html b/src/app/components/referencement/referencement.component.html new file mode 100644 index 0000000..706c2bd --- /dev/null +++ b/src/app/components/referencement/referencement.component.html @@ -0,0 +1,35 @@ +
+ +

Référencements

+ +
+

Pour ajouter un nouveau référencement, cliquez ici :

+ +
+ + +
+ + + + + + + + + + + + + + + + + + + +
RéférentRéféréDate de débutDate de fin
{{getCollaborateurById(referencement.referrerId).name}} {{getCollaborateurById(referencement.referrerId).firstName}} {{getCollaborateurById(referencement.referredId).name}} {{getCollaborateurById(referencement.referredId).firstName}} {{getSplitDate(referencement.startingDate.toString())}} {{getSplitDate(referencement.endingDate?.toString())}} Modifier
+
+ + +
diff --git a/src/app/components/referencement/referencement.component.scss b/src/app/components/referencement/referencement.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/referencement/referencement.component.ts b/src/app/components/referencement/referencement.component.ts new file mode 100644 index 0000000..9a6b3e3 --- /dev/null +++ b/src/app/components/referencement/referencement.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {ReferencementService} from "../../services/referencement.service"; +import {Referencement} from "../../interfaces/referencement"; +import {CollaborateurService} from "../../services/collaborateur.service"; +import {Collaborateur} from "../../interfaces/collaborateur"; + +@Component({ + selector: 'app-referencement', + templateUrl: './referencement.component.html', + styleUrls: ['./referencement.component.scss'] +}) +export class ReferencementComponent implements OnInit { + + referencements: Referencement[] = []; + collaborateurs: Collaborateur[]= []; + + constructor( + private http: HttpClient, + private referencementService: ReferencementService, + private collaborateurService: CollaborateurService, + ) { + } + + ngOnInit(): void { + this.getReferencements(); + this.getCollaborateurs(); + } + + getCollaborateurs(): void { + this.collaborateurService.getCollaborateurs() + .subscribe(collaborateurs => this.collaborateurs = collaborateurs); + } + + getCollaborateurById(id : number) : Collaborateur{ + let collab = {} as Collaborateur; + this.collaborateurs.forEach(c => { + if (c.id==id){ + collab= c; + return; + } + }); + + return collab; + } + + getReferencements(): void { + this.referencementService.getReferencements() + .subscribe(referencements => this.referencements = referencements); + } + + getSplitDate(date: string | undefined) : string{ + if (date == undefined){ + return ""; + } + return date.split('T')[0]; + } + +} diff --git a/src/app/interfaces/collaborateur.ts b/src/app/interfaces/collaborateur.ts index b8eda69..6637e1c 100644 --- a/src/app/interfaces/collaborateur.ts +++ b/src/app/interfaces/collaborateur.ts @@ -10,7 +10,6 @@ export interface Collaborateur { personalMail:string; apsideMail:string; resignationDate:Date; - referrerId:number; businessUnitId:number; id: number; } diff --git a/src/app/interfaces/referencement.ts b/src/app/interfaces/referencement.ts new file mode 100644 index 0000000..005c7b1 --- /dev/null +++ b/src/app/interfaces/referencement.ts @@ -0,0 +1,7 @@ +export interface Referencement { + id: number; + startingDate : Date; + endingDate? : Date; + referredId : number; + referrerId : number; +} diff --git a/src/app/services/referencement.service.ts b/src/app/services/referencement.service.ts new file mode 100644 index 0000000..e4a7664 --- /dev/null +++ b/src/app/services/referencement.service.ts @@ -0,0 +1,43 @@ +import {Referencement} from "../interfaces/referencement"; +import {Injectable} from '@angular/core'; +import {Observable} from "rxjs"; +import {HttpClient, HttpHeaders} from "@angular/common/http"; +import {referencementsUrl} from "../../ressources/routes/routesPreprod"; + + +@Injectable({providedIn: 'root'}) + +export class ReferencementService { + + private referencementsUrl = referencementsUrl; + + httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) + }; + + constructor(private http: HttpClient) { } + + getReferencements():Observable { + return this.http.get(this.referencementsUrl); + } + + getReferencement(id : number):Observable{ + return this.http.get(this.referencementsUrl+"/"+id); + } + + updateReferencement(referencement : Referencement):Observable{ + let body = JSON.stringify(referencement); + return this.http.put(this.referencementsUrl + "/" + referencement.id, body, this.httpOptions); + + } + + deleteReferencement(referencement: Referencement) { + return this.http.delete(this.referencementsUrl + "/" + referencement.id); + } + + addReferencement(referencement: Referencement): Observable { + let body = JSON.stringify(referencement); + return this.http.post(this.referencementsUrl, body, this.httpOptions); + + } +} diff --git a/src/ressources/routes/routes.ts b/src/ressources/routes/routes.ts index a4645f5..82743c1 100644 --- a/src/ressources/routes/routes.ts +++ b/src/ressources/routes/routes.ts @@ -1,3 +1,5 @@ export const collaborateursUrl = 'https://localhost:5001/api/collaborateurs'; export const agencesUrl = 'https://localhost:5001/api/agences'; export const businessunitsUrl = 'https://localhost:5001/api/businessunits'; +export const periodeessaisUrl = 'https://localhost:5001/api/periodeessais'; +export const referencementsUrl = 'https://localhost:5001/api/referencements'; diff --git a/src/ressources/routes/routesPreprod.ts b/src/ressources/routes/routesPreprod.ts index a611105..b1a3c3b 100644 --- a/src/ressources/routes/routesPreprod.ts +++ b/src/ressources/routes/routesPreprod.ts @@ -2,3 +2,4 @@ export const collaborateursUrl = 'https://collaborateur-epa.apsdigit.lan/api/col export const agencesUrl = 'https://collaborateur-epa.apsdigit.lan/api/agences'; export const businessunitsUrl = 'https://collaborateur-epa.apsdigit.lan/api/businessunits'; export const periodeessaisUrl = 'https://collaborateur-epa.apsdigit.lan/api/periodeessais'; +export const referencementsUrl = 'https://collaborateur-epa.apsdigit.lan/api/referencements';