agent creation

This commit is contained in:
OnlyPapy98
2026-01-05 14:14:41 +01:00
parent afa5fab55d
commit 95095016d2
11 changed files with 126 additions and 324 deletions

View File

@@ -25,6 +25,7 @@ import { TpeDevice, TpeStatus } from 'src/app/core/interfaces/tpe';
import { AgentFullForm } from '@shared/forms/agent-full-form/agent-full-form';
import { forkJoin, of } from 'rxjs';
import { switchMap, catchError } from 'rxjs/operators';
import { toast } from 'ngx-sonner';
@Component({
standalone: true,
@@ -50,7 +51,7 @@ export class AgentsPage {
total = signal(0);
loading = signal(false);
page = signal(1);
page = signal(0);
size = signal(10);
search = signal('');
sort = signal<SortState>({ key: 'code', dir: 'asc' });
@@ -90,7 +91,7 @@ export class AgentsPage {
cols: TableColumn<Agent>[] = [
{ key: 'code', label: 'Code', sortable: true, defaultVisible: true },
{ key: 'nomPrenom', label: 'Nom complet', sortable: true, defaultVisible: true, cell: (a) => `${a.nom} ${a.prenom}` },
{ key: 'profile', label: 'Profil', sortable: true, defaultVisible: true },
{ key: 'profil', label: 'Profil', sortable: true, defaultVisible: true },
{ key: 'statut', label: 'Statut', sortable: true, defaultVisible: true, cell: (a) => this.renderStatutBadge(a.statut) },
{ key: 'phone', label: 'Téléphone', sortable: true, defaultVisible: true },
{ key: 'zone', label: 'Zone', sortable: true },
@@ -260,6 +261,7 @@ export class AgentsPage {
onFormSave(payload: Partial<Agent>) {
const current = this.editingItem();
const isCreating = !current?.id; // Mode création (compact)
const familyMembersData = this.formComp?.getFamilyMembersData() || [];
// Save agent first
@@ -280,7 +282,12 @@ export class AgentsPage {
throw new Error("Impossible d'obtenir l'ID de l'agent sauvegardé");
}
// Get existing family members for this agent
// In creation mode (compact), skip family members management
if (isCreating || familyMembersData.length === 0) {
return of([]);
}
// Get existing family members for this agent (only for updates)
return this.familyMemberService.getByAgentId(savedAgentId).pipe(
switchMap((existingMembers) => {
const existingIds = new Set(existingMembers.map((m) => m.id));
@@ -354,12 +361,13 @@ export class AgentsPage {
)
.subscribe({
next: () => {
toast.success('Agent sauvegardé avec succès');
// Close modal first
this.closeModal();
// Reset form after successful save
this.formComp?.resetForm();
// Clear editing item
this.editingItem.set(null);
// Close modal
this.closeModal();
// Refresh data
this.fetch({
page: this.page(),