Passage des collaborateurs avec ngForms, afin d'avoir les champs obligatoires fonctionnels. Il reste encore des détails à corriger

pull/11/head
Clement FERRERE 2 years ago
parent befc71930d
commit 6127980db9
  1. 2
      src/app/app.module.ts
  2. 1
      src/app/components/businessunit/businessunit-edit/businessunit-edit.component.ts
  3. 102
      src/app/components/collaborateur/collaborateur-detail/collaborateur-detail.component.html
  4. 1
      src/app/components/collaborateur/collaborateur-detail/collaborateur-detail.component.scss
  5. 65
      src/app/components/collaborateur/collaborateur-detail/collaborateur-detail.component.ts
  6. 149
      src/app/components/collaborateur/collaborateur-edit/collaborateur-edit.component.html
  7. 79
      src/app/components/collaborateur/collaborateur-edit/collaborateur-edit.component.ts
  8. 147
      src/app/components/collaborateur/collaborateur.component.html
  9. 67
      src/app/components/collaborateur/collaborateur.component.ts
  10. 2
      src/app/services/agence.service.ts
  11. 2
      src/app/services/businessunit.service.ts
  12. 2
      src/app/services/collaborateur.service.ts

@ -11,7 +11,6 @@ import { AppRoutingModule } from './app-routing.module';
import { HomeComponent } from './components/home/home.component';
import { AgenceComponent } from './components/agence/agence.component';
import { AgenceEditComponent } from './components/agence/agence-edit/agence-edit.component';
import { CollaborateurDetailComponent } from './components/collaborateur/collaborateur-detail/collaborateur-detail.component';
import { BusinessunitComponent } from './components/businessunit/businessunit.component';
import { BusinessunitEditComponent } from './components/businessunit/businessunit-edit/businessunit-edit.component';
@ -23,7 +22,6 @@ import { BusinessunitEditComponent } from './components/businessunit/businessuni
HomeComponent,
AgenceComponent,
AgenceEditComponent,
CollaborateurDetailComponent,
BusinessunitComponent,
BusinessunitEditComponent,

