8 Commits

Author SHA1 Message Date
carteronm 7ddb41db4d Merge branch 'develop'
# Conflicts:
#	package-lock.json
2026-06-11 11:10:28 +02:00
carteronm e1a71ce248 ajout du niveau d'experience 2026-06-11 11:06:59 +02:00
carteronm b0555d944b Type de customer ajouté 2 2026-06-10 21:41:44 +02:00
carteronm a1e7330463 Type de customer ajouté 2026-06-10 21:40:37 +02:00
carteronm d498a521a4 Merge remote-tracking branch 'origin/develop' into develop 2026-06-09 13:31:17 +02:00
carteronm 5faef46663 Fin opportunity 2026-06-09 13:31:05 +02:00
carteronm 672c38261a Actualiser README.md 2025-12-11 18:30:10 +01:00
carteronm 15f4dbbd46 package.json 2025-12-04 14:45:43 +01:00
24 changed files with 474 additions and 1981 deletions
+11 -54
View File
@@ -1,59 +1,16 @@
# ApiLibraryFrontend # Projet 4
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.9. Voici le projet 4
## Development server ## Membres
To start a local development server, run: Carteron Mathieu
Lallois Ily
Barbier Gavin
```bash ## Objectif
ng serve
```
Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. Nous sommes responsable du développement du module dédié à la gestion des relations
clients et prestataires pour Pyro-Fêtes. Ce module va devoir permettre de centraliser les
## Code scaffolding informations sur les clients, les prestataires les artificiers et les différents contacts, de suivre
les interactions, ainsi que garantir la conformité réglementaire.
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
```bash
ng generate component component-name
```
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
```bash
ng generate --help
```
## Building
To build the project run:
```bash
ng build
```
This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.
## Running unit tests
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
```bash
ng test
```
## Running end-to-end tests
For end-to-end (e2e) testing, run:
```bash
ng e2e
```
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
## Additional Resources
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
+203 -1909
View File
File diff suppressed because it is too large Load Diff
@@ -1 +1,61 @@
<p>contact-add-form works!</p> <form nz-form nzLayout="horizontal" [formGroup]="contactForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Nom</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Nom" formControlName="lastName">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Prénom</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Prénom" formControlName="firstName">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Email</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Email" formControlName="email">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Téléphone</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Téléphone" formControlName="phoneNumber">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Adresse</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Adresse" formControlName="address">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Code postal</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input type="number" placeholder="Code postal" formControlName="zipCode">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Ville</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Ville" formControlName="city">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Rôle</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Rôle" formControlName="role">
</nz-form-control>
</nz-form-item>
<nz-flex nzJustify="end">
<button nz-button nzType="primary" (click)="submitForm()">Valider</button>
</nz-flex>
</form>
@@ -1,11 +1,89 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzInputDirective} from "ng-zorro-antd/input";
import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
import {NzColDirective} from "ng-zorro-antd/grid";
import {NzFlexDirective} from "ng-zorro-antd/flex";
import {ContactsService, CreateContactDto} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
import {NzButtonComponent} from "ng-zorro-antd/button";
@Component({ @Component({
selector: 'app-contact-add-form', selector: 'app-contact-add-form',
imports: [], imports: [
NzFormLabelComponent,
NzFormItemComponent,
NzFormControlComponent,
NzInputDirective,
ReactiveFormsModule,
NzColDirective,
NzFormDirective,
NzFlexDirective,
NzButtonComponent
],
templateUrl: './contact-add-form.html', templateUrl: './contact-add-form.html',
styleUrl: './contact-add-form.css', styleUrl: './contact-add-form.css',
}) })
export class ContactAddForm { export class ContactAddForm {
private contactsService = inject(ContactsService);
private notificationService = inject(NzNotificationService);
contactForm = new FormGroup({
lastName: new FormControl<string>(null, [Validators.required]),
firstName: new FormControl<string>(null, [Validators.required]),
phoneNumber: new FormControl<string>(null, [Validators.required]),
email: new FormControl<string>(null, [Validators.required]),
address: new FormControl<string>(null, [Validators.required]),
city: new FormControl<string>(null, [Validators.required]),
role: new FormControl<string>(null, [Validators.required]),
customerId: new FormControl<number>(null),
})
contactPost = signal<CreateContactDto>(this.contactForm.value);
contactsLoading = signal<boolean>(false);
async submitForm() {
if (this.contactForm.invalid) return;
console.log(this.contactForm.getRawValue())
this.contactPost.set(this.contactForm.getRawValue())
await this.createContact(
this.contactPost().lastName,
this.contactPost().firstName,
this.contactPost().phoneNumber,
this.contactPost().email,
this.contactPost().address,
this.contactPost().city,
this.contactPost().role,
this.contactPost().customerId
)
this.contactForm.reset()
}
async createContact(lastName: string, firstName: string, phoneNumber: string, email: string, address: string, city: string, role: string, customerId: number) {
this.contactsLoading.set(true);
const contactValue: CreateContactDto = {
lastName: lastName,
firstName: firstName,
phoneNumber: phoneNumber,
email: email,
address: address,
city: city,
role: role,
customerId: customerId
}
try {
const contact = await firstValueFrom(this.contactsService.createContactEndpoint(contactValue));
this.contactPost.set(contact);
console.log(contact);
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.contactsLoading.set(false);
}
} }
@@ -2,6 +2,11 @@
<nz-card style="width:400px;" [nzActions]="[edit, delete]"> <nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Contact n°{{ contact().id }}</h2> <h2 style="text-align: center; font-weight: bold">Contact n°{{ contact().id }}</h2>
<p>Nom : {{ contact().lastName + " " + contact().firstName }}</p> <p>Nom : {{ contact().lastName + " " + contact().firstName }}</p>
<p>Rôle : {{ contact().role }}</p>
<p>Numéro de téléphone : {{ contact().phoneNumber }} </p>
<p>Email : {{ contact().email }}</p>
<p>Adresse : {{ contact().address + ", " + contact().city }}</p>
</nz-card> </nz-card>
<ng-template #edit> <ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" /> <nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
@@ -15,7 +20,43 @@
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Nom </nz-form-label> <nz-form-label nzSpan="5" nzRequired> Nom </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !"> <nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Nom" formControlName="note"> <input nz-input placeholder="Nom" formControlName="lastname">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Prénom </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Prénom" formControlName="firstname">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Num. Tél. </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Numéro de téléphone" formControlName="phone">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Email </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Email" formControlName="email">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Adresse </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Adresse" formControlName="address">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Ville </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Ville" formControlName="city">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Rôle </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Rôle" formControlName="role">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
</form> </form>
@@ -2,6 +2,7 @@
<nz-card style="width:400px;" [nzActions]="[edit, delete]"> <nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Client n°{{ customer().id }}</h2> <h2 style="text-align: center; font-weight: bold">Client n°{{ customer().id }}</h2>
<p>Note : {{ customer().note }}</p> <p>Note : {{ customer().note }}</p>
<p> Type de client : {{ customer().customerType}}</p>
</nz-card> </nz-card>
<ng-template #edit> <ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" /> <nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
@@ -20,6 +20,17 @@
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Contact</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<nz-select placeholder="Sélectionner un contact" formControlName="contactId">
@for (contact of contacts(); track contact.id) {
<nz-option [nzValue]="contact.id" nzLabel="{{ contact.firstName }} {{ contact.lastName }}"></nz-option>
}
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-flex nzJustify="end"> <nz-flex nzJustify="end">
<button nz-button nzType="primary" (click)="submitForm()">Valider</button> <button nz-button nzType="primary" (click)="submitForm()">Valider</button>
</nz-flex> </nz-flex>
@@ -4,10 +4,11 @@ import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFlexDirective} from "ng-zorro-antd/flex"; import {NzFlexDirective} from "ng-zorro-antd/flex";
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzInputDirective} from "ng-zorro-antd/input"; import {NzInputDirective} from "ng-zorro-antd/input";
import {FormControl, FormGroup, ReactiveFormsModule} from "@angular/forms"; import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
import {CommunicationsService, CreateCommunicationDto} from "../../../services/api"; import {CommunicationsService, ContactsService, CreateCommunicationDto, GetContactDto} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification"; import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs"; import {firstValueFrom} from "rxjs";
import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select";
@Component({ @Component({
selector: 'app-opportunity-add-form', selector: 'app-opportunity-add-form',
@@ -21,7 +22,9 @@ import {firstValueFrom} from "rxjs";
NzFormLabelComponent, NzFormLabelComponent,
NzInputDirective, NzInputDirective,
NzRowDirective, NzRowDirective,
ReactiveFormsModule ReactiveFormsModule,
NzSelectComponent,
NzOptionComponent
], ],
templateUrl: './opportunity-add-form.html', templateUrl: './opportunity-add-form.html',
styleUrl: './opportunity-add-form.css', styleUrl: './opportunity-add-form.css',
@@ -30,11 +33,14 @@ export class OpportunityAddForm {
private communicationsService = inject(CommunicationsService); private communicationsService = inject(CommunicationsService);
private notificationService = inject(NzNotificationService) private notificationService = inject(NzNotificationService)
private contactsService = inject(ContactsService);
communicationForm = new FormGroup({ communicationForm = new FormGroup({
calling: new FormControl<string>(null), calling: new FormControl<string>(null),
email: new FormControl<string>(null), email: new FormControl<string>(null),
meeting: new FormControl<string>(null), meeting: new FormControl<string>(null),
contactId: new FormControl<number>(null, [Validators.required]),
}, { validators: atLeastOneRequired }) }, { validators: atLeastOneRequired })
communicationPost = signal<CreateCommunicationDto>(this.communicationForm.value); communicationPost = signal<CreateCommunicationDto>(this.communicationForm.value);
@@ -43,20 +49,24 @@ export class OpportunityAddForm {
async submitForm() { async submitForm() {
if (this.communicationForm.invalid) return; if (this.communicationForm.invalid) return;
const raw = this.communicationForm.getRawValue();
console.log('contactId:', raw.contactId, 'type:', typeof raw.contactId);
console.log(this.communicationForm.getRawValue()) console.log(this.communicationForm.getRawValue())
this.communicationPost.set(this.communicationForm.getRawValue()) this.communicationPost.set(this.communicationForm.getRawValue())
await this.createCommunication(this.communicationPost().calling, this.communicationPost().email, this.communicationPost().meeting) await this.createCommunication(this.communicationPost().calling, this.communicationPost().email, this.communicationPost().meeting, this.communicationPost().contactId)
this.communicationForm.reset() this.communicationForm.reset()
} }
async createCommunication(calling: string, email: string, meeting: string) { async createCommunication(calling: string, email: string, meeting: string, contactId: number) {
this.communicationsLoading.set(true); this.communicationsLoading.set(true);
const communicationValue: CreateCommunicationDto = { const communicationValue: CreateCommunicationDto = {
calling: calling, calling: calling,
email: email, email: email,
meeting: meeting, meeting: meeting,
contactId: Number(contactId)
} }
try { try {
@@ -69,8 +79,25 @@ export class OpportunityAddForm {
this.communicationsLoading.set(false); this.communicationsLoading.set(false);
} }
contacts = signal<GetContactDto[]>([]);
async ngOnInit() {
await this.fetchContacts();
} }
async fetchContacts() {
try {
const contacts = await firstValueFrom(this.contactsService.getAllContactEndpoint());
this.contacts.set(contacts);
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
}
}
function atLeastOneRequired(group: FormGroup) { function atLeastOneRequired(group: FormGroup) {
const { calling, email, meeting } = group.controls; const { calling, email, meeting } = group.controls;
const valid = [calling, email, meeting].some(c => c.value); const valid = [calling, email, meeting].some(c => c.value);
@@ -1,14 +1,23 @@
@if (edit() == false) { @if (edit() == false) {
<nz-card style="width:400px;" [nzActions]="[edit, delete]"> <nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Communication n°{{ communication().id }}</h2> <h2 style="text-align: center; font-weight: bold">Contact n°{{ communication().contactId }}</h2>
@if (communication().calling) { @if (communication().calling) {
<p>📞 Appel : {{ communication().calling }}</p> <p>📞 Appel : {{ communication().calling }}</p>
<p> Nom du Contact : {{ communication().contactLastName + " " + communication().contactFirstName}}</p>
<p> Numéro du Contact : {{ communication().contactPhoneNumber }}</p>
<p> Email du Contact : {{ communication().contactEmail }}</p>
} }
@if (communication().email) { @if (communication().email) {
<p>✉️ Email : {{ communication().email }}</p> <p>✉️ Email : {{ communication().email }}</p>
<p> Nom du Contact : {{ communication().contactLastName + " " + communication().contactFirstName}}</p>
<p> Numéro du Contact : {{ communication().contactPhoneNumber }}</p>
<p> Email du Contact : {{ communication().contactEmail }}</p>
} }
@if (communication().meeting) { @if (communication().meeting) {
<p>🤝 Réunion : {{ communication().meeting }}</p> <p>🤝 Réunion : {{ communication().meeting }}</p>
<p> Nom du Contact : {{ communication().contactLastName + " " + communication().contactFirstName}}</p>
<p> Numéro du Contact : {{ communication().contactPhoneNumber }}</p>
<p> Email du Contact : {{ communication().contactEmail }}</p>
} }
</nz-card> </nz-card>
<ng-template #edit> <ng-template #edit>
@@ -2,6 +2,7 @@
<nz-card style="width:400px;" [nzActions]="[edit, delete]"> <nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Prestataire n°{{ provider().id }}</h2> <h2 style="text-align: center; font-weight: bold">Prestataire n°{{ provider().id }}</h2>
<p>Prix : {{ provider().price }}</p> <p>Prix : {{ provider().price }}</p>
<p>Type de Prestataire : {{ provider().providerType }}</p>
</nz-card> </nz-card>
<ng-template #edit> <ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" /> <nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
@@ -15,7 +16,7 @@
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Prix </nz-form-label> <nz-form-label nzSpan="5" nzRequired> Prix </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !"> <nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Nom" formControlName="note"> <input nz-input placeholder="Nom" formControlName="price">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
</form> </form>
@@ -56,7 +56,7 @@ class StaffAddForm {
profession: profession, profession: profession,
email: email, email: email,
f4T2NumberApproval: f4t2number, f4T2NumberApproval: f4t2number,
f4T2ExpirationDate: f4t2expiration instanceof Date ? f4t2expiration.toISOString().split('T')[0] : f4t2expiration f4T2ExpirationDate: f4t2expiration instanceof Date ? f4t2expiration : new Date(f4t2expiration)
} }
try { try {
@@ -6,6 +6,7 @@
<p>Email : {{ staff().email }}</p> <p>Email : {{ staff().email }}</p>
<p>N° F4T2 : {{ staff().f4T2NumberApproval }}</p> <p>N° F4T2 : {{ staff().f4T2NumberApproval }}</p>
<p>Expiration F4T2 : {{ staff().f4T2ExpirationDate }}</p> <p>Expiration F4T2 : {{ staff().f4T2ExpirationDate }}</p>
<p> Niveau d'experience : {{ staff().experienceLevel}}</p>
</nz-card> </nz-card>
<ng-template #edit> <ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" /> <nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
+1 -1
View File
@@ -35,7 +35,7 @@ export class StaffCard {
staffForm = new FormGroup({ staffForm = new FormGroup({
f4T2NumberApproval: new FormControl<string>(null, [Validators.required]), f4T2NumberApproval: new FormControl<string>(null, [Validators.required]),
f4T2ExpirationDate: new FormControl<string>(null, [Validators.required]), f4T2ExpirationDate: new FormControl<Date>(null, [Validators.required]),
}) })
async submitForm() { async submitForm() {
@@ -13,5 +13,6 @@ export interface CreateCommunicationDto {
calling?: string | null; calling?: string | null;
email?: string | null; email?: string | null;
meeting?: string | null; meeting?: string | null;
contactId?: number;
} }
@@ -11,5 +11,6 @@
export interface CreateExperienceLevelDto { export interface CreateExperienceLevelDto {
label?: string | null; label?: string | null;
staffId?: number | null;
} }
@@ -12,5 +12,6 @@
export interface CreateHistoryOfApprovalDto { export interface CreateHistoryOfApprovalDto {
deliveryDate?: string; deliveryDate?: string;
expirationDate?: string; expirationDate?: string;
staffId?: number;
} }
@@ -15,6 +15,6 @@ export interface CreateStaffDto {
profession?: string | null; profession?: string | null;
email?: string | null; email?: string | null;
f4T2NumberApproval?: string | null; f4T2NumberApproval?: string | null;
f4T2ExpirationDate?: string; f4T2ExpirationDate?: Date | null;
} }
@@ -14,5 +14,10 @@ export interface GetCommunicationDto {
calling?: string | null; calling?: string | null;
email?: string | null; email?: string | null;
meeting?: string | null; meeting?: string | null;
contactId?: number;
contactFirstName?: string | null;
contactLastName?: string | null;
contactEmail?: string | null;
contactPhoneNumber?: string | null;
} }
@@ -13,5 +13,6 @@ export interface GetCustomerDto {
id?: number; id?: number;
note?: string | null; note?: string | null;
customerTypeId?: number; customerTypeId?: number;
customerType?: string | null;
} }
@@ -12,5 +12,6 @@
export interface GetExperienceLevelDto { export interface GetExperienceLevelDto {
id?: number; id?: number;
label?: string | null; label?: string | null;
staffId?: number | null;
} }
@@ -13,5 +13,6 @@ export interface GetHistoryOfApprovalDto {
id?: number; id?: number;
deliveryDate?: string; deliveryDate?: string;
expirationDate?: string; expirationDate?: string;
staffId?: number;
} }
@@ -13,5 +13,6 @@ export interface GetProviderDto {
id?: number; id?: number;
price?: number; price?: number;
providerTypeId?: number; providerTypeId?: number;
providerType?: string | null;
} }
+2 -1
View File
@@ -16,6 +16,7 @@ export interface GetStaffDto {
profession?: string | null; profession?: string | null;
email?: string | null; email?: string | null;
f4T2NumberApproval?: string | null; f4T2NumberApproval?: string | null;
f4T2ExpirationDate?: string; f4T2ExpirationDate?: Date | null;
experienceLevel?: string | null;
} }
@@ -11,6 +11,6 @@
export interface UpdateStaffDto { export interface UpdateStaffDto {
f4T2NumberApproval?: string | null; f4T2NumberApproval?: string | null;
f4T2ExpirationDate?: string; f4T2ExpirationDate?: Date | null;
} }