From ef1c7eba8337d2ed60aa00c612676210439a4142 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Sun, 30 Nov 2025 13:10:12 +0100 Subject: [PATCH] added getall and delete functions for deliverer page --- .../deliverer-form/deliverer-form.html | 2 +- .../deliverer-form/deliverer-form.ts | 11 - .../deliverer-table/deliverer-table.html | 15 +- .../deliverer-table/deliverer-table.ts | 342 ++++-------------- .../product-table/product-table.html | 1 - 5 files changed, 79 insertions(+), 292 deletions(-) diff --git a/src/app/components/deliverer-form/deliverer-form.html b/src/app/components/deliverer-form/deliverer-form.html index 625096d..51b292b 100644 --- a/src/app/components/deliverer-form/deliverer-form.html +++ b/src/app/components/deliverer-form/deliverer-form.html @@ -1,4 +1,4 @@ -
+ Transporteur diff --git a/src/app/components/deliverer-form/deliverer-form.ts b/src/app/components/deliverer-form/deliverer-form.ts index 0125282..4c59ca6 100644 --- a/src/app/components/deliverer-form/deliverer-form.ts +++ b/src/app/components/deliverer-form/deliverer-form.ts @@ -24,15 +24,4 @@ export class DelivererForm { delivererForm: FormGroup = new FormGroup({ transporter: new FormControl(null, [Validators.required]) }) - - submitForm() { - // Pour annuler si le formulaire est invalide - if (this.delivererForm.invalid) return; - - // Pour obtenir la valeur du formulaire - console.log(this.delivererForm.getRawValue()) - - // Pour vider le formulaire - this.delivererForm.reset() - } } diff --git a/src/app/components/deliverer-table/deliverer-table.html b/src/app/components/deliverer-table/deliverer-table.html index b7d3b68..7e8b132 100644 --- a/src/app/components/deliverer-table/deliverer-table.html +++ b/src/app/components/deliverer-table/deliverer-table.html @@ -1,4 +1,6 @@ - + Transporteur @@ -7,13 +9,14 @@ - @for (data of basicTable.data; track data) { + @for (deliverer of deliverers(); track deliverer.id) { - {{data.transporter}} + {{deliverer.transporter}}
- + Numéro de livraison @@ -23,7 +26,7 @@ - @for (deliveryInfo of data.deliveryNote; track deliveryInfo) { + @for (deliveryInfo of deliverer.deliveryNotes; track deliveryInfo.id) { {{deliveryInfo.trackingNumber}} {{deliveryInfo.expeditionDate | date: 'dd/MM/yyyy'}} @@ -43,7 +46,7 @@
- +
diff --git a/src/app/components/deliverer-table/deliverer-table.ts b/src/app/components/deliverer-table/deliverer-table.ts index 9cb0b7d..be28e88 100644 --- a/src/app/components/deliverer-table/deliverer-table.ts +++ b/src/app/components/deliverer-table/deliverer-table.ts @@ -1,6 +1,4 @@ -import { Component } from '@angular/core'; -import {ProductTable} from "../product-table/product-table"; -import {DelivererInfo} from "../../interfaces/deliverer.interface"; +import {Component, inject, OnInit, signal} from '@angular/core'; import {ModalNav} from "../modal-nav/modal-nav"; import {NzDividerComponent} from "ng-zorro-antd/divider"; import {NzIconDirective} from "ng-zorro-antd/icon"; @@ -8,6 +6,9 @@ import {NzTableComponent} from "ng-zorro-antd/table"; import {ModalButton} from "../modal-button/modal-button"; import {DatePipe} from "@angular/common"; import {DelivererForm} from "../deliverer-form/deliverer-form"; +import {DeliverersService, GetDelivererDto} from "../../services/api"; +import {NzNotificationService} from "ng-zorro-antd/notification"; +import {firstValueFrom} from "rxjs"; @Component({ selector: 'app-deliverer-table', @@ -24,276 +25,71 @@ import {DelivererForm} from "../deliverer-form/deliverer-form"; styleUrl: './deliverer-table.css', }) -export class DelivererTable { - listOfDeliverers: DelivererInfo[] = [ - { - transporter: 'Transporteur 1', - deliveryNote: [ - { - trackingNumber: 'TRK-1000', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-20'), - expeditionDate: new Date('2025-11-15'), - realDeliveryDate: new Date('2025-11-19'), - productDelivery: [ - { product: ProductTable.listOfProducts[0], quantity: 5 }, - { product: ProductTable.listOfProducts[1], quantity: 3 }, - { product: ProductTable.listOfProducts[2], quantity: 7 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1000', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-20'), - expeditionDate: new Date('2025-11-15'), - realDeliveryDate: new Date('2025-11-19'), - productDelivery: [ - { product: ProductTable.listOfProducts[0], quantity: 5 }, - { product: ProductTable.listOfProducts[1], quantity: 3 }, - { product: ProductTable.listOfProducts[2], quantity: 7 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1000', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-20'), - expeditionDate: new Date('2025-11-15'), - realDeliveryDate: new Date('2025-11-19'), - productDelivery: [ - { product: ProductTable.listOfProducts[0], quantity: 5 }, - { product: ProductTable.listOfProducts[1], quantity: 3 }, - { product: ProductTable.listOfProducts[2], quantity: 7 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1000', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-20'), - expeditionDate: new Date('2025-11-15'), - realDeliveryDate: new Date('2025-11-19'), - productDelivery: [ - { product: ProductTable.listOfProducts[0], quantity: 5 }, - { product: ProductTable.listOfProducts[1], quantity: 3 }, - { product: ProductTable.listOfProducts[2], quantity: 7 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1001', - deliverer: 'Transporteur 1', - estimateDeliveryDate: new Date('2025-11-22'), - expeditionDate: new Date('2025-11-16'), - realDeliveryDate: new Date('2025-11-21'), - productDelivery: [ - { product: ProductTable.listOfProducts[3], quantity: 2 }, - { product: ProductTable.listOfProducts[4], quantity: 4 }, - { product: ProductTable.listOfProducts[5], quantity: 6 }, - ], - }, - ] - }, - { - transporter: 'Transporteur 2', - deliveryNote: [ - { - trackingNumber: 'TRK-1002', - deliverer: 'Transporteur 2', - estimateDeliveryDate: new Date('2025-11-23'), - expeditionDate: new Date('2025-11-17'), - realDeliveryDate: new Date('2025-11-22'), - productDelivery: [ - { product: ProductTable.listOfProducts[6], quantity: 3 }, - { product: ProductTable.listOfProducts[7], quantity: 8 }, - { product: ProductTable.listOfProducts[8], quantity: 5 }, - ], - }, - { - trackingNumber: 'TRK-1003', - deliverer: 'Transporteur 2', - estimateDeliveryDate: new Date('2025-11-24'), - expeditionDate: new Date('2025-11-18'), - realDeliveryDate: new Date('2025-11-23'), - productDelivery: [ - { product: ProductTable.listOfProducts[9], quantity: 4 }, - { product: ProductTable.listOfProducts[10], quantity: 6 }, - { product: ProductTable.listOfProducts[11], quantity: 7 }, - ], - } - ] - }, - { - transporter: 'Transporteur 3', - deliveryNote: [ - { - trackingNumber: 'TRK-1004', - deliverer: 'Transporteur 3', - estimateDeliveryDate: new Date('2025-11-25'), - expeditionDate: new Date('2025-11-19'), - realDeliveryDate: new Date('2025-11-24'), - productDelivery: [ - { product: ProductTable.listOfProducts[12], quantity: 2 }, - { product: ProductTable.listOfProducts[13], quantity: 5 }, - { product: ProductTable.listOfProducts[14], quantity: 6 }, - ], - }, - { - trackingNumber: 'TRK-1005', - deliverer: 'Transporteur 3', - estimateDeliveryDate: new Date('2025-11-26'), - expeditionDate: new Date('2025-11-20'), - realDeliveryDate: new Date('2025-11-25'), - productDelivery: [ - { product: ProductTable.listOfProducts[15], quantity: 3 }, - { product: ProductTable.listOfProducts[16], quantity: 7 }, - { product: ProductTable.listOfProducts[17], quantity: 4 }, - ], - } - ] - }, - { - transporter: 'Transporteur 4', - deliveryNote: [ - { - trackingNumber: 'TRK-1006', - deliverer: 'Transporteur 4', - estimateDeliveryDate: new Date('2025-11-27'), - expeditionDate: new Date('2025-11-21'), - realDeliveryDate: new Date('2025-11-26'), - productDelivery: [ - { product: ProductTable.listOfProducts[18], quantity: 5 }, - { product: ProductTable.listOfProducts[19], quantity: 6 }, - { product: ProductTable.listOfProducts[20], quantity: 7 }, - ], - }, - { - trackingNumber: 'TRK-1007', - deliverer: 'Transporteur 4', - estimateDeliveryDate: new Date('2025-11-28'), - expeditionDate: new Date('2025-11-22'), - realDeliveryDate: new Date('2025-11-27'), - productDelivery: [ - { product: ProductTable.listOfProducts[21], quantity: 3 }, - { product: ProductTable.listOfProducts[22], quantity: 5 }, - { product: ProductTable.listOfProducts[23], quantity: 4 }, - ], - } - ] - }, - { - transporter: 'Transporteur 5', - deliveryNote: [ - { - trackingNumber: 'TRK-1008', - deliverer: 'Transporteur 5', - estimateDeliveryDate: new Date('2025-11-29'), - expeditionDate: new Date('2025-11-23'), - realDeliveryDate: new Date('2025-11-28'), - productDelivery: [ - { product: ProductTable.listOfProducts[24], quantity: 6 }, - { product: ProductTable.listOfProducts[25], quantity: 7 }, - { product: ProductTable.listOfProducts[26], quantity: 3 }, - ], - }, - { - trackingNumber: 'TRK-1009', - deliverer: 'Transporteur 5', - estimateDeliveryDate: new Date('2025-11-30'), - expeditionDate: new Date('2025-11-24'), - realDeliveryDate: new Date('2025-11-29'), - productDelivery: [ - { product: ProductTable.listOfProducts[27], quantity: 5 }, - { product: ProductTable.listOfProducts[28], quantity: 4 }, - { product: ProductTable.listOfProducts[29], quantity: 6 }, - ], - } - ] - }, - ]; +export class DelivererTable implements OnInit { + private deliverersService = inject(DeliverersService); + private notificationService = inject(NzNotificationService) + deliverers = signal([]); + deliverersLoading = signal(false); - delete(){ - return + async ngOnInit() { + await this.fetchDeliverers(); + } + + async fetchDeliverers() { + this.deliverersLoading.set(true) + + try { + const deliverers = await firstValueFrom(this.deliverersService.getAllDelivererEndpoint()) + this.deliverers.set(deliverers); + } catch (e) { + this.notificationService.error( + 'Erreur', + 'Erreur de communication avec l\'API' + ) + } + this.deliverersLoading.set(false) + } + + async delete(deliverer:number) { + try { + await firstValueFrom(this.deliverersService.deleteDelivererEndpoint(deliverer)) + this.notificationService.success( + 'Success', + 'Suppression effectuée' + ) + } catch (e) { + this.notificationService.error( + 'Erreur', + 'Impossible de supprimer la ligne' + ) + } + await this.fetchDeliverers(); + } + + async edit(id: number, updateDelivererComponent: DelivererForm) { + if (updateDelivererComponent.delivererForm.invalid) { + this.notificationService.error( + 'Erreur', + 'Erreur d\'écriture dans le formulaire' + ) + return; + } + + try { + + const deliverers = updateDelivererComponent.delivererForm.getRawValue(); + await firstValueFrom(this.deliverersService.updateDelivererEndpoint(id, deliverers)) + + this.notificationService.success( + 'Success', + 'Transporteur modifié' + ) + } catch (e) { + console.error(e); + this.notificationService.error( + 'Erreur', + 'Erreur lors de la modification' + ) + } } } diff --git a/src/app/components/product-table/product-table.html b/src/app/components/product-table/product-table.html index 78cb7a1..e69de29 100644 --- a/src/app/components/product-table/product-table.html +++ b/src/app/components/product-table/product-table.html @@ -1 +0,0 @@ -

product-table works!