@ -16,7 +16,6 @@ export class BusinessunitEditComponent implements OnInit {
businessunit = {} as Businessunit ;
agences : Agence[] = [];
agence = {} as Agence ;
registerForm!: FormGroup;

@ -1,102 +0,0 @@
<div *ngIf="collaborateur" class="mb-3">
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-name" class="form-label">Nom</label>
<input class="form-control" id="collaborateur-name" [(ngModel)]="collaborateur.name" placeholder="Nom">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-firstName" class="form-label">Prénom</label>
<input class="form-control" id="collaborateur-firstName" [(ngModel)]="collaborateur.firstName" placeholder="Prénom">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-birthDate" class="form-label">Date de naissance</label>
<input type="date" class="form-control" id="collaborateur-birthDate" (change)="onBirthDateChange($event)" [(ngModel)]="bDate" placeholder="Date de naissance">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Genre</label>
<select class="form-select" name="genre" id="collaborateur-gender" [(ngModel)]="collaborateur.gender">
<option value="" disabled selected>Genre</option>
<option value="MASCULIN">Masculin</option>
<option value="FEMININ">Féminin</option>
<option value="AUTRE">Autre</option>
</select>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-status" class="form-label">Statut</label>
<select class="form-select" name="statut" id="collaborateur-status" [(ngModel)]="collaborateur.status">
<option value="" disabled selected>Statut</option>
<option value="CADRE">Cadre</option>
<option value="NON-CADRE">Non-cadre</option>
<option value="ALTERNANT">Alternant</option>
<option value="STAGIAIRE">Stagiaire</option>
</select>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-childrenNumber" class="form-label">Nombre d'enfants</label>
<input type="number" min="0" onkeyup="if(this.value<0){this.value= this.value * -1}" class="form-control" id="collaborateur-childrenNumber" [(ngModel)]="collaborateur.childrenNumber" placeholder="Nombre d'enfants">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-address" class="form-label">Adresse</label>
<input class="form-control" id="collaborateur-address" [(ngModel)]="collaborateur.address" placeholder="Adresse">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-telephone" class="form-label">Téléphone</label>
<input class="form-control" id="collaborateur-telephone" [(ngModel)]="collaborateur.telephone" placeholder="Téléphone">
</div>
</div>
<div class="row mb-4">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-personalMail" class="form-label">Mail personnel</label>
<input type="email" class="form-control" id="collaborateur-personalMail" [(ngModel)]="collaborateur.personalMail" placeholder="prenom.nom@example.com">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-apsideMail" class="form-label">Mail Apside</label>
<input type="email" class="form-control" id="collaborateur-apsideMail" [(ngModel)]="collaborateur.apsideMail" placeholder="prenom.nom@apside-groupe.com">
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label for="collaborateur-resignationDate" class="form-label">Date de départ</label>
<input type="date" class="form-control" id="collaborateur-resignationDate" (change)="onResignationDateChange($event)" [ngModel]="rDate" placeholder="Date de départ">
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-md-6">
<label class="form-label">Référent</label>
<select class="form-select" name="referrer" id="referrer-select" [(ngModel)]="collaborateur.referrerId">
<option value="" disabled selected>Choisissez un référent pour le collaborateur</option>
<option *ngFor="let collaborateur of collaborateurs" [ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option>
</select>
</div>
<div class="form-group col-12 col-md-6">
<label class="form-label">Business Unit</label>
<select class="form-select" name="businessunit" id="businessunit-select" [(ngModel)]="collaborateur.businessUnitId">
<option value="" disabled selected>Choisissez la Business Unit pour le collaborateur</option>
<option *ngFor="let businessunit of businessunits" [ngValue]="businessunit.id">{{businessunit.name}} </option>
</select>
</div>
</div>
<br/>
<span>
*Tous les champs sont obligatoires
</span>
</div>

@ -1,65 +0,0 @@
import {Component, Input, OnInit} from '@angular/core';
import {Collaborateur} from "../../../interfaces/collaborateur";
import {HttpClient} from "@angular/common/http";
import {CollaborateurService} from "../../../services/collaborateur.service";
import {BusinessunitService} from "../../../services/businessunit.service";
import {Businessunit} from "../../../interfaces/businessunit";
@Component({
selector: 'app-collaborateur-detail',
templateUrl: './collaborateur-detail.component.html',
styleUrls: ['./collaborateur-detail.component.scss']
})
export class CollaborateurDetailComponent implements OnInit {
businessunits : Businessunit[] = [];
collaborateurs : Collaborateur[] = [];
rDate : String = "";
bDate : String = "";
@Input()
collaborateur = {} as Collaborateur;
constructor(
private http : HttpClient,
private collaborateurService: CollaborateurService,
private businessunitService: BusinessunitService
) {}
ngOnInit(): void {
this.getCollaborateurs();
this.getBusinessunits();
if (this.collaborateur.resignationDate) {
this.rDate = new Date(this.collaborateur.resignationDate).toISOString().split('T')[0];
console.log(this.rDate)
}
if (this.collaborateur.birthDate) {
this.bDate = new Date(this.collaborateur.birthDate).toISOString().split('T')[0];
console.log(this.bDate)
}
}
getCollaborateurs():void {
this.collaborateurService.getCollaborateurs()
.subscribe(collaborateurs => this.collaborateurs = collaborateurs);
}
getBusinessunits():void {
this.businessunitService.getBusinessunits()
.subscribe(businessunits => this.businessunits = businessunits);
}
onResignationDateChange($event: any):void {
console.log($event.target)
this.collaborateur.resignationDate = new Date($event.target.value);
console.log(this.rDate)
console.log(this.collaborateur.resignationDate)
}
onBirthDateChange($event: any):void {
console.log($event.target)
this.collaborateur.birthDate = new Date($event.target.value);
console.log(this.bDate)
console.log(this.collaborateur.birthDate)
}
}

@ -5,9 +5,150 @@
<div><label class="form-label">ID : </label>{{collaborateur.id}}</div>
<app-collaborateur-detail [collaborateur]="collaborateur"></app-collaborateur-detail>
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()" >
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Nom</label>
<input class="form-control" formControlName="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }" [value]="collaborateur.name">
<div *ngIf="submitted && f.name.errors" class="invalid-feedback">
<div *ngIf="f.name.errors.required">Le nom d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Prénom</label>
<input class="form-control" formControlName="firstName" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" [value]="collaborateur.firstName">
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">Le prénom d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Date de naissance</label>
<input type="date" class="form-control" formControlName="birthDate" (change)="onBirthDateChange($event)" [ngClass]="{ 'is-invalid': submitted && f.birthDate.errors }" [value]="collaborateur.birthDate">
<div *ngIf="submitted && f.birthDate.errors" class="invalid-feedback">
<div *ngIf="f.birthDate.errors.required">La date de naissance d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Genre</label>
<select class="form-select" formControlName="gender" [ngClass]="{ 'is-invalid': submitted && f.gender.errors }" [value]="collaborateur.gender">
<option value="" disabled selected>Genre</option>
<option value="MASCULIN">Masculin</option>
<option value="FEMININ">Féminin</option>
<option value="AUTRE">Autre</option>
</select>
<div *ngIf="submitted && f.gender.errors" class="invalid-feedback">
<div *ngIf="f.gender.errors.required">Vous devez préciser le genre du collaborateur</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Statut</label>
<select class="form-select" formControlName="status" [ngClass]="{ 'is-invalid': submitted && f.status.errors }" [value]="collaborateur.status">
<option value="" disabled selected>Statut</option>
<option value="CADRE">Cadre</option>
<option value="NON-CADRE">Non-cadre</option>
<option value="ALTERNANT">Alternant</option>
<option value="STAGIAIRE">Stagiaire</option>
</select>
<div *ngIf="submitted && f.status.errors" class="invalid-feedback">
<div *ngIf="f.status.errors.required">Vous devez préciser le statut du collaborateur</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Nombre d'enfants</label>
<input class="form-control" formControlName="childrenNumber" [ngClass]="{ 'is-invalid': submitted && f.childrenNumber.errors }" type="number" min="0" onkeyup="if(this.value<0){this.value= this.value * -1}" [value]="collaborateur.childrenNumber">
<div *ngIf="submitted && f.childrenNumber.errors" class="invalid-feedback">
<div *ngIf="f.childrenNumber.errors.required">Le nombre d'enfant d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Adresse</label>
<input class="form-control" formControlName="address" [ngClass]="{ 'is-invalid': submitted && f.address.errors }" [value]="collaborateur.address">
<div *ngIf="submitted && f.address.errors" class="invalid-feedback">
<div *ngIf="f.address.errors.required">L'adresse d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Téléphone</label>
<input class="form-control" formControlName="telephone" [ngClass]="{ 'is-invalid': submitted && f.telephone.errors }" [value]="collaborateur.telephone">
<div *ngIf="submitted && f.telephone.errors" class="invalid-feedback">
<div *ngIf="f.telephone.errors.required">Le numéro de téléphone d'un collaborateur est obligatoire</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Mail personnel</label>
<input type="email" class="form-control" formControlName="personalMail" [ngClass]="{ 'is-invalid': submitted && f.personalMail.errors }" placeholder="prenom.nom@example.com" [value]="collaborateur.personalMail">
<div *ngIf="submitted && f.personalMail.errors" class="invalid-feedback">
<div *ngIf="f.personalMail.errors.required">Le mail personnel d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Mail Apside</label>
<input type="email" class="form-control" formControlName="apsideMail" [ngClass]="{ 'is-invalid': submitted && f.apsideMail.errors }" placeholder="prenom.nom@apside-groupe.com" [value]="collaborateur.apsideMail">
<div *ngIf="submitted && f.apsideMail.errors" class="invalid-feedback">
<div *ngIf="f.apsideMail.errors.required">Le mail Apside d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Date de départ</label>
<input type="date" class="form-control" formControlName="resignationDate" (change)="onResignationDateChange($event)" [ngClass]="{ 'is-invalid': submitted && f.resignationDate.errors }" [value]="collaborateur.resignationDate">
<div *ngIf="submitted && f.resignationDate.errors" class="invalid-feedback">
<div *ngIf="f.resignationDate.errors.required">La date de départ d'un collaborateur est obligatoire</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-md-6">
<label class="form-label">Référent</label>
<select class="form-select" formControlName="referrerId" [ngClass]="{ 'is-invalid': submitted && f.referrerId.errors }">
<option value="" disabled selected>Choisissez un référent pour le collaborateur</option>
<option *ngFor="let collaborateur of collaborateurs" [ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option>
</select>
<div *ngIf="submitted && f.referrerId.errors" class="invalid-feedback">
<div *ngIf="f.referrerId.errors.required">Vous devez préciser le référent du collaborateur</div>
</div>
</div>
<div class="form-group col-12 col-md-6">
<label class="form-label">Business Unit</label>
<select class="form-select" formControlName="businessUnitId" [ngClass]="{ 'is-invalid': submitted && f.businessUnitId.errors }">
<option value="" disabled selected>Choisissez une Business Unit pour le collaborateur</option>
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}} </option>
</select>
<div *ngIf="submitted && f.businessUnitId.errors" class="invalid-feedback">
<div *ngIf="f.businessUnitId.errors.required">Vous devez préciser la Business Unit du collaborateur</div>
</div>
</div>
</div>
<div>
<button (click)="goBack()">Retour</button>
<button type="submit">Sauvegarder les changements</button>
<button (click)="delete()">Supprimer le collaborateur</button>
<button type="reset" (click)="onReset()">Effacer</button>
</div>
</form>
<button (click)="goBack()">Retour</button>
<button (click)="save()">Sauvegarder les changements</button>
<button (click)="delete()">Supprimer le collaborateur</button>
</div>

@ -3,6 +3,9 @@ import {Collaborateur} from "../../../interfaces/collaborateur";
import { ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common';
import { CollaborateurService} from "../../../services/collaborateur.service";
import {BusinessunitService} from "../../../services/businessunit.service";
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
import {Businessunit} from "../../../interfaces/businessunit";
@Component({
selector: 'app-collaborateur-edit',
@ -10,16 +13,55 @@ import { CollaborateurService} from "../../../services/collaborateur.service";
styleUrls: ['./collaborateur-edit.component.scss']
})
export class CollaborateurEditComponent implements OnInit {
collaborateur : Collaborateur | undefined;
collaborateur = {} as Collaborateur;
collaborateurs : Collaborateur[] = [];
businessUnits : Businessunit[] = [];
businessUnit = {} as Businessunit ;
rDate : String = "";
bDate : String = "";
registerForm!: FormGroup;
submitted = false;
constructor(
private route: ActivatedRoute,
private collaborateurService: CollaborateurService,
private location: Location
private businessunitService: BusinessunitService,
private location: Location,
private formBuilder: FormBuilder
) { }
ngOnInit(): void {
this.getCollaborateur()
this.getCollaborateurs()
this.getCollaborateur();
this.getBusinessunits();
this.registerForm = this.formBuilder.group({
name: ['', Validators.required],
firstName: ['', Validators.required],
birthDate: ['', Validators.required],
gender: ['', Validators.required],
status: ['', Validators.required],
childrenNumber: ['', Validators.required],
address: ['', Validators.required],
telephone: ['', Validators.required],
personalMail: ['', Validators.required],
apsideMail: ['', Validators.required],
resignationDate: ['', Validators.required],
referrerId: ['', Validators.required],
businessUnitId: ['', Validators.required],
});
if (this.collaborateur.resignationDate) {
this.rDate = new Date(this.collaborateur.resignationDate).toISOString().split('T')[0];
}
if (this.collaborateur.birthDate) {
this.bDate = new Date(this.collaborateur.birthDate).toISOString().split('T')[0];
}
}
getCollaborateurs():void {
this.collaborateurService.getCollaborateurs()
.subscribe(collaborateurs => this.collaborateurs = collaborateurs);
}
getCollaborateur(): void {
@ -28,13 +70,17 @@ export class CollaborateurEditComponent implements OnInit {
.subscribe(collaborateur => this.collaborateur = collaborateur);
}
getBusinessunits():void {
this.businessunitService.getBusinessunits()
.subscribe(businessunits => this.businessUnits = businessunits);
}
goBack(): void {
this.location.back();
}
save():void{
if (this.collaborateur){
console.log("SAVE",this.collaborateur.resignationDate)
this.collaborateurService.updateCollaborateur(this.collaborateur)
.subscribe(()=>this.goBack());
}
@ -46,4 +92,29 @@ export class CollaborateurEditComponent implements OnInit {
.subscribe(()=>this.goBack());
}
}
onSubmit() {
this.submitted = true;
if (this.registerForm.invalid) {
return;
}
this.collaborateur = this.registerForm.value
this.save()
}
get f() { return this.registerForm.controls; }
onReset() {
this.submitted = false;
this.registerForm.reset();
}
onResignationDateChange($event: any):void {
this.collaborateur.resignationDate = new Date($event.target.value);
}
onBirthDateChange($event: any):void {
this.collaborateur.birthDate = new Date($event.target.value);
}
}

@ -2,11 +2,150 @@
<h3>Ajouter un collaborateur : </h3>
<app-collaborateur-detail [collaborateur]="collaborateur"></app-collaborateur-detail>
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()" >
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Nom</label>
<input class="form-control" formControlName="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }">
<div *ngIf="submitted && f.name.errors" class="invalid-feedback">
<div *ngIf="f.name.errors.required">Le nom d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Prénom</label>
<input class="form-control" formControlName="firstName" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }">
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">Le prénom d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Date de naissance</label>
<input type="date" class="form-control" formControlName="birthDate" (change)="onBirthDateChange($event)" [ngClass]="{ 'is-invalid': submitted && f.birthDate.errors }">
<div *ngIf="submitted && f.birthDate.errors" class="invalid-feedback">
<div *ngIf="f.birthDate.errors.required">La date de naissance d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Genre</label>
<select class="form-select" formControlName="gender" [ngClass]="{ 'is-invalid': submitted && f.gender.errors }">
<option value="" disabled selected>Genre</option>
<option value="MASCULIN">Masculin</option>
<option value="FEMININ">Féminin</option>
<option value="AUTRE">Autre</option>
</select>
<div *ngIf="submitted && f.gender.errors" class="invalid-feedback">
<div *ngIf="f.gender.errors.required">Vous devez préciser le genre du collaborateur</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Statut</label>
<select class="form-select" formControlName="status" [ngClass]="{ 'is-invalid': submitted && f.status.errors }">
<option value="" disabled selected>Statut</option>
<option value="CADRE">Cadre</option>
<option value="NON-CADRE">Non-cadre</option>
<option value="ALTERNANT">Alternant</option>
<option value="STAGIAIRE">Stagiaire</option>
</select>
<div *ngIf="submitted && f.status.errors" class="invalid-feedback">
<div *ngIf="f.status.errors.required">Vous devez préciser le statut du collaborateur</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Nombre d'enfants</label>
<input class="form-control" formControlName="childrenNumber" [ngClass]="{ 'is-invalid': submitted && f.childrenNumber.errors }" type="number" min="0" onkeyup="if(this.value<0){this.value= this.value * -1}">
<div *ngIf="submitted && f.childrenNumber.errors" class="invalid-feedback">
<div *ngIf="f.childrenNumber.errors.required">Le nombre d'enfant d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Adresse</label>
<input class="form-control" formControlName="address" [ngClass]="{ 'is-invalid': submitted && f.address.errors }">
<div *ngIf="submitted && f.address.errors" class="invalid-feedback">
<div *ngIf="f.address.errors.required">L'adresse d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Téléphone</label>
<input class="form-control" formControlName="telephone" [ngClass]="{ 'is-invalid': submitted && f.telephone.errors }">
<div *ngIf="submitted && f.telephone.errors" class="invalid-feedback">
<div *ngIf="f.telephone.errors.required">Le numéro de téléphone d'un collaborateur est obligatoire</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Mail personnel</label>
<input type="email" class="form-control" formControlName="personalMail" [ngClass]="{ 'is-invalid': submitted && f.personalMail.errors }" placeholder="prenom.nom@example.com">
<div *ngIf="submitted && f.personalMail.errors" class="invalid-feedback">
<div *ngIf="f.personalMail.errors.required">Le mail personnel d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Mail Apside</label>
<input type="email" class="form-control" formControlName="apsideMail" [ngClass]="{ 'is-invalid': submitted && f.apsideMail.errors }" placeholder="prenom.nom@apside-groupe.com">
<div *ngIf="submitted && f.apsideMail.errors" class="invalid-feedback">
<div *ngIf="f.apsideMail.errors.required">Le mail Apside d'un collaborateur est obligatoire</div>
</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4 col-lg-3">
<label class="form-label">Date de départ</label>
<input type="date" class="form-control" formControlName="resignationDate" (change)="onResignationDateChange($event)" [ngClass]="{ 'is-invalid': submitted && f.resignationDate.errors }">
<div *ngIf="submitted && f.resignationDate.errors" class="invalid-feedback">
<div *ngIf="f.resignationDate.errors.required">La date de départ d'un collaborateur est obligatoire</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="form-group col-12 col-md-6">
<label class="form-label">Référent</label>
<select class="form-select" formControlName="referrerId" [ngClass]="{ 'is-invalid': submitted && f.referrerId.errors }">
<option value="" disabled selected>Choisissez un référent pour le collaborateur</option>
<option *ngFor="let collaborateur of collaborateurs" [ngValue]="collaborateur.id">{{collaborateur.name}} {{collaborateur.firstName}}</option>
</select>
<div *ngIf="submitted && f.referrerId.errors" class="invalid-feedback">
<div *ngIf="f.referrerId.errors.required">Vous devez préciser le référent du collaborateur</div>
</div>
</div>
<div class="form-group col-12 col-md-6">
<label class="form-label">Business Unit</label>
<select class="form-select" formControlName="businessUnitId" [ngClass]="{ 'is-invalid': submitted && f.businessUnitId.errors }">
<option value="" disabled selected>Choisissez une Business Unit pour le collaborateur</option>
<option *ngFor="let businessUnit of businessUnits" [ngValue]="businessUnit.id">{{businessUnit.name}} </option>
</select>
<div *ngIf="submitted && f.businessUnitId.errors" class="invalid-feedback">
<div *ngIf="f.businessUnitId.errors.required">Vous devez préciser la Business Unit du collaborateur</div>
</div>
</div>
</div>
<div>
<button type="submit">Ajouter le collaborateur</button>
<button type="reset" (click)="onReset()">Effacer</button>
</div>
</form>
<button class="add-button" (click)="add(collaborateur)">
Ajouter un Collaborateur
</button>
<h2 class = mb-4>Collaborateurs</h2>

@ -2,6 +2,9 @@ import { Component, OnInit } from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {CollaborateurService} from "../../services/collaborateur.service";
import {Collaborateur} from "../../interfaces/collaborateur";
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
import {Businessunit} from "../../interfaces/businessunit";
import {BusinessunitService} from "../../services/businessunit.service";
@Component({
selector: 'app-collaborateur',
@ -10,15 +13,47 @@ import {Collaborateur} from "../../interfaces/collaborateur";
})
export class CollaborateurComponent implements OnInit {
collaborateurs : Collaborateur[] = [];
collaborateur = {} as Collaborateur ;
collaborateur = {} as Collaborateur;
businessUnits : Businessunit[] = [];
businessUnit = {} as Businessunit ;
rDate : String = "";
bDate : String = "";
registerForm!: FormGroup;
submitted = false;
constructor(
private http : HttpClient,
private businessunitService: BusinessunitService,
private collaborateurService: CollaborateurService,
private formBuilder: FormBuilder
) { }
ngOnInit(): void {
this.getCollaborateurs();
this.getBusinessunits();
this.registerForm = this.formBuilder.group({
name: ['', Validators.required],
firstName: ['', Validators.required],
birthDate: ['', Validators.required],
gender: ['', Validators.required],
status: ['', Validators.required],
childrenNumber: ['', Validators.required],
address: ['', Validators.required],
telephone: ['', Validators.required],
personalMail: ['', Validators.required],
apsideMail: ['', Validators.required],
resignationDate: ['', Validators.required],
referrerId: ['', Validators.required],
businessUnitId: ['', Validators.required],
});
if (this.collaborateur.resignationDate) {
this.rDate = new Date(this.collaborateur.resignationDate).toISOString().split('T')[0];
}
if (this.collaborateur.birthDate) {
this.bDate = new Date(this.collaborateur.birthDate).toISOString().split('T')[0];
}
}
getCollaborateurs():void {
@ -26,6 +61,11 @@ export class CollaborateurComponent implements OnInit {
.subscribe(collaborateurs => this.collaborateurs = collaborateurs);
}
getBusinessunits():void {
this.businessunitService.getBusinessunits()
.subscribe(businessunits => this.businessUnits = businessunits);
}
add(collaborateur: Collaborateur): void {
this.collaborateurService.addCollaborateur(collaborateur)
.subscribe(collaborateur => {
@ -33,4 +73,29 @@ export class CollaborateurComponent implements OnInit {
});
}
onSubmit() {
this.submitted = true;
if (this.registerForm.invalid) {
return;
}
this.collaborateur = this.registerForm.value
this.add(this.collaborateur)
}
get f() { return this.registerForm.controls; }
onReset() {
this.submitted = false;
this.registerForm.reset();
}
onResignationDateChange($event: any):void {
this.collaborateur.resignationDate = new Date($event.target.value);
}
onBirthDateChange($event: any):void {
this.collaborateur.birthDate = new Date($event.target.value);
}
}

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from "@angular/common/http";
import {Observable} from "rxjs";
import {Agence} from "../interfaces/agence";
import {agencesUrl} from "../../ressources/routes/routesPreprod";
import {agencesUrl} from "../../ressources/routes/routes";
@Injectable({
providedIn: 'root'

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from "@angular/common/http";
import {Observable} from "rxjs";
import {Businessunit} from "../interfaces/businessunit";
import {businessunitsUrl} from "../../ressources/routes/routesPreprod";
import {businessunitsUrl} from "../../ressources/routes/routes";
@Injectable({
providedIn: 'root'

@ -2,7 +2,7 @@ import {Collaborateur} from "../interfaces/collaborateur";
import {Injectable} from '@angular/core';
import {Observable} from "rxjs";
import {HttpClient, HttpHeaders} from "@angular/common/http";
import {collaborateursUrl} from "../../ressources/routes/routesPreprod";
import {collaborateursUrl} from "../../ressources/routes/routes";
@Injectable({providedIn: 'root'})

Loading…
Cancel
Save