From a723a02a56d7cbf0644a827380df4fdc4b4895fb Mon Sep 17 00:00:00 2001
From: AlineRinquin <90188226+AlineRinquin@users.noreply.github.com>
Date: Sun, 23 Jan 2022 15:08:17 +0100
Subject: [PATCH] Fonctionn modifier contact ok
---
src/app/app-routing.module.ts | 2 +-
.../fiche-contact.component.html | 2 +-
src/app/models/contact.ts | 2 +
.../page-ajout-contact.component.html | 2 +-
.../page-ajout-contact.component.scss | 5 +++
.../page-ajout-contact.component.ts | 4 +-
.../page-modifier-contact.component.html | 15 +++----
.../page-modifier-contact.component.scss | 5 +++
.../page-modifier-contact.component.ts | 38 +++++++++++-------
.../page-not-found.component.html | 4 +-
.../page-repertoire.component.ts | 25 +++++++++++-
src/app/services/repertoire.service.ts | 8 ++--
src/assets/images/adresse.jpg | Bin 11538 -> 0 bytes
13 files changed, 80 insertions(+), 32 deletions(-)
delete mode 100644 src/assets/images/adresse.jpg
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 4cbae19..4587264 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -20,6 +20,7 @@ import { PageUpdateMemberComponent } from './pages/page-update-member/page-updat
const routes: Routes = [
{ path: '', redirectTo: 'accueil', pathMatch: 'full' },
+ { path: 'modifier-contact/:id', component: PageModifierContactComponent },
{ path: 'compte', component: PageAccountComponent },
{ path: 'accueil', component: PageAccueilComponent },
{ path: 'ajout-membre', component: PageAddMemberComponent },
@@ -35,7 +36,6 @@ const routes: Routes = [
{ path: 'modifier-membre', component: PageUpdateMemberComponent },
{ path: 'ajouter-contact', component: PageAjoutContactComponent },
{ path: 'creation-team', component: PageCreationTeamComponent },
- { path: 'modifier-contact', component: PageModifierContactComponent },
{ path: '**', component: PageNotFoundComponent },
];
diff --git a/src/app/components/fiche-contact/fiche-contact.component.html b/src/app/components/fiche-contact/fiche-contact.component.html
index 42ae5da..1d4eb48 100644
--- a/src/app/components/fiche-contact/fiche-contact.component.html
+++ b/src/app/components/fiche-contact/fiche-contact.component.html
@@ -1,7 +1,7 @@
-
diff --git a/src/app/models/contact.ts b/src/app/models/contact.ts
index 2c632a4..539aab3 100644
--- a/src/app/models/contact.ts
+++ b/src/app/models/contact.ts
@@ -1,8 +1,10 @@
export interface Contact {
+ id: string;
nom: string;
prenom: string;
telephone: string;
email: string;
adresse: string;
dateNaissance: Date;
+ team: any;
}
diff --git a/src/app/pages/page-ajout-contact/page-ajout-contact.component.html b/src/app/pages/page-ajout-contact/page-ajout-contact.component.html
index 30c5a21..981a9c2 100644
--- a/src/app/pages/page-ajout-contact/page-ajout-contact.component.html
+++ b/src/app/pages/page-ajout-contact/page-ajout-contact.component.html
@@ -73,7 +73,7 @@
-
Valider
diff --git a/src/app/pages/page-ajout-contact/page-ajout-contact.component.scss b/src/app/pages/page-ajout-contact/page-ajout-contact.component.scss
index ca7893e..0f5ceb6 100644
--- a/src/app/pages/page-ajout-contact/page-ajout-contact.component.scss
+++ b/src/app/pages/page-ajout-contact/page-ajout-contact.component.scss
@@ -24,3 +24,8 @@
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
+
+.btn-secondary {
+ color: #fff;
+ background-color: #5a1e63 !important;
+}
diff --git a/src/app/pages/page-ajout-contact/page-ajout-contact.component.ts b/src/app/pages/page-ajout-contact/page-ajout-contact.component.ts
index 2bb57b1..d99669d 100644
--- a/src/app/pages/page-ajout-contact/page-ajout-contact.component.ts
+++ b/src/app/pages/page-ajout-contact/page-ajout-contact.component.ts
@@ -26,7 +26,7 @@ export class PageAjoutContactComponent implements OnInit {
}
ngOnInit(): void {
- // *********************************pensser a changer group car déprécié********************************
+ // *********************************pensser à changer group car déprécié********************************
this.ajoutContactForm = this.fb.group({
lastNameFc: new FormControl('', [Validators.required]),
firstNameFc: new FormControl('', [Validators.required]),
@@ -52,12 +52,14 @@ export class PageAjoutContactComponent implements OnInit {
const adresseValue = this.ajoutContactForm.value['adresseFc'];
const contact: Contact = {
+ id: '',
nom: lastNameValue,
prenom: firstNameValue,
telephone: telephoneValue,
email: emailValue,
dateNaissance: dateNaissanceValue,
adresse: adresseValue,
+ team: { id: '1' }, // changer l'id quand la personne est logé => recuperer l'id de la team du membre
};
if (contact.nom !== '') {
diff --git a/src/app/pages/page-modifier-contact/page-modifier-contact.component.html b/src/app/pages/page-modifier-contact/page-modifier-contact.component.html
index c5b4b08..5ac961b 100644
--- a/src/app/pages/page-modifier-contact/page-modifier-contact.component.html
+++ b/src/app/pages/page-modifier-contact/page-modifier-contact.component.html
@@ -2,6 +2,7 @@
+
@@ -58,7 +59,7 @@
id="floatingInputdateNaissance"
placeholder=""
name="dateNaissance"
- formControlName="dateNaissanceFc">
+ formControlName="dateNaissanceFc" value= "{{ listContactInfo.dateNaissance }}">
@@ -69,11 +70,11 @@
id="floatingInputAdresse"
placeholder=""
name="adresse"
- formControlName="adresseFc">
+ formControlName="adresseFc" value= "{{ listContactInfo.adresse }}">
- Valider
diff --git a/src/app/pages/page-modifier-contact/page-modifier-contact.component.scss b/src/app/pages/page-modifier-contact/page-modifier-contact.component.scss
index b3720e0..6709ac8 100644
--- a/src/app/pages/page-modifier-contact/page-modifier-contact.component.scss
+++ b/src/app/pages/page-modifier-contact/page-modifier-contact.component.scss
@@ -24,3 +24,8 @@
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
+
+.btn-secondary {
+ color: #fff;
+ background-color: #5a1e63 !important;
+}
diff --git a/src/app/pages/page-modifier-contact/page-modifier-contact.component.ts b/src/app/pages/page-modifier-contact/page-modifier-contact.component.ts
index 7b1d5e1..0cfa9d9 100644
--- a/src/app/pages/page-modifier-contact/page-modifier-contact.component.ts
+++ b/src/app/pages/page-modifier-contact/page-modifier-contact.component.ts
@@ -5,7 +5,7 @@ import {
FormGroup,
Validators,
} from '@angular/forms';
-import { Router } from '@angular/router';
+import { ActivatedRoute, Router } from '@angular/router';
import { Contact } from '../../models/contact';
import { RepertoireService } from '../../services/repertoire.service';
@@ -17,22 +17,32 @@ import { RepertoireService } from '../../services/repertoire.service';
export class PageModifierContactComponent implements OnInit {
public modifContactForm: FormGroup;
public contactInfo: FormGroup;
+ public listContactInfo: any;
+ public personneid: any;
constructor(
private repertoireService: RepertoireService,
private router: Router,
- private fb: FormBuilder
+ private fb: FormBuilder,
+ private route: ActivatedRoute
) {
this.modifContactForm = new FormGroup({});
this.contactInfo = this.initForm();
-
- // this.repertoireService.getContactById()?.subscribe((contact: Contact) => {
- // this.contactInfo = this.initForm(contact);
- // });
+ this.listContactInfo = '';
}
ngOnInit(): void {
- // *********************************pensser a changer group car déprécié********************************
+ this.personneid = this.route.snapshot.paramMap.get('id'); // récupère l'id du contact à modifier
+ console.log(this.personneid);
+
+ this.repertoireService
+ .getContactById(this.personneid)
+ .subscribe((listContactInfo: any) => {
+ console.log(listContactInfo);
+ this.listContactInfo = listContactInfo;
+ });
+
+ // *********************************pensser à changer group car déprécié********************************
this.modifContactForm = this.fb.group({
lastNameFc: new FormControl('', [Validators.required]),
firstNameFc: new FormControl('', [Validators.required]),
@@ -47,6 +57,7 @@ export class PageModifierContactComponent implements OnInit {
});
}
+ //Méthode qui initialise les champs du formulaire avec les infos de la BDD
private initForm(contact?: Contact): FormGroup {
return this.fb.group({
firstName: [contact ? contact.nom : ''],
@@ -58,6 +69,7 @@ export class PageModifierContactComponent implements OnInit {
});
}
+ //Méthode qui envoie les champs modifiés pour mise à jour
public onSubmit(): void {
console.log('value : ', this.modifContactForm.value);
console.log('form : ', this.modifContactForm);
@@ -69,20 +81,18 @@ export class PageModifierContactComponent implements OnInit {
const adresseValue = this.modifContactForm.value['adresseFc'];
const contact: Contact = {
+ id: this.personneid,
nom: lastNameValue,
prenom: firstNameValue,
telephone: telephoneValue,
email: emailValue,
dateNaissance: dateNaissanceValue,
adresse: adresseValue,
+ team: { id: this.listContactInfo.team.id },
};
- if (contact.nom !== '') {
- this.repertoireService.updateContact(contact).subscribe((resp) => {
- this.router.navigate(['repertoire/']);
- });
- } else {
- // affichage erreur
- }
+ this.repertoireService.updateContact(contact).subscribe((resp) => {
+ this.router.navigate(['repertoire/']);
+ });
}
}
diff --git a/src/app/pages/page-not-found/page-not-found.component.html b/src/app/pages/page-not-found/page-not-found.component.html
index be7d620..575a83b 100644
--- a/src/app/pages/page-not-found/page-not-found.component.html
+++ b/src/app/pages/page-not-found/page-not-found.component.html
@@ -1,11 +1,11 @@
diff --git a/src/app/pages/page-repertoire/page-repertoire.component.ts b/src/app/pages/page-repertoire/page-repertoire.component.ts
index c4fff1b..b7a1859 100644
--- a/src/app/pages/page-repertoire/page-repertoire.component.ts
+++ b/src/app/pages/page-repertoire/page-repertoire.component.ts
@@ -1,4 +1,6 @@
import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { Contact } from 'src/app/models/contact';
import { RepertoireService } from 'src/app/services/repertoire.service';
@Component({
@@ -9,12 +11,19 @@ import { RepertoireService } from 'src/app/services/repertoire.service';
export class PageRepertoireComponent implements OnInit {
public listContact: any[];
public listFull: any[];
+ public listContactInfo: any;
+ public personneid: any;
keyword: any;
openDetails: any;
- constructor(private repertoireService: RepertoireService) {
+ constructor(
+ private repertoireService: RepertoireService,
+ private router: Router,
+ private route: ActivatedRoute
+ ) {
this.listContact = [];
this.listFull = [];
+ this.listContactInfo = '';
}
ngOnInit(): void {
@@ -23,6 +32,16 @@ export class PageRepertoireComponent implements OnInit {
this.listContact = listContact;
this.listFull = listContact;
});
+
+ this.personneid = this.route.snapshot.paramMap.get('id');
+ console.log(this.personneid);
+
+ this.repertoireService
+ .getContactById(this.personneid)
+ .subscribe((listContactInfo: any) => {
+ console.log(listContactInfo);
+ this.listContactInfo = listContactInfo;
+ });
}
// Méthode pour récuper ce qui est saisi dans l'input
@@ -47,4 +66,8 @@ export class PageRepertoireComponent implements OnInit {
console.log(personne);
this.openDetails = personne;
}
+
+ // this.repertoireService.deleteContact(contact).subscribe((resp) => {
+ // this.router.navigate(['repertoire/']);
+ // });
}
diff --git a/src/app/services/repertoire.service.ts b/src/app/services/repertoire.service.ts
index 1b1713a..a452854 100644
--- a/src/app/services/repertoire.service.ts
+++ b/src/app/services/repertoire.service.ts
@@ -21,8 +21,8 @@ export class RepertoireService {
return this.http.get(`${this.apiUrl}/contacts/team/1`);
}
- getContactById(contact: Contact): Observable {
- return this.http.get(`${this.apiUrl}/contacts/{id}`);
+ getContactById(id: any): Observable {
+ return this.http.get(`${this.apiUrl}/contacts/` + id);
}
addContact(contact: Contact): Observable {
@@ -31,8 +31,8 @@ export class RepertoireService {
return this.http.post(`${this.apiUrl}/contacts/add`, contact);
}
- deleteContact() {
- return this.http.delete(`${this.apiUrl}/contacts/delete`);
+ deleteContact(contact: Contact): Observable {
+ return this.http.delete(`${this.apiUrl}/contacts/delete/1`);
}
updateContact(contact: Contact): Observable {
diff --git a/src/assets/images/adresse.jpg b/src/assets/images/adresse.jpg
deleted file mode 100644
index deca31c859cd48674a381a2abdce3d75cf1c92e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11538
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
Lg6I#7=hgoMNc0kQ