All files / app/utilisateur-formulaire utilisateur-formulaire.component.ts

79.16% Statements 19/24
75% Branches 3/4
62.5% Functions 5/8
79.16% Lines 19/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89                                  1x   5x     5x 5x 5x 5x   5x                 6x 6x 2x 2x     2x                     1x 1x 1x             1x                         1x   1x 1x                    
import { Component, OnInit } from '@angular/core';
import {
  FormBuilder,
  FormGroup,
  Validators,
  ReactiveFormsModule,
} from '@angular/forms';
import { CommonModule } from '@angular/common';
import { UtilisateurService } from '../utilisateur.service';
import { ActivatedRoute, Router } from '@angular/router';
 
@Component({
  selector: 'app-utilisateur-formulaire',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule],
  templateUrl: './utilisateur-formulaire.component.html',
})
export class UtilisateurFormulaireComponent implements OnInit {
  utilisateurForm: FormGroup;
  utilisateurId: number | null = null;
 
  constructor(
    private fb: FormBuilder,
    private utilisateurService: UtilisateurService,
    private route: ActivatedRoute,
    private router: Router
  ) {
    this.utilisateurForm = this.fb.group({
      nom: ['', Validators.required],
      email: ['', [Validators.required, Validators.email]],
      motDePasse: ['', Validators.required],
      roleId: ['', Validators.required],
    });
  }
 
  ngOnInit(): void {
    const idParam = this.route.snapshot.paramMap.get('id');
    if (idParam) {
      this.utilisateurId = +idParam;
      this.utilisateurService
        .getUtilisateur(this.utilisateurId)
        .subscribe((data) => {
          this.utilisateurForm.patchValue({
            nom: data.nom,
            email: data.email,
            motDePasse: data.motDePasse,
            roleId: data.role?.id,
          });
        });
    }
  }
 
  onSubmit(): void {
    if (this.utilisateurForm.valid) {
      const formValue = this.utilisateurForm.value;
      const utilisateurData = {
        nom: formValue.nom,
        email: formValue.email,
        motDePasse: formValue.motDePasse,
        role: { id: Number(formValue.roleId) },
      };
 
      Iif (this.utilisateurId) {
        this.utilisateurService
          .updateUtilisateur(this.utilisateurId, utilisateurData)
          .subscribe({
            next: () => {
              alert('Utilisateur mis à jour avec succès !');
              this.router.navigate(['/utilisateurs']);
            },
            error: () => {
              alert('Une erreur est survenue lors de la mise à jour.');
            },
          });
      } else {
        this.utilisateurService.addUtilisateur(utilisateurData).subscribe({
          next: () => {
            alert('Utilisateur ajouté avec succès !');
            this.router.navigate(['/utilisateurs']);
          },
          error: () => {
            alert("Une erreur est survenue lors de l'ajout.");
          },
        });
      }
    }
  }
}