15 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
ilylallois 933f5dee24 correcton casting issues 2026-06-09 12:29:07 +02:00
carteronm fb0af73a0b Opportunity quasi fini 2026-06-08 15:56:13 +02:00
carteronm a4ae624777 Staff terminé 2026-06-08 14:31:52 +02:00
carteronm 9885e4ee85 Staff PT1 2026-06-07 19:06:19 +02:00
carteronm 0d156faead Providers & Contact fini 2026-06-07 17:27:56 +02:00
carteronm ea65e6a3dc Providers Pt1 2026-06-02 18:12:49 +02:00
carteronm 67870e19ea Contact PT1 2026-05-28 16:06:02 +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
118 changed files with 1804 additions and 3502 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.
+175 -1775
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -6,7 +6,7 @@
"start": "ng serve", "start": "ng serve",
"build": "ng build", "build": "ng build",
"watch": "ng build --watch --configuration development", "watch": "ng build --watch --configuration development",
"openapi": "rm -rf src/app/services/api && openapi-generator-cli generate -i http://localhost:5298/swagger/v1/swagger.json -g typescript-angular -o src/app/services/api -c openapi-generator.yaml" "openapi": "rimraf src/app/services/api && openapi-generator-cli generate -i http://localhost:5298/swagger/v1/swagger.json -g typescript-angular -o src/app/services/api -c openapi-generator.yaml"
}, },
"prettier": { "prettier": {
"printWidth": 100, "printWidth": 100,
@@ -42,6 +42,7 @@
"@angular/cli": "^20.3.10", "@angular/cli": "^20.3.10",
"@angular/compiler-cli": "^20.3.0", "@angular/compiler-cli": "^20.3.0",
"less": "^4.2.0", "less": "^4.2.0",
"rimraf": "^6.1.3",
"typescript": "~5.9.2" "typescript": "~5.9.2"
} }
} }
+3 -1
View File
@@ -7,6 +7,7 @@ import { registerLocaleData } from '@angular/common';
import fr from '@angular/common/locales/fr'; import fr from '@angular/common/locales/fr';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { provideHttpClient } from '@angular/common/http'; import { provideHttpClient } from '@angular/common/http';
import {NzModalService} from 'ng-zorro-antd/modal';
registerLocaleData(fr); registerLocaleData(fr);
@@ -14,6 +15,7 @@ export const appConfig: ApplicationConfig = {
providers: [ providers: [
provideBrowserGlobalErrorListeners(), provideBrowserGlobalErrorListeners(),
provideZoneChangeDetection({ eventCoalescing: true }), provideZoneChangeDetection({ eventCoalescing: true }),
provideRouter(routes), provideNzI18n(fr_FR), provideAnimationsAsync(), provideHttpClient() provideRouter(routes), provideNzI18n(fr_FR), provideAnimationsAsync(), provideHttpClient(),
NzModalService
] ]
}; };
@@ -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);
}
} }
@@ -0,0 +1,70 @@
@if (edit() == false) {
<nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Contact n°{{ contact().id }}</h2>
<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>
<ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
</ng-template>
<ng-template #delete>
<nz-icon (click)="Delete()" nzType="delete" nzTheme="fill" />
</ng-template>
} @else {
<nz-card style="width:400px;" [nzActions]="[back, check]">
<form nz-form nzLayout="horizontal" [formGroup]="contactForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Nom </nz-form-label>
<nz-form-control nzSpan="22" 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 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-item>
</form>
</nz-card>
<ng-template #back>
<nz-icon (click)="Back()" nzType="backward" nzTheme="fill" />
</ng-template>
<ng-template #check>
<nz-icon (click)="submitForm()" nzType="check" nzTheme="outline" />
</ng-template>
}
@@ -0,0 +1,108 @@
import {Component, inject, input, output, signal} from '@angular/core';
import {
ContactsService,
CustomersService, GetContactDto,
GetCustomerDto,
UpdateContactDto,
UpdateCustomerDto
} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
import {firstValueFrom} from "rxjs";
import {NzCardComponent} from "ng-zorro-antd/card";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzIconDirective} from "ng-zorro-antd/icon";
import {NzInputDirective} from "ng-zorro-antd/input";
@Component({
selector: 'app-contact-card',
imports: [NzCardComponent, NzColDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzIconDirective, NzInputDirective, NzRowDirective, ReactiveFormsModule],
templateUrl: './contact-card.html',
styleUrl: './contact-card.css',
})
export class ContactCard {
private contactsService = inject(ContactsService);
private notificationService = inject(NzNotificationService)
contactEdit = signal<UpdateContactDto>(null);
contactsLoading = signal<boolean>(false);
contactForm = new FormGroup({
id: new FormControl(null, [Validators.required]),
lastname: new FormControl<string>(null, [Validators.required]),
firstname: new FormControl(null, [Validators.required]),
phone: new FormControl(null, [Validators.required]),
email: new FormControl(null, [Validators.required]),
address: new FormControl(null, [Validators.required]),
city: new FormControl(null, [Validators.required]),
role: new FormControl(null, [Validators.required])
})
async submitForm() {
this.contactsLoading.set(true);
const contactValue = {
lastname: this.contactForm.value.lastname,
firstname: this.contactForm.value.firstname,
phone: this.contactForm.value.phone,
email: this.contactForm.value.email,
address: this.contactForm.value.address,
city: this.contactForm.value.city,
role: this.contactForm.value.role,
}
try {
const contact = await firstValueFrom(this.contactsService.updateContactEndpoint(this.contact().id,contactValue));
this.contactEdit.set(contact);
console.log(contact);
this.contactForm.reset();
this.edit.set(false);
this.triggerEdited.emit();
} catch (e)
{
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.contactsLoading.set(false);
}
contact = input<GetContactDto>(null);
edit = signal(false)
triggerEdited = output<void>();
protected Edit() {
this.edit.set(true)
}
protected Back() {
this.edit.set(false)
this.contactForm.reset();
}
async Delete() {
this.contactsLoading.set(true);
try {
const contact = await firstValueFrom(this.contactsService.deleteContactEndpoint(this.contact().id));
this.contactEdit.set(contact);
this.contactForm.reset();
this.triggerEdited.emit();
} catch (e)
{
this.notificationService.error('Erreur de recherche', "Le contact n\'existe pas !");
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.contactsLoading.set(false);
}
}
@@ -1 +0,0 @@
<p>contact-get-all-form works!</p>
@@ -1,11 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-contact-get-all-form',
imports: [],
templateUrl: './contact-get-all-form.html',
styleUrl: './contact-get-all-form.css',
})
export class ContactGetAllForm {
}
@@ -1 +0,0 @@
<p>contact-get-all works!</p>
@@ -1,11 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-contact-get-all',
imports: [],
templateUrl: './contact-get-all.html',
styleUrl: './contact-get-all.css',
})
export class ContactGetAll {
}
+11 -1
View File
@@ -1 +1,11 @@
<p>contact works!</p> <app-create-contact-modal (triggerCreated)="fetchCustomers()" />
<div class="card">
<div nz-row [nzGutter]="10" style="gap: 30px">
@for (contact of contacts(); track contact.id)
{
<!-- Passage de la donnée du parent vers l'enfant + signal à émettre -->
<app-contact-card [contact]="contact" (triggerEdited)="fetchCustomers()" />
}
</div>
</div>
+37 -2
View File
@@ -1,11 +1,46 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {ContactsService, GetContactDto} from "../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {Router} from "@angular/router";
import {firstValueFrom} from "rxjs";
import {CustomersCardForm} from "../customers/create-customers-modal/customers-card-form";
import {GetAllCustomersCard} from "../customers/customers-card/get-all-customers-card";
import {NzRowDirective} from "ng-zorro-antd/grid";
import {CreateContactModal} from "./create-contact-modal/create-contact-modal";
import {ContactCard} from "./contact-card/contact-card";
@Component({ @Component({
selector: 'app-contact', selector: 'app-contact',
imports: [], imports: [
NzRowDirective,
CreateContactModal,
ContactCard
],
templateUrl: './contact.html', templateUrl: './contact.html',
styleUrl: './contact.css', styleUrl: './contact.css',
}) })
export class Contact { export class Contact {
private contactsService = inject(ContactsService);
private notificationService = inject(NzNotificationService)
router = inject(Router);
contacts = signal<GetContactDto[]>([]);
contactsLoading = signal<boolean>(false);
async ngOnInit() {
await this.fetchCustomers();
}
async fetchCustomers() {
this.contactsLoading.set(true);
try {
const contacts = await firstValueFrom(this.contactsService.getAllContactEndpoint())
this.contacts.set(contacts)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.contactsLoading.set(false);
}
} }
@@ -0,0 +1 @@
<p>create-contact-modal works!</p>
@@ -0,0 +1,63 @@
import {Component, output} from '@angular/core';
import {ContactAddForm} from "../contact-add-form/contact-add-form";
import {NzMessageService} from "ng-zorro-antd/message";
import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzModalComponent} from "ng-zorro-antd/modal";
@Component({
selector: 'app-create-contact-modal',
imports: [
ContactAddForm,
NzButtonComponent,
NzModalComponent
],
template: `
<button nz-button nzType="primary" (click)="showModal()">
<span style="font-weight: bold">+</span>
</button>
<nz-modal
[(nzVisible)]="isVisible"
[nzTitle]="modalTitle"
[nzContent]="modalContent"
[nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()">
<ng-template #modalTitle style="text-align: center">Création de contacts</ng-template>
<ng-template #modalContent>
<app-contact-add-form/>
</ng-template>
<ng-template #modalFooter>
<button nz-button nzType="default" (click)="handleCancel()">Annuler</button>
<button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="isConfirmLoading">Confirmer</button>
</ng-template>
</nz-modal>
`,
styleUrl: './create-contact-modal.css',
})
export class CreateContactModal {
constructor(private message: NzMessageService) {}
isVisible = false;
isConfirmLoading = false;
showModal(): void {
this.isVisible = true;
}
handleOk(): void {
this.isConfirmLoading = true;
this.message.success('Client créé !');
setTimeout(() => {
this.isVisible = false;
this.isConfirmLoading = false;
}, 300);
this.triggerCreated.emit();
}
handleCancel(): void {
this.isVisible = false;
this.message.info('Création annulée');
}
triggerCreated = output<void>()
}
@@ -2,7 +2,6 @@ import {Component, output} from '@angular/core';
import {NzMessageService} from "ng-zorro-antd/message"; import {NzMessageService} from "ng-zorro-antd/message";
import {NzButtonModule} from "ng-zorro-antd/button"; import {NzButtonModule} from "ng-zorro-antd/button";
import {NzModalModule} from "ng-zorro-antd/modal"; import {NzModalModule} from "ng-zorro-antd/modal";
import {ProvidersAddForm} from "../../providers/providers-add-form/providers-add-form";
import {CustomersAddForm} from "../customers-add-form/customers-add-form"; import {CustomersAddForm} from "../customers-add-form/customers-add-form";
@Component({ @Component({
@@ -17,8 +16,7 @@ import {CustomersAddForm} from "../customers-add-form/customers-add-form";
[nzTitle]="modalTitle" [nzTitle]="modalTitle"
[nzContent]="modalContent" [nzContent]="modalContent"
[nzFooter]="modalFooter" [nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()" (nzOnCancel)="handleCancel()">
>
<ng-template #modalTitle style="text-align: center">Création de clients</ng-template> <ng-template #modalTitle style="text-align: center">Création de clients</ng-template>
<ng-template #modalContent> <ng-template #modalContent>
@@ -1,7 +1,8 @@
@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">Client n°{{ customer().id }}</h2> <h2 style="text-align: center; font-weight: bold">Client n°{{ customer().id }}</h2>
<p>Nom : {{ 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" />
@@ -13,7 +14,7 @@
<nz-card style="width:400px;" [nzActions]="[back, check]"> <nz-card style="width:400px;" [nzActions]="[back, check]">
<form nz-form nzLayout="horizontal" [formGroup]="customerForm"> <form nz-form nzLayout="horizontal" [formGroup]="customerForm">
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Nom </nz-form-label> <nz-form-label nzSpan="5" nzRequired> Note </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="note">
</nz-form-control> </nz-form-control>
@@ -0,0 +1 @@
<p>create-opportunity-modal works!</p>
@@ -1,14 +1,17 @@
import { Component } from '@angular/core'; import {Component, output} from '@angular/core';
import {OpportunityAddForm} from "../opportunity-add-form/opportunity-add-form";
import {NzMessageService} from "ng-zorro-antd/message"; import {NzMessageService} from "ng-zorro-antd/message";
import {StaffAddForm} from "../staff-add-form/staff-add-form"; import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzButtonModule} from "ng-zorro-antd/button"; import {NzModalComponent} from "ng-zorro-antd/modal";
import {NzModalModule} from "ng-zorro-antd/modal";
import {ProvidersAddForm} from "../../providers/providers-add-form/providers-add-form";
@Component({ @Component({
selector: 'app-staff-card-form', selector: 'app-create-opportunity-modal',
imports: [NzButtonModule, NzModalModule, StaffAddForm], imports: [
template: ` OpportunityAddForm,
NzButtonComponent,
NzModalComponent
],
template: `
<button nz-button nzType="primary" (click)="showModal()"> <button nz-button nzType="primary" (click)="showModal()">
<span style="font-weight: bold">+</span> <span style="font-weight: bold">+</span>
</button> </button>
@@ -17,12 +20,11 @@ import {ProvidersAddForm} from "../../providers/providers-add-form/providers-add
[nzTitle]="modalTitle" [nzTitle]="modalTitle"
[nzContent]="modalContent" [nzContent]="modalContent"
[nzFooter]="modalFooter" [nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()" (nzOnCancel)="handleCancel()">
> <ng-template #modalTitle style="text-align: center">Création d'opportunités</ng-template>
<ng-template #modalTitle style="text-align: center">Création de artificiers</ng-template>
<ng-template #modalContent> <ng-template #modalContent>
<app-staff-add-form/> <app-opportunity-add-form/>
</ng-template> </ng-template>
<ng-template #modalFooter> <ng-template #modalFooter>
@@ -31,27 +33,31 @@ import {ProvidersAddForm} from "../../providers/providers-add-form/providers-add
</ng-template> </ng-template>
</nz-modal> </nz-modal>
`, `,
styleUrl: './staff-card-form.css', styleUrl: './create-opportunity-modal.css',
}) })
export class StaffCardForm { export class CreateOpportunityModal {
constructor(private message: NzMessageService) {} constructor(private message: NzMessageService) {}
isVisible = false; isVisible = false;
isConfirmLoading = false; isConfirmLoading = false;
showModal(): void { showModal(): void {
this.isVisible = true; this.isVisible = true;
} }
handleOk(): void { handleOk(): void {
this.isConfirmLoading = true; this.isConfirmLoading = true;
this.message.success('Prestataire créé !'); this.message.success('Opportunité créé !');
setTimeout(() => { setTimeout(() => {
this.isVisible = false; this.isVisible = false;
this.isConfirmLoading = false; this.isConfirmLoading = false;
}, 1000); }, 300);
this.triggerCreated.emit();
} }
handleCancel(): void { handleCancel(): void {
this.isVisible = false; this.isVisible = false;
this.message.info('Création annulée');
} }
}
triggerCreated = output<void>()
}
+57 -1
View File
@@ -1 +1,57 @@
<p>opportunities works!</p> <app-create-opportunity-modal (triggerCreated)="fetchCommunications()" />
<nz-divider></nz-divider>
<nz-card style="margin-bottom: 16px">
<div nz-row [nzGutter]="16" style="text-align: center">
<div nz-col [nzSpan]="8">
<h3>📞 Appels</h3>
<p style="font-size: 24px; font-weight: bold">{{ totalCalls }}</p>
</div>
<div nz-col [nzSpan]="8">
<h3>✉️ Emails</h3>
<p style="font-size: 24px; font-weight: bold">{{ totalEmails }}</p>
</div>
<div nz-col [nzSpan]="8">
<h3>🤝 Réunions</h3>
<p style="font-size: 24px; font-weight: bold">{{ totalMeetings }}</p>
</div>
</div>
</nz-card>
<nz-divider></nz-divider>
<div nz-row [nzGutter]="16">
<div nz-col [nzSpan]="8">
<nz-card nzTitle="Appels ({{ totalCalls }})">
@for (communication of communications(); track communication.id) {
@if (communication.calling) {
<app-opportunity-card [communication]="communication" (triggerEdited)="fetchCommunications()" />
<nz-divider></nz-divider>
}
}
</nz-card>
</div>
<div nz-col [nzSpan]="8">
<nz-card nzTitle="Emails ({{ totalEmails }})">
@for (communication of communications(); track communication.id) {
@if (communication.email) {
<app-opportunity-card [communication]="communication" (triggerEdited)="fetchCommunications()" />
<nz-divider></nz-divider>
}
}
</nz-card>
</div>
<div nz-col [nzSpan]="8">
<nz-card nzTitle="Réunions ({{ totalMeetings }})">
@for (communication of communications(); track communication.id) {
@if (communication.meeting) {
<app-opportunity-card [communication]="communication" (triggerEdited)="fetchCommunications()" />
<nz-divider></nz-divider>
}
}
</nz-card>
</div>
</div>
+45 -2
View File
@@ -1,11 +1,54 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {CreateOpportunityModal} from "./create-opportunity-modal/create-opportunity-modal";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {Router} from "@angular/router";
import {firstValueFrom} from "rxjs";
import {NzCardComponent} from "ng-zorro-antd/card";
import {NzDividerComponent} from "ng-zorro-antd/divider";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {OpportunityCard} from "./opportunity-card/opportunity-card";
import {CommunicationsService, GetCommunicationDto} from "../../services/api";
@Component({ @Component({
selector: 'app-opportunities', selector: 'app-opportunities',
imports: [], imports: [CreateOpportunityModal, NzCardComponent, NzDividerComponent, NzRowDirective, NzColDirective, OpportunityCard],
templateUrl: './opportunities.html', templateUrl: './opportunities.html',
styleUrl: './opportunities.css', styleUrl: './opportunities.css',
}) })
export class Opportunities { export class Opportunities {
private communicationsService = inject(CommunicationsService);
private notificationService = inject(NzNotificationService)
router = inject(Router);
communications = signal<GetCommunicationDto[]>([]);
communicationsLoading = signal<boolean>(false);
async ngOnInit() {
await this.fetchCommunications();
}
get totalCalls() {
return this.communications().filter(c => c.calling).length;
}
get totalEmails() {
return this.communications().filter(c => c.email).length;
}
get totalMeetings() {
return this.communications().filter(c => c.meeting).length;
}
async fetchCommunications() {
this.communicationsLoading.set(true);
try {
const communications = await firstValueFrom(this.communicationsService.getAllCommunicationsEndpoint())
this.communications.set(communications)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.communicationsLoading.set(false);
}
} }
@@ -0,0 +1,37 @@
<form nz-form nzLayout="horizontal" [formGroup]="communicationForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Appel</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Appel" formControlName="calling">
</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>Réunion</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Réunion" formControlName="meeting">
</nz-form-control>
</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">
<button nz-button nzType="primary" (click)="submitForm()">Valider</button>
</nz-flex>
</form>
@@ -0,0 +1,105 @@
import {Component, inject, signal} from '@angular/core';
import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFlexDirective} from "ng-zorro-antd/flex";
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 {CommunicationsService, ContactsService, CreateCommunicationDto, GetContactDto} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select";
@Component({
selector: 'app-opportunity-add-form',
imports: [
NzButtonComponent,
NzColDirective,
NzFlexDirective,
NzFormControlComponent,
NzFormDirective,
NzFormItemComponent,
NzFormLabelComponent,
NzInputDirective,
NzRowDirective,
ReactiveFormsModule,
NzSelectComponent,
NzOptionComponent
],
templateUrl: './opportunity-add-form.html',
styleUrl: './opportunity-add-form.css',
})
export class OpportunityAddForm {
private communicationsService = inject(CommunicationsService);
private notificationService = inject(NzNotificationService)
private contactsService = inject(ContactsService);
communicationForm = new FormGroup({
calling: new FormControl<string>(null),
email: new FormControl<string>(null),
meeting: new FormControl<string>(null),
contactId: new FormControl<number>(null, [Validators.required]),
}, { validators: atLeastOneRequired })
communicationPost = signal<CreateCommunicationDto>(this.communicationForm.value);
communicationsLoading = signal<boolean>(false);
async submitForm() {
if (this.communicationForm.invalid) return;
const raw = this.communicationForm.getRawValue();
console.log('contactId:', raw.contactId, 'type:', typeof raw.contactId);
console.log(this.communicationForm.getRawValue())
this.communicationPost.set(this.communicationForm.getRawValue())
await this.createCommunication(this.communicationPost().calling, this.communicationPost().email, this.communicationPost().meeting, this.communicationPost().contactId)
this.communicationForm.reset()
}
async createCommunication(calling: string, email: string, meeting: string, contactId: number) {
this.communicationsLoading.set(true);
const communicationValue: CreateCommunicationDto = {
calling: calling,
email: email,
meeting: meeting,
contactId: Number(contactId)
}
try {
const communication = await firstValueFrom(this.communicationsService.createCommunicationEndpoint(communicationValue));
this.communicationPost.set(communication);
console.log(communication);
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
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) {
const { calling, email, meeting } = group.controls;
const valid = [calling, email, meeting].some(c => c.value);
return valid ? null : { atLeastOneRequired: true };
}
@@ -0,0 +1,58 @@
@if (edit() == false) {
<nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Contact n°{{ communication().contactId }}</h2>
@if (communication().calling) {
<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) {
<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) {
<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>
<ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
</ng-template>
<ng-template #delete>
<nz-icon (click)="Delete()" nzType="delete" nzTheme="fill" />
</ng-template>
} @else {
<nz-card style="width:400px;" [nzActions]="[back, check]">
<form nz-form nzLayout="horizontal" [formGroup]="communicationForm">
<nz-form-item>
<nz-form-label nzSpan="5">Appel</nz-form-label>
<nz-form-control nzSpan="22">
<input nz-input placeholder="Appel" formControlName="calling">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5">Email</nz-form-label>
<nz-form-control nzSpan="22">
<input nz-input placeholder="Email" formControlName="email">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5">Réunion</nz-form-label>
<nz-form-control nzSpan="22">
<input nz-input placeholder="Réunion" formControlName="meeting">
</nz-form-control>
</nz-form-item>
</form>
</nz-card>
<ng-template #back>
<nz-icon (click)="Back()" nzType="backward" nzTheme="fill" />
</ng-template>
<ng-template #check>
<nz-icon (click)="submitForm()" nzType="check" nzTheme="outline" />
</ng-template>
}
@@ -0,0 +1,100 @@
import {Component, inject, input, output, signal} from '@angular/core';
import {NzNotificationService} from "ng-zorro-antd/notification";
import {FormControl, FormGroup, ReactiveFormsModule} from "@angular/forms";
import {firstValueFrom} from "rxjs";
import {NzCardComponent} from "ng-zorro-antd/card";
import {NzFormControlComponent, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzIconDirective} from "ng-zorro-antd/icon";
import {NzColDirective} from "ng-zorro-antd/grid";
import {NzInputDirective} from "ng-zorro-antd/input";
import {CommunicationsService, GetCommunicationDto, UpdateCommunicationDto} from "../../../services/api";
@Component({
selector: 'app-opportunity-card',
imports: [
NzCardComponent,
ReactiveFormsModule,
NzFormLabelComponent,
NzFormControlComponent,
NzFormItemComponent,
NzIconDirective,
NzColDirective,
NzInputDirective
],
templateUrl: './opportunity-card.html',
styleUrl: './opportunity-card.css',
})
export class OpportunityCard {
private communicationsService = inject(CommunicationsService);
private notificationService = inject(NzNotificationService);
communicationEdit = signal<UpdateCommunicationDto>(null);
communicationsLoading = signal<boolean>(false);
communicationForm = new FormGroup({
calling: new FormControl<string>(null),
email: new FormControl<string>(null),
meeting: new FormControl<string>(null),
}, { validators: atLeastOneRequired })
async submitForm() {
this.communicationsLoading.set(true);
const communicationValue: UpdateCommunicationDto = {
calling: this.communicationForm.value.calling,
email: this.communicationForm.value.email,
meeting: this.communicationForm.value.meeting,
}
try {
const communication = await firstValueFrom(this.communicationsService.updateCommunicationEndpoint(this.communication().id, communicationValue));
this.communicationEdit.set(communication as unknown as UpdateCommunicationDto);
console.log(communication);
this.communicationForm.reset();
this.edit.set(false);
this.triggerEdited.emit();
} catch (e) {
this.notificationService.error('Erreur', '(ou Erreur de communication avec l\'API)');
}
this.communicationsLoading.set(false);
}
communication = input<GetCommunicationDto>(null);
edit = signal(false);
triggerEdited = output<void>();
protected Edit() {
this.edit.set(true);
this.communicationForm.patchValue({
calling: this.communication().calling,
email: this.communication().email,
meeting: this.communication().meeting,
});
}
protected Back() {
this.edit.set(false);
this.communicationForm.reset();
}
async Delete() {
this.communicationsLoading.set(true);
try {
await firstValueFrom(this.communicationsService.deleteCommunicationEndpoint(this.communication().id));
this.communicationForm.reset();
this.triggerEdited.emit();
} catch (e) {
this.notificationService.error('Erreur', '(ou Erreur de communication avec l\'API)');
}
this.communicationsLoading.set(false);
}
}
function atLeastOneRequired(group: FormGroup) {
const { calling, email, meeting } = group.controls;
const valid = [calling, email, meeting].some(c => c.value);
return valid ? null : { atLeastOneRequired: true };
}
@@ -0,0 +1 @@
<p>create-providers-modal works!</p>
@@ -0,0 +1,59 @@
import {Component, output} from '@angular/core';
import {NzMessageService} from "ng-zorro-antd/message";
import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzModalComponent} from "ng-zorro-antd/modal";
import {ProvidersAddForm} from "../providers-add-form/providers-add-form";
@Component({
selector: 'app-create-providers-modal',
imports: [NzButtonComponent, NzModalComponent, ProvidersAddForm],
template: `
<button nz-button nzType="primary" (click)="showModal()">
<span style="font-weight: bold">+</span>
</button>
<nz-modal
[(nzVisible)]="isVisible"
[nzTitle]="modalTitle"
[nzContent]="modalContent"
[nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()">
<ng-template #modalTitle style="text-align: center">Création de prestataires</ng-template>
<ng-template #modalContent>
<app-providers-add-form/>
</ng-template>
<ng-template #modalFooter>
<button nz-button nzType="default" (click)="handleCancel()">Annuler</button>
<button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="isConfirmLoading">Confirmer</button>
</ng-template>
</nz-modal>
`,
styleUrl: './create-providers-modal.css',
})
export class CreateProvidersModal {
constructor(private message: NzMessageService) {}
isVisible = false;
isConfirmLoading = false;
showModal(): void {
this.isVisible = true;
}
handleOk(): void {
this.isConfirmLoading = true;
this.message.success('Prestataire créé !');
setTimeout(() => {
this.isVisible = false;
this.isConfirmLoading = false;
}, 300);
this.triggerCreated.emit();
}
handleCancel(): void {
this.isVisible = false;
this.message.info('Création annulée');
}
triggerCreated = output<void>()
}
@@ -1,46 +1,4 @@
<form nz-form nzLayout="horizontal" [formGroup]="providerForm"> <form nz-form nzLayout="horizontal" [formGroup]="providerForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Nom </nz-form-label>
<nz-form-control nzSpan="22" 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>Téléphone</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Numéro de téléphone" formControlName="phoneNumber">
</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>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>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-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 nzErrorTip="Ce champ est requis"> <nz-form-control nzErrorTip="Ce champ est requis">
@@ -48,4 +6,18 @@
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Type </nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<nz-select placeholder="Type de client" formControlName="providerTypeId">
@for (providertype of providerTypes(); track providertype.id) {
<nz-option nzValue="{{providertype.id}}" nzLabel="{{ providertype.label }}"></nz-option>
}
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-flex nzJustify="end">
<button nz-button nzType="primary" (click)="submitForm()">Valider</button>
</nz-flex>
</form> </form>
@@ -1,34 +1,85 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from "@angular/forms";
import {NzFormModule} from "ng-zorro-antd/form";
import {NzInputDirective} from "ng-zorro-antd/input";
import {NzFlexDirective} from "ng-zorro-antd/flex";
import {NzButtonComponent} from "ng-zorro-antd/button"; import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFlexDirective} from "ng-zorro-antd/flex";
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzInputDirective} from "ng-zorro-antd/input";
import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select";
import {CreateProviderDto, GetProviderTypeDto, ProvidertypesService, ServiceprovidersService} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
@Component({ @Component({
selector: 'app-providers-add-form', selector: 'app-providers-add-form',
imports: [ReactiveFormsModule, NzFormModule, NzInputDirective,], imports: [FormsModule, NzButtonComponent, NzColDirective, NzFlexDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzInputDirective, NzOptionComponent, NzRowDirective, NzSelectComponent, ReactiveFormsModule],
templateUrl: './providers-add-form.html', templateUrl: './providers-add-form.html',
styleUrl: './providers-add-form.css', styleUrl: './providers-add-form.css',
}) })
export class ProvidersAddForm { export class ProvidersAddForm {
providerForm = new FormGroup({ private providersService = inject(ServiceprovidersService);
lastName: new FormControl<string>(null, [Validators.required]), private serviceprovidertypesService = inject(ProvidertypesService);
firstName: new FormControl<string>(null, [Validators.required]), private notificationService = inject(NzNotificationService)
phoneNumber: new FormControl<string>(null, [Validators.required]),
email: new FormControl<string>(null, [Validators.required]),
address: new FormControl<string>(null, [Validators.required]),
role: new FormControl<string>(null, [Validators.required]),
price: new FormControl<string>(null, [Validators.required]),
})
submitForm() {
// Pour annuler si le formulaire est invalide
if (this.providerForm.invalid) return;
// Pour obtenir la valeur du formulaire
console.log(this.providerForm.getRawValue())
// Pour vider le formulaire providerForm = new FormGroup({
this.providerForm.reset() Price: new FormControl<number>(null, [Validators.required]),
providerTypeId: new FormControl<number>(null, [Validators.required]),
})
providerPost = signal<CreateProviderDto>(this.providerForm.value);
providersLoading = signal<boolean>(false);
async submitForm() {
// Pour annuler si le formulaire est invalide
if (this.providerForm.invalid) return;
// Pour obtenir la valeur du formulaire
console.log(this.providerForm.getRawValue())
this.providerPost.set(this.providerForm.getRawValue())
await this.createProviders(this.providerPost().price, this.providerPost().providerTypeId)
// Pour vider le formulaire
this.providerForm.reset()
}
async createProviders(price: number, customerTypeId: number) {
this.providersLoading.set(true);
const providerValue = {
price: price,
customerTypeId: customerTypeId
} }
try {
const provider = await firstValueFrom(this.providersService.createProviderEndpoint(providerValue));
this.providerPost.set(provider);
console.log(provider);
} catch (e)
{
this.notificationService.error('Erreur de recherche', "L\'auteur n\'existe pas !");
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.providersLoading.set(false);
}
providerTypes = signal<GetProviderTypeDto[]>([])
async ngOnInit() {
await this.fetchCustomerTypes()
}
async fetchCustomerTypes() {
this.providersLoading.set(true);
try {
const providerType = await firstValueFrom(this.serviceprovidertypesService.getAllProviderTypesEndpoint())
this.providerTypes.set(providerType)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.providersLoading.set(false);
}
} }
@@ -1,3 +0,0 @@
.ant-modal-content {
background: #272727;
}
@@ -1 +0,0 @@
<p>providers-card-form works!</p>
@@ -1,56 +0,0 @@
import { Component } from '@angular/core';
import {NzModalComponent, NzModalModule} from "ng-zorro-antd/modal";
import {NzButtonComponent, NzButtonModule} from "ng-zorro-antd/button";
import {NzMessageService} from "ng-zorro-antd/message";
import {ProvidersAddForm} from "../providers-add-form/providers-add-form";
@Component({
selector: 'app-providers-card-form',
imports: [NzButtonModule, NzModalModule, ProvidersAddForm],
template: `
<button nz-button nzType="primary" (click)="showModal()">
<span style="font-weight: bold">+</span>
</button>
<nz-modal
[(nzVisible)]="isVisible"
[nzTitle]="modalTitle"
[nzContent]="modalContent"
[nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()"
>
<ng-template #modalTitle>Création de prestataires</ng-template>
<ng-template #modalContent>
<app-providers-add-form/>
</ng-template>
<ng-template #modalFooter>
<button nz-button nzType="default" (click)="handleCancel()">Annuler</button>
<button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="isConfirmLoading">Confirmer</button>
</ng-template>
</nz-modal>
`,
styleUrl: './providers-card-form.css',
})
export class ProvidersCardForm {
constructor(private message: NzMessageService) {}
isVisible = false;
isConfirmLoading = false;
showModal(): void {
this.isVisible = true;
}
handleOk(): void {
this.isConfirmLoading = true;
this.message.success('Prestataire créé !');
setTimeout(() => {
this.isVisible = false;
this.isConfirmLoading = false;
}, 1000);
}
handleCancel(): void {
this.isVisible = false;
}
}
@@ -0,0 +1,30 @@
@if (edit() == false) {
<nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Prestataire n°{{ provider().id }}</h2>
<p>Prix : {{ provider().price }}</p>
<p>Type de Prestataire : {{ provider().providerType }}</p>
</nz-card>
<ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
</ng-template>
<ng-template #delete>
<nz-icon (click)="Delete()" nzType="delete" nzTheme="fill" />
</ng-template>
} @else {
<nz-card style="width:400px;" [nzActions]="[back, check]">
<form nz-form nzLayout="horizontal" [formGroup]="providerForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Prix </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Nom" formControlName="price">
</nz-form-control>
</nz-form-item>
</form>
</nz-card>
<ng-template #back>
<nz-icon (click)="Back()" nzType="backward" nzTheme="fill" />
</ng-template>
<ng-template #check>
<nz-icon (click)="submitForm()" nzType="check" nzTheme="outline" />
</ng-template>
}
@@ -0,0 +1,90 @@
import {Component, inject, input, output, signal} from '@angular/core';
import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from "@angular/forms";
import {NzCardComponent} from "ng-zorro-antd/card";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzIconDirective} from "ng-zorro-antd/icon";
import {NzInputDirective} from "ng-zorro-antd/input";
import {GetProviderDto, ServiceprovidersService, UpdateProviderDto} from "../../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
@Component({
selector: 'app-providers-card',
imports: [FormsModule, NzCardComponent, NzColDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzIconDirective, NzInputDirective, NzRowDirective, ReactiveFormsModule],
templateUrl: './providers-card.html',
styleUrl: './providers-card.css',
})
export class ProvidersCard {
private providersService = inject(ServiceprovidersService);
private notificationService = inject(NzNotificationService)
providerEdit = signal<UpdateProviderDto>(null);
providersLoading = signal<boolean>(false);
providerForm = new FormGroup({
id: new FormControl(null, [Validators.required]),
price: new FormControl<number>(null, [Validators.required]),
})
async submitForm() {
this.providersLoading.set(true);
const providerValue = {
price: this.providerForm.value.price,
}
try {
const provider = await firstValueFrom(this.providersService.updateProviderEndpoint(this.provider().id,providerValue));
this.providerEdit.set(provider);
console.log(provider);
this.providerForm.reset();
this.edit.set(false);
this.triggerEdited.emit();
} catch (e)
{
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.providersLoading.set(false);
}
provider = input<GetProviderDto>(null);
edit = signal(false)
triggerEdited = output<void>();
protected Edit() {
this.edit.set(true)
}
protected Back() {
this.edit.set(false)
this.providerForm.reset();
}
async Delete() {
this.providersLoading.set(true);
try {
const provider = await firstValueFrom(this.providersService.deleteProviderEndpoint(this.provider().id));
this.providerEdit.set(provider);
this.providerForm.reset();
this.triggerEdited.emit();
} catch (e)
{
this.notificationService.error('Erreur de recherche', "L\'auteur n\'existe pas !");
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.providersLoading.set(false);
}
}
@@ -1 +0,0 @@
<p>providers-get-all works!</p>
@@ -1,13 +0,0 @@
import {Component, inject, signal} from '@angular/core';
import {NzNotificationService} from "ng-zorro-antd/notification";
import {Router} from "@angular/router";
import {firstValueFrom} from "rxjs";
@Component({
selector: 'app-providers-get-all',
imports: [],
templateUrl: './providers-get-all.html',
styleUrl: './providers-get-all.css',
})
export class ProvidersGetAll {
}
+10 -2
View File
@@ -1,3 +1,11 @@
<app-providers-card-form/> <app-create-providers-modal (triggerCreated)="fetchProviders()" />
<app-providers-get-all/> <div class="card">
<div nz-row [nzGutter]="10" style="gap: 30px">
@for (provider of providers(); track provider.id)
{
<!-- Passage de la donnée du parent vers l'enfant + signal à émettre -->
<app-providers-card [provider]="provider" (triggerEdited)="fetchProviders()" />
}
</div>
</div>
+31 -7
View File
@@ -1,16 +1,40 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {ProvidersCardForm} from "./providers-card-form/providers-card-form"; import {NzRowDirective} from "ng-zorro-antd/grid";
import {ProvidersGetAll} from "./providers-get-all/providers-get-all"; import {GetProviderDto, ServiceprovidersService} from "../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {Router} from "@angular/router";
import {firstValueFrom} from "rxjs";
import {ProvidersCard} from "./providers-card/providers-card";
import {CreateProvidersModal} from "./create-providers-modal/create-providers-modal";
@Component({ @Component({
selector: 'app-providers', selector: 'app-providers',
imports: [ imports: [NzRowDirective, ProvidersCard, CreateProvidersModal],
ProvidersCardForm,
ProvidersGetAll
],
templateUrl: './providers.html', templateUrl: './providers.html',
styleUrl: './providers.css', styleUrl: './providers.css',
}) })
export class Providers { export class Providers {
private providersService = inject(ServiceprovidersService);
private notificationService = inject(NzNotificationService)
router = inject(Router);
providers = signal<GetProviderDto[]>([]);
providersLoading = signal<boolean>(false);
async ngOnInit() {
await this.fetchProviders();
}
async fetchProviders() {
this.providersLoading.set(true);
try {
const providers = await firstValueFrom(this.providersService.getAllProvidersEndpoint())
this.providers.set(providers)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.providersLoading.set(false);
}
} }
@@ -0,0 +1 @@
<p>create-staff-modal works!</p>
@@ -0,0 +1,63 @@
import {Component, output} from '@angular/core';
import StaffAddForm from "../staff-add-form/staff-add-form";
import {NzMessageService} from "ng-zorro-antd/message";
import {NzModalComponent} from "ng-zorro-antd/modal";
import {NzButtonComponent} from "ng-zorro-antd/button";
@Component({
selector: 'app-create-staff-modal',
imports: [
StaffAddForm,
NzModalComponent,
NzButtonComponent
],
template: `
<button nz-button nzType="primary" (click)="showModal()">
<span style="font-weight: bold">+</span>
</button>
<nz-modal
[(nzVisible)]="isVisible"
[nzTitle]="modalTitle"
[nzContent]="modalContent"
[nzFooter]="modalFooter"
(nzOnCancel)="handleCancel()">
<ng-template #modalTitle style="text-align: center">Création de staff</ng-template>
<ng-template #modalContent>
<app-staff-add-form/>
</ng-template>
<ng-template #modalFooter>
<button nz-button nzType="default" (click)="handleCancel()">Annuler</button>
<button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="isConfirmLoading">Confirmer</button>
</ng-template>
</nz-modal>
`,
styleUrl: './create-staff-modal.css',
})
export class CreateStaffModal {
constructor(private message: NzMessageService) {}
isVisible = false;
isConfirmLoading = false;
showModal(): void {
this.isVisible = true;
}
handleOk(): void {
this.isConfirmLoading = true;
this.message.success('Staff créé !');
setTimeout(() => {
this.isVisible = false;
this.isConfirmLoading = false;
}, 300);
this.triggerCreated.emit();
}
handleCancel(): void {
this.isVisible = false;
this.message.info('Création annulée');
}
triggerCreated = output<void>()
}
@@ -1,8 +1,8 @@
<form nz-form nzLayout="horizontal" [formGroup]="staffForm"> <form nz-form nzLayout="horizontal" [formGroup]="staffForm">
<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 nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Nom" formControlName="lastName"> <input nz-input placeholder="Nom de Famille" formControlName="lastName">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
@@ -14,48 +14,34 @@
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Téléphone</nz-form-label> <nz-form-label nzSpan="5" nzRequired>Profession</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis !"> <nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Numéro de téléphone" formControlName="phoneNumber"> <input nz-input placeholder="Profession" formControlName="profession">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Email</nz-form-label> <nz-form-label nzSpan="5" nzRequired>Email</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis !"> <nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Email" formControlName="email"> <input nz-input placeholder="Email" formControlName="email">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Adresse</nz-form-label> <nz-form-label nzSpan="5" nzRequired>Numéro F4T2</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis !"> <nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Adresse" formControlName="address"> <input nz-input placeholder="Numéro F4T2" formControlName="f4T2NumberApproval">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label nzSpan="5" nzRequired>Rôle</nz-form-label> <nz-form-label nzSpan="5" nzRequired>Exp. F4T2</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis"> <nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Rôle" formControlName="role"> <input nz-input placeholder="Date d'expiration F4T2" formControlName="f4T2ExpirationDate">
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-layout></nz-layout> <nz-flex nzJustify="end">
<button nz-button nzType="primary" (click)="submitForm()">Valider</button>
<nz-form-item> </nz-flex>
<nz-form-label nzSpan="10" nzRequired>Numéro F4T2</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Numéro F4T2" formControlName="F4T2NumberApproval">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="10" nzRequired>Date d'expiration du F4T2</nz-form-label>
<nz-form-control nzErrorTip="Ce champ est requis">
<input nz-input placeholder="Date d'expiration du F4T2" formControlName="F4T2ExpirationDate">
</nz-form-control>
</nz-form-item>
</form> </form>
@@ -1,43 +1,94 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from "@angular/forms"; import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from "@angular/forms";
import {NzButtonComponent} from "ng-zorro-antd/button";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import { import {NzFlexDirective} from "ng-zorro-antd/flex";
NzFormControlComponent, import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
NzFormDirective,
NzFormItemComponent,
NzFormLabelComponent,
NzFormModule
} from "ng-zorro-antd/form";
import {NzInputDirective} from "ng-zorro-antd/input"; import {NzInputDirective} from "ng-zorro-antd/input";
import {NzLayoutComponent} from "ng-zorro-antd/layout"; import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
import {CreateStaffDto, GetProviderTypeDto, ProvidertypesService, StaffsService} from "../../../services/api";
@Component({ @Component({
selector: 'app-staff-add-form', selector: 'app-staff-add-form',
imports: [ReactiveFormsModule, NzFormModule, NzInputDirective, NzLayoutComponent], imports: [FormsModule, NzButtonComponent, NzColDirective, NzFlexDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzInputDirective, NzRowDirective, ReactiveFormsModule],
templateUrl: './staff-add-form.html', templateUrl: './staff-add-form.html',
styleUrl: './staff-add-form.css', styleUrl: './staff-add-form.css',
}) })
export class StaffAddForm { class StaffAddForm {
private staffsService = inject(StaffsService);
private serviceprovidertypesService = inject(ProvidertypesService);
private notificationService = inject(NzNotificationService)
staffForm = new FormGroup({ staffForm = new FormGroup({
lastName: new FormControl<string>(null, [Validators.required]), lastName: new FormControl<string>(null, [Validators.required]),
firstName: new FormControl<string>(null, [Validators.required]), firstName: new FormControl<string>(null, [Validators.required]),
phoneNumber: new FormControl<string>(null, [Validators.required]), profession: new FormControl<string>(null, [Validators.required]),
email: new FormControl<string>(null, [Validators.required]), email: new FormControl<string>(null, [Validators.required]),
address: new FormControl<string>(null, [Validators.required]), f4T2NumberApproval: new FormControl<string>(null, [Validators.required]),
role: new FormControl<string>(null, [Validators.required]), f4T2ExpirationDate: new FormControl<Date>(null, [Validators.required])
price: new FormControl<string>(null, [Validators.required]),
F4T2NumberApproval: new FormControl<string>(null, [Validators.required]),
F4T2ExpirationDate: new FormControl<Date>(null, [Validators.required]),
}) })
submitForm() {
// Pour annuler si le formulaire est invalide
if (this.staffForm.invalid) return;
// Pour obtenir la valeur du formulaire staffPost = signal<CreateStaffDto>(this.staffForm.value as any);
console.log(this.staffForm.getRawValue()) staffsLoading = signal<boolean>(false);
// Pour vider le formulaire async submitForm() {
this.staffForm.reset() // Pour annuler si le formulaire est invalide
if (this.staffForm.invalid) return;
// Pour obtenir la valeur du formulaire
console.log(this.staffForm.getRawValue())
this.staffPost.set(this.staffForm.getRawValue() as any)
await this.createStaff(this.staffPost().lastName, this.staffPost().firstName, this.staffPost().profession, this.staffPost().email, this.staffPost().f4T2NumberApproval, this.staffPost().f4T2ExpirationDate)
// Pour vider le formulaire
this.staffForm.reset()
}
async createStaff(lastname: string, firstname: string, profession: string, email: string, f4t2number: string, f4t2expiration: Date | string)
{
this.staffsLoading.set(true);
const staffValue: CreateStaffDto = {
lastName: lastname,
firstName: firstname,
profession: profession,
email: email,
f4T2NumberApproval: f4t2number,
f4T2ExpirationDate: f4t2expiration instanceof Date ? f4t2expiration : new Date(f4t2expiration)
}
try {
const staff = await firstValueFrom(this.staffsService.createStaffEndpoint(staffValue));
this.staffPost.set(staff as unknown as CreateStaffDto);
console.log(staff);
} catch (e)
{
this.notificationService.error('Erreur', ' (ou Erreur de communication avec l\'API)');
}
this.staffsLoading.set(false);
}
providerTypes = signal<GetProviderTypeDto[]>([])
async ngOnInit() {
await this.fetchCustomerTypes()
}
async fetchCustomerTypes() {
this.staffsLoading.set(true);
try {
const providerType = await firstValueFrom(this.serviceprovidertypesService.getAllProviderTypesEndpoint())
this.providerTypes.set(providerType)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.staffsLoading.set(false);
} }
} }
export default StaffAddForm
@@ -1 +0,0 @@
<p>staff-card-form works!</p>
@@ -0,0 +1,40 @@
@if (edit() == false) {
<nz-card style="width:400px;" [nzActions]="[edit, delete]">
<h2 style="text-align: center; font-weight: bold">Staff n°{{ staff().id }}</h2>
<p>Nom : {{ staff().lastName }} {{ staff().firstName }}</p>
<p>Profession : {{ staff().profession }}</p>
<p>Email : {{ staff().email }}</p>
<p>N° F4T2 : {{ staff().f4T2NumberApproval }}</p>
<p>Expiration F4T2 : {{ staff().f4T2ExpirationDate }}</p>
<p> Niveau d'experience : {{ staff().experienceLevel}}</p>
</nz-card>
<ng-template #edit>
<nz-icon (click)="Edit()" nzType="edit" nzTheme="fill" />
</ng-template>
<ng-template #delete>
<nz-icon (click)="Delete()" nzType="delete" nzTheme="fill" />
</ng-template>
} @else {
<nz-card style="width:400px;" [nzActions]="[back, check]">
<form nz-form nzLayout="horizontal" [formGroup]="staffForm">
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> N° F4T2 </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="N° F4T2" formControlName="f4T2NumberApproval">
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzSpan="5" nzRequired> Exp. F4T2 </nz-form-label>
<nz-form-control nzSpan="22" nzErrorTip="Ce champ est requis !">
<input nz-input placeholder="Expiration F4T2" formControlName="f4T2ExpirationDate">
</nz-form-control>
</nz-form-item>
</form>
</nz-card>
<ng-template #back>
<nz-icon (click)="Back()" nzType="backward" nzTheme="fill" />
</ng-template>
<ng-template #check>
<nz-icon (click)="submitForm()" nzType="check" nzTheme="outline" />
</ng-template>
}
@@ -0,0 +1,89 @@
import {Component, inject, input, output, signal} from '@angular/core';
import {NzCardComponent} from "ng-zorro-antd/card";
import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid";
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
import {NzIconDirective} from "ng-zorro-antd/icon";
import {NzInputDirective} from "ng-zorro-antd/input";
import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {firstValueFrom} from "rxjs";
import {GetStaffDto, StaffsService, UpdateStaffDto} from "../../../services/api";
@Component({
selector: 'app-staff-card',
imports: [
NzCardComponent,
NzColDirective,
NzFormControlComponent,
NzFormDirective,
NzFormItemComponent,
NzFormLabelComponent,
NzIconDirective,
NzInputDirective,
NzRowDirective,
ReactiveFormsModule
],
templateUrl: './staff-card.html',
styleUrl: './staff-card.css',
})
export class StaffCard {
private staffsService = inject(StaffsService);
private notificationService = inject(NzNotificationService)
staffEdit = signal<UpdateStaffDto>(null);
staffsLoading = signal<boolean>(false);
staffForm = new FormGroup({
f4T2NumberApproval: new FormControl<string>(null, [Validators.required]),
f4T2ExpirationDate: new FormControl<Date>(null, [Validators.required]),
})
async submitForm() {
this.staffsLoading.set(true);
const staffValue: UpdateStaffDto = {
f4T2NumberApproval: this.staffForm.value.f4T2NumberApproval,
f4T2ExpirationDate: this.staffForm.value.f4T2ExpirationDate,
}
try {
const staff = await firstValueFrom(this.staffsService.updateStaffEndpoint(this.staff().id, staffValue));
this.staffEdit.set(staff as unknown as UpdateStaffDto);
console.log(staff);
this.staffForm.reset();
this.edit.set(false);
this.triggerEdited.emit();
} catch (e) {
this.notificationService.error('Erreur', '(ou Erreur de communication avec l\'API)');
}
this.staffsLoading.set(false);
}
staff = input<GetStaffDto>(null);
edit = signal(false)
triggerEdited = output<void>();
protected Edit() {
this.edit.set(true)
}
protected Back() {
this.edit.set(false)
this.staffForm.reset();
}
async Delete() {
this.staffsLoading.set(true);
try {
await firstValueFrom(this.staffsService.deleteStaffEndpoint(this.staff().id));
this.staffForm.reset();
this.triggerEdited.emit();
} catch (e) {
this.notificationService.error('Erreur', '(ou Erreur de communication avec l\'API)');
}
this.staffsLoading.set(false);
}
}
@@ -1 +0,0 @@
<p>staff-get-all works!</p>
@@ -1,11 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-staff-get-all',
imports: [],
templateUrl: './staff-get-all.html',
styleUrl: './staff-get-all.css',
})
export class StaffGetAll {
}
+10 -2
View File
@@ -1,3 +1,11 @@
<app-staff-card-form/> <app-create-staff-modal (triggerCreated)="fetchStaff()" />
<app-staff-get-all/> <div class="card">
<div nz-row [nzGutter]="10" style="gap: 30px">
@for (staff of staffs(); track staff.id)
{
<!-- Passage de la donnée du parent vers l'enfant + signal à émettre -->
<app-staff-card [staff]="staff" (triggerEdited)="fetchStaff()" />
}
</div>
</div>
+31 -7
View File
@@ -1,16 +1,40 @@
import { Component } from '@angular/core'; import {Component, inject, signal} from '@angular/core';
import {StaffCardForm} from "./staff-card-form/staff-card-form"; import {NzRowDirective} from "ng-zorro-antd/grid";
import {StaffGetAll} from "./staff-get-all/staff-get-all"; import {GetStaffDto, StaffsService} from "../../services/api";
import {NzNotificationService} from "ng-zorro-antd/notification";
import {Router} from "@angular/router";
import {firstValueFrom} from "rxjs";
import {CreateStaffModal} from "./create-staff-modal/create-staff-modal";
import {StaffCard} from "./staff-card/staff-card";
@Component({ @Component({
selector: 'app-staff', selector: 'app-staff',
imports: [ imports: [NzRowDirective, CreateStaffModal, StaffCard,],
StaffCardForm,
StaffGetAll
],
templateUrl: './staff.html', templateUrl: './staff.html',
styleUrl: './staff.css', styleUrl: './staff.css',
}) })
export class Staff { export class Staff {
private staffsService = inject(StaffsService);
private notificationService = inject(NzNotificationService)
router = inject(Router);
staffs = signal<GetStaffDto[]>([]);
staffsLoading = signal<boolean>(false);
async ngOnInit() {
await this.fetchStaff();
}
async fetchStaff() {
this.staffsLoading.set(true);
try {
const staff = await firstValueFrom(this.staffsService.getAllStaffsEndpoint())
this.staffs.set(staff)
} catch (e) {
this.notificationService.error('Erreur', 'Erreur de communication avec l\'API');
}
this.staffsLoading.set(false);
}
} }
+1 -40
View File
@@ -11,22 +11,13 @@ api/customers.service.ts
api/customertypes.service.ts api/customertypes.service.ts
api/experiencelevels.service.ts api/experiencelevels.service.ts
api/historyofapprovals.service.ts api/historyofapprovals.service.ts
api/providers.service.ts
api/providertype.service.ts
api/providertypes.service.ts api/providertypes.service.ts
api/serviceproviders.service.ts
api/staffs.service.ts api/staffs.service.ts
configuration.ts configuration.ts
encoder.ts encoder.ts
git_push.sh git_push.sh
index.ts index.ts
model/action-of-authorization-policy-builder.ts
model/assembly.ts
model/base-endpoint.ts
model/calling-conventions.ts
model/claim.ts
model/claims-identity.ts
model/claims-principal.ts
model/constructor-info.ts
model/create-availability-dto.ts model/create-availability-dto.ts
model/create-communication-dto.ts model/create-communication-dto.ts
model/create-contact-dto.ts model/create-contact-dto.ts
@@ -37,17 +28,6 @@ model/create-history-of-approval-dto.ts
model/create-provider-dto.ts model/create-provider-dto.ts
model/create-provider-type-dto.ts model/create-provider-type-dto.ts
model/create-staff-dto.ts model/create-staff-dto.ts
model/custom-attribute-data.ts
model/custom-attribute-named-argument.ts
model/custom-attribute-typed-argument.ts
model/delegate.ts
model/endpoint-definition.ts
model/endpoint-of-empty-request-and-list-of-get-communication-dto.ts
model/endpoint-summary.ts
model/endpoint-without-request-of-list-of-get-communication-dto.ts
model/ep-version.ts
model/func-of-object.ts
model/get-all-communications-endpoint.ts
model/get-availability-dto.ts model/get-availability-dto.ts
model/get-communication-dto.ts model/get-communication-dto.ts
model/get-contact-dto.ts model/get-contact-dto.ts
@@ -58,25 +38,7 @@ model/get-history-of-approval-dto.ts
model/get-provider-dto.ts model/get-provider-dto.ts
model/get-provider-type-dto.ts model/get-provider-type-dto.ts
model/get-staff-dto.ts model/get-staff-dto.ts
model/http.ts
model/i-identity.ts
model/i-web-host-environment.ts
model/idempotency-options.ts
model/member-info.ts
model/member-types.ts
model/method-base.ts
model/method-impl-attributes.ts
model/method-info.ts
model/models.ts model/models.ts
model/module-handle.ts
model/module.ts
model/multicast-delegate.ts
model/parameter-attributes.ts
model/parameter-info.ts
model/request-example.ts
model/response-header.ts
model/security-rule-set.ts
model/severity.ts
model/update-availability-dto.ts model/update-availability-dto.ts
model/update-communication-dto.ts model/update-communication-dto.ts
model/update-contact-dto.ts model/update-contact-dto.ts
@@ -87,7 +49,6 @@ model/update-history-of-approval-dto.ts
model/update-provider-dto.ts model/update-provider-dto.ts
model/update-provider-type-dto.ts model/update-provider-type-dto.ts
model/update-staff-dto.ts model/update-staff-dto.ts
model/validation-failure.ts
param.ts param.ts
provide-api.ts provide-api.ts
variables.ts variables.ts
+3 -5
View File
@@ -12,12 +12,10 @@ export * from './experiencelevels.service';
import { ExperiencelevelsService } from './experiencelevels.service'; import { ExperiencelevelsService } from './experiencelevels.service';
export * from './historyofapprovals.service'; export * from './historyofapprovals.service';
import { HistoryofapprovalsService } from './historyofapprovals.service'; import { HistoryofapprovalsService } from './historyofapprovals.service';
export * from './providers.service';
import { ProvidersService } from './providers.service';
export * from './providertype.service';
import { ProvidertypeService } from './providertype.service';
export * from './providertypes.service'; export * from './providertypes.service';
import { ProvidertypesService } from './providertypes.service'; import { ProvidertypesService } from './providertypes.service';
export * from './serviceproviders.service';
import { ServiceprovidersService } from './serviceproviders.service';
export * from './staffs.service'; export * from './staffs.service';
import { StaffsService } from './staffs.service'; import { StaffsService } from './staffs.service';
export const APIS = [AvailabilitiesService, CommunicationsService, ContactsService, CustomersService, CustomertypesService, ExperiencelevelsService, HistoryofapprovalsService, ProvidersService, ProvidertypeService, ProvidertypesService, StaffsService]; export const APIS = [AvailabilitiesService, CommunicationsService, ContactsService, CustomersService, CustomertypesService, ExperiencelevelsService, HistoryofapprovalsService, ProvidertypesService, ServiceprovidersService, StaffsService];
@@ -19,8 +19,6 @@ import { Observable } from 'rxjs';
// @ts-ignore // @ts-ignore
import { CreateCommunicationDto } from '../model/create-communication-dto'; import { CreateCommunicationDto } from '../model/create-communication-dto';
// @ts-ignore // @ts-ignore
import { GetAllCommunicationsEndpoint } from '../model/get-all-communications-endpoint';
// @ts-ignore
import { GetCommunicationDto } from '../model/get-communication-dto'; import { GetCommunicationDto } from '../model/get-communication-dto';
// @ts-ignore // @ts-ignore
import { UpdateCommunicationDto } from '../model/update-communication-dto'; import { UpdateCommunicationDto } from '../model/update-communication-dto';
@@ -108,20 +106,16 @@ export class CommunicationsService extends BaseService {
/** /**
* @endpoint delete /API/communications/{id} * @endpoint delete /API/communications/{id}
* @param id * @param id
* @param getCommunicationDto
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
*/ */
public deleteCommunicationEndpoint(id: number, getCommunicationDto: GetCommunicationDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetAllCommunicationsEndpoint>; public deleteCommunicationEndpoint(id: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetCommunicationDto>;
public deleteCommunicationEndpoint(id: number, getCommunicationDto: GetCommunicationDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetAllCommunicationsEndpoint>>; public deleteCommunicationEndpoint(id: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetCommunicationDto>>;
public deleteCommunicationEndpoint(id: number, getCommunicationDto: GetCommunicationDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetAllCommunicationsEndpoint>>; public deleteCommunicationEndpoint(id: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetCommunicationDto>>;
public deleteCommunicationEndpoint(id: number, getCommunicationDto: GetCommunicationDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> { public deleteCommunicationEndpoint(id: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (id === null || id === undefined) { if (id === null || id === undefined) {
throw new Error('Required parameter id was null or undefined when calling deleteCommunicationEndpoint.'); throw new Error('Required parameter id was null or undefined when calling deleteCommunicationEndpoint.');
} }
if (getCommunicationDto === null || getCommunicationDto === undefined) {
throw new Error('Required parameter getCommunicationDto was null or undefined when calling deleteCommunicationEndpoint.');
}
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
@@ -137,15 +131,6 @@ export class CommunicationsService extends BaseService {
const localVarTransferCache: boolean = options?.transferCache ?? true; const localVarTransferCache: boolean = options?.transferCache ?? true;
// to determine the Content-Type header
const consumes: string[] = [
'application/json'
];
const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_: 'text' | 'json' | 'blob' = 'json'; let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) { if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) { if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
@@ -159,10 +144,9 @@ export class CommunicationsService extends BaseService {
let localVarPath = `/API/communications/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`; let localVarPath = `/API/communications/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<GetAllCommunicationsEndpoint>('delete', `${basePath}${localVarPath}`, return this.httpClient.request<GetCommunicationDto>('delete', `${basePath}${localVarPath}`,
{ {
context: localVarHttpContext, context: localVarHttpContext,
body: getCommunicationDto,
responseType: <any>responseType_, responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}), ...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders, headers: localVarHeaders,
+10 -10
View File
@@ -162,10 +162,10 @@ export class ContactsService extends BaseService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
*/ */
public getAllContactxuest(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<GetContactDto>>; public getAllContactEndpoint(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<GetContactDto>>;
public getAllContactxuest(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<GetContactDto>>>; public getAllContactEndpoint(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<GetContactDto>>>;
public getAllContactxuest(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<GetContactDto>>>; public getAllContactEndpoint(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<GetContactDto>>>;
public getAllContactxuest(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> { public getAllContactEndpoint(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
@@ -268,15 +268,15 @@ export class ContactsService extends BaseService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
*/ */
public updateContactRequest(id: number, updateContactDto: UpdateContactDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetContactDto>; public updateContactEndpoint(id: number, updateContactDto: UpdateContactDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetContactDto>;
public updateContactRequest(id: number, updateContactDto: UpdateContactDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetContactDto>>; public updateContactEndpoint(id: number, updateContactDto: UpdateContactDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetContactDto>>;
public updateContactRequest(id: number, updateContactDto: UpdateContactDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetContactDto>>; public updateContactEndpoint(id: number, updateContactDto: UpdateContactDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetContactDto>>;
public updateContactRequest(id: number, updateContactDto: UpdateContactDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> { public updateContactEndpoint(id: number, updateContactDto: UpdateContactDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (id === null || id === undefined) { if (id === null || id === undefined) {
throw new Error('Required parameter id was null or undefined when calling updateContactRequest.'); throw new Error('Required parameter id was null or undefined when calling updateContactEndpoint.');
} }
if (updateContactDto === null || updateContactDto === undefined) { if (updateContactDto === null || updateContactDto === undefined) {
throw new Error('Required parameter updateContactDto was null or undefined when calling updateContactRequest.'); throw new Error('Required parameter updateContactDto was null or undefined when calling updateContactEndpoint.');
} }
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
@@ -1,88 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/* tslint:disable:no-unused-variable member-ordering */
import { Inject, Injectable, Optional } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams,
HttpResponse, HttpEvent, HttpParameterCodec, HttpContext
} from '@angular/common/http';
import { CustomHttpParameterCodec } from '../encoder';
import { Observable } from 'rxjs';
// @ts-ignore
import { GetProviderTypeDto } from '../model/get-provider-type-dto';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
import { Configuration } from '../configuration';
import { BaseService } from '../api.base.service';
@Injectable({
providedIn: 'root'
})
export class ProvidertypeService extends BaseService {
constructor(protected httpClient: HttpClient, @Optional() @Inject(BASE_PATH) basePath: string|string[], @Optional() configuration?: Configuration) {
super(basePath, configuration);
}
/**
* @endpoint get /API/providertype
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getAllProviderTypesEndpoint(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<GetProviderTypeDto>>;
public getAllProviderTypesEndpoint(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<GetProviderTypeDto>>>;
public getAllProviderTypesEndpoint(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<GetProviderTypeDto>>>;
public getAllProviderTypesEndpoint(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
let localVarHeaders = this.defaultHeaders;
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
'application/json'
]);
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
const localVarTransferCache: boolean = options?.transferCache ?? true;
let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
} else {
responseType_ = 'blob';
}
}
let localVarPath = `/API/providertype`;
const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<Array<GetProviderTypeDto>>('get', `${basePath}${localVarPath}`,
{
context: localVarHttpContext,
responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders,
observe: observe,
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
reportProgress: reportProgress
}
);
}
}
@@ -157,6 +157,56 @@ export class ProvidertypesService extends BaseService {
); );
} }
/**
* @endpoint get /API/providertypes
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getAllProviderTypesEndpoint(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<GetProviderTypeDto>>;
public getAllProviderTypesEndpoint(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<GetProviderTypeDto>>>;
public getAllProviderTypesEndpoint(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<GetProviderTypeDto>>>;
public getAllProviderTypesEndpoint(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
let localVarHeaders = this.defaultHeaders;
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
'application/json'
]);
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
const localVarTransferCache: boolean = options?.transferCache ?? true;
let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
} else {
responseType_ = 'blob';
}
}
let localVarPath = `/API/providertypes`;
const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<Array<GetProviderTypeDto>>('get', `${basePath}${localVarPath}`,
{
context: localVarHttpContext,
responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders,
observe: observe,
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
reportProgress: reportProgress
}
);
}
/** /**
* @endpoint get /API/providertypes/{id} * @endpoint get /API/providertypes/{id}
* @param id * @param id
@@ -33,14 +33,14 @@ import { BaseService } from '../api.base.service';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
export class ProvidersService extends BaseService { export class ServiceprovidersService extends BaseService {
constructor(protected httpClient: HttpClient, @Optional() @Inject(BASE_PATH) basePath: string|string[], @Optional() configuration?: Configuration) { constructor(protected httpClient: HttpClient, @Optional() @Inject(BASE_PATH) basePath: string|string[], @Optional() configuration?: Configuration) {
super(basePath, configuration); super(basePath, configuration);
} }
/** /**
* @endpoint post /API/providers * @endpoint post /API/serviceproviders
* @param createProviderDto * @param createProviderDto
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
@@ -87,7 +87,7 @@ export class ProvidersService extends BaseService {
} }
} }
let localVarPath = `/API/providers`; let localVarPath = `/API/serviceproviders`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<GetProviderDto>('post', `${basePath}${localVarPath}`, return this.httpClient.request<GetProviderDto>('post', `${basePath}${localVarPath}`,
{ {
@@ -104,7 +104,7 @@ export class ProvidersService extends BaseService {
} }
/** /**
* @endpoint delete /API/providers/{id} * @endpoint delete /API/serviceproviders/{id}
* @param id * @param id
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
@@ -142,7 +142,7 @@ export class ProvidersService extends BaseService {
} }
} }
let localVarPath = `/API/providers/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`; let localVarPath = `/API/serviceproviders/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<GetProviderDto>('delete', `${basePath}${localVarPath}`, return this.httpClient.request<GetProviderDto>('delete', `${basePath}${localVarPath}`,
{ {
@@ -158,7 +158,7 @@ export class ProvidersService extends BaseService {
} }
/** /**
* @endpoint get /API/providers * @endpoint get /API/serviceproviders
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
*/ */
@@ -192,7 +192,7 @@ export class ProvidersService extends BaseService {
} }
} }
let localVarPath = `/API/providers`; let localVarPath = `/API/serviceproviders`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<Array<GetProviderDto>>('get', `${basePath}${localVarPath}`, return this.httpClient.request<Array<GetProviderDto>>('get', `${basePath}${localVarPath}`,
{ {
@@ -208,7 +208,7 @@ export class ProvidersService extends BaseService {
} }
/** /**
* @endpoint get /API/providers/{id} * @endpoint get /API/serviceproviders/{id}
* @param id * @param id
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
@@ -246,7 +246,7 @@ export class ProvidersService extends BaseService {
} }
} }
let localVarPath = `/API/providers/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`; let localVarPath = `/API/serviceproviders/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<GetProviderDto>('get', `${basePath}${localVarPath}`, return this.httpClient.request<GetProviderDto>('get', `${basePath}${localVarPath}`,
{ {
@@ -262,7 +262,7 @@ export class ProvidersService extends BaseService {
} }
/** /**
* @endpoint put /API/providers/{id} * @endpoint put /API/serviceproviders/{id}
* @param id * @param id
* @param updateProviderDto * @param updateProviderDto
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
@@ -313,7 +313,7 @@ export class ProvidersService extends BaseService {
} }
} }
let localVarPath = `/API/providers/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`; let localVarPath = `/API/serviceproviders/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32"})}`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<GetProviderDto>('put', `${basePath}${localVarPath}`, return this.httpClient.request<GetProviderDto>('put', `${basePath}${localVarPath}`,
{ {
+6 -6
View File
@@ -268,15 +268,15 @@ export class StaffsService extends BaseService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
*/ */
public updateStaffRequest(id: number, updateStaffDto: UpdateStaffDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetStaffDto>; public updateStaffEndpoint(id: number, updateStaffDto: UpdateStaffDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<GetStaffDto>;
public updateStaffRequest(id: number, updateStaffDto: UpdateStaffDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetStaffDto>>; public updateStaffEndpoint(id: number, updateStaffDto: UpdateStaffDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<GetStaffDto>>;
public updateStaffRequest(id: number, updateStaffDto: UpdateStaffDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetStaffDto>>; public updateStaffEndpoint(id: number, updateStaffDto: UpdateStaffDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<GetStaffDto>>;
public updateStaffRequest(id: number, updateStaffDto: UpdateStaffDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> { public updateStaffEndpoint(id: number, updateStaffDto: UpdateStaffDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (id === null || id === undefined) { if (id === null || id === undefined) {
throw new Error('Required parameter id was null or undefined when calling updateStaffRequest.'); throw new Error('Required parameter id was null or undefined when calling updateStaffEndpoint.');
} }
if (updateStaffDto === null || updateStaffDto === undefined) { if (updateStaffDto === null || updateStaffDto === undefined) {
throw new Error('Required parameter updateStaffDto was null or undefined when calling updateStaffRequest.'); throw new Error('Required parameter updateStaffDto was null or undefined when calling updateStaffEndpoint.');
} }
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
@@ -1,17 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { MethodInfo } from './method-info';
export interface ActionOfAuthorizationPolicyBuilder {
target?: any | null;
method?: MethodInfo;
}
-42
View File
@@ -1,42 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { CustomAttributeData } from './custom-attribute-data';
import { SecurityRuleSet } from './security-rule-set';
import { MethodInfo } from './method-info';
import { Module } from './module';
export interface Assembly {
definedTypes?: Array<string>;
exportedTypes?: Array<string>;
/** @deprecated */
codeBase?: string | null;
entryPoint?: MethodInfo | null;
fullName?: string | null;
imageRuntimeVersion?: string;
isDynamic?: boolean;
location?: string;
reflectionOnly?: boolean;
isCollectible?: boolean;
isFullyTrusted?: boolean;
customAttributes?: Array<CustomAttributeData>;
/** @deprecated */
escapedCodeBase?: string;
manifestModule?: Module;
modules?: Array<Module>;
/** @deprecated */
globalAssemblyCache?: boolean;
hostContext?: number;
securityRuleSet?: SecurityRuleSet;
}
export namespace Assembly {
}
@@ -1,22 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { EndpointDefinition } from './endpoint-definition';
import { ValidationFailure } from './validation-failure';
/**
* the base class all fast endpoints inherit from
*/
export interface BaseEndpoint {
definition?: EndpointDefinition;
httpContext?: object;
validationFailures?: Array<ValidationFailure>;
}
@@ -1,23 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
*
*/
export const CallingConventions = {
NUMBER_1: 1,
NUMBER_2: 2,
NUMBER_3: 3,
NUMBER_32: 32,
NUMBER_64: 64
} as const;
export type CallingConventions = typeof CallingConventions[keyof typeof CallingConventions];
-22
View File
@@ -1,22 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { ClaimsIdentity } from './claims-identity';
export interface Claim {
issuer?: string;
originalIssuer?: string;
properties?: { [key: string]: string; };
subject?: ClaimsIdentity | null;
type?: string;
value?: string;
valueType?: string;
}
@@ -1,24 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Claim } from './claim';
export interface ClaimsIdentity {
authenticationType?: string | null;
isAuthenticated?: boolean;
actor?: ClaimsIdentity | null;
bootstrapContext?: any | null;
claims?: Array<Claim>;
label?: string | null;
name?: string | null;
nameClaimType?: string;
roleClaimType?: string;
}
@@ -1,20 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { ClaimsIdentity } from './claims-identity';
import { IIdentity } from './i-identity';
import { Claim } from './claim';
export interface ClaimsPrincipal {
claims?: Array<Claim>;
identities?: Array<ClaimsIdentity>;
identity?: IIdentity | null;
}
@@ -1,49 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { CustomAttributeData } from './custom-attribute-data';
import { CallingConventions } from './calling-conventions';
import { MethodImplAttributes } from './method-impl-attributes';
import { Module } from './module';
import { MemberTypes } from './member-types';
export interface ConstructorInfo {
module?: Module;
customAttributes?: Array<CustomAttributeData>;
isCollectible?: boolean;
metadataToken?: number;
methodImplementationFlags?: MethodImplAttributes;
callingConvention?: CallingConventions;
isAbstract?: boolean;
isConstructor?: boolean;
isFinal?: boolean;
isHideBySig?: boolean;
isSpecialName?: boolean;
isStatic?: boolean;
isVirtual?: boolean;
isAssembly?: boolean;
isFamily?: boolean;
isFamilyAndAssembly?: boolean;
isFamilyOrAssembly?: boolean;
isPrivate?: boolean;
isPublic?: boolean;
isConstructedGenericMethod?: boolean;
isGenericMethod?: boolean;
isGenericMethodDefinition?: boolean;
containsGenericParameters?: boolean;
isSecurityCritical?: boolean;
isSecuritySafeCritical?: boolean;
isSecurityTransparent?: boolean;
memberType?: MemberTypes;
}
export namespace ConstructorInfo {
}
@@ -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;
} }
@@ -11,5 +11,6 @@
export interface CreateProviderDto { export interface CreateProviderDto {
price?: number; price?: number;
providerTypeId?: number;
} }
@@ -10,7 +10,11 @@
export interface CreateStaffDto { export interface CreateStaffDto {
firstName?: string | null;
lastName?: string | null;
profession?: string | null;
email?: string | null;
f4T2NumberApproval?: string | null; f4T2NumberApproval?: string | null;
f4T2ExpirationDate?: string; f4T2ExpirationDate?: Date | null;
} }
@@ -1,21 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { CustomAttributeTypedArgument } from './custom-attribute-typed-argument';
import { CustomAttributeNamedArgument } from './custom-attribute-named-argument';
import { ConstructorInfo } from './constructor-info';
export interface CustomAttributeData {
attributeType?: string;
constructor?: ConstructorInfo;
constructorArguments?: Array<CustomAttributeTypedArgument>;
namedArguments?: Array<CustomAttributeNamedArgument>;
}
@@ -1,20 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { CustomAttributeTypedArgument } from './custom-attribute-typed-argument';
import { MemberInfo } from './member-info';
export interface CustomAttributeNamedArgument {
memberInfo?: MemberInfo;
typedValue?: CustomAttributeTypedArgument;
memberName?: string;
isField?: boolean;
}
@@ -1,16 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface CustomAttributeTypedArgument {
argumentType?: string;
value?: any | null;
}
-17
View File
@@ -1,17 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { MethodInfo } from './method-info';
export interface Delegate {
target?: any | null;
method?: MethodInfo;
}
@@ -1,55 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { ActionOfAuthorizationPolicyBuilder } from './action-of-authorization-policy-builder';
import { IdempotencyOptions } from './idempotency-options';
import { EndpointSummary } from './endpoint-summary';
import { EpVersion } from './ep-version';
/**
* represents the configuration settings of an endpoint
*/
export interface EndpointDefinition {
endpointType?: string;
mapperType?: string | null;
preProcessorsList?: Array<object>;
postProcessorsList?: Array<object>;
reqDtoType?: string;
resDtoType?: string;
routes?: Array<string>;
securityPolicyName?: string;
validatorType?: string | null;
verbs?: Array<string>;
version?: EpVersion;
allowAnyPermission?: boolean;
allowedPermissions?: Array<string> | null;
allowAnyScope?: boolean;
allowedScopes?: Array<string> | null;
allowAnyClaim?: boolean;
allowedClaimTypes?: Array<string> | null;
allowedRoles?: Array<string> | null;
anonymousVerbs?: Array<string> | null;
antiforgeryEnabled?: boolean;
authSchemeNames?: Array<string> | null;
dontAutoSend?: boolean;
dontAutoTagEndpoints?: boolean;
dontBindFormData?: boolean;
doNotCatchExceptions?: boolean;
endpointAttributes?: Array<any> | null;
endpointSummary?: EndpointSummary | null;
endpointTags?: Array<string> | null;
formDataContentType?: string | null;
idempotencyOptions?: IdempotencyOptions | null;
overriddenRoutePrefix?: string | null;
preBuiltUserPolicies?: Array<string> | null;
policyBuilder?: ActionOfAuthorizationPolicyBuilder | null;
throwIfValidationFails?: boolean;
}
@@ -1,58 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { GetCommunicationDto } from './get-communication-dto';
import { ClaimsPrincipal } from './claims-principal';
import { EndpointDefinition } from './endpoint-definition';
import { Http } from './http';
import { IWebHostEnvironment } from './i-web-host-environment';
import { ValidationFailure } from './validation-failure';
export interface EndpointOfEmptyRequestAndListOfGetCommunicationDto {
definition?: EndpointDefinition;
httpContext?: object;
validationFailures?: Array<ValidationFailure>;
/**
* the response object that is serialized to the response stream.
*/
response?: Array<GetCommunicationDto> | null;
user?: ClaimsPrincipal;
/**
* Represents a set of key/value application configuration properties.
*/
config?: object;
env?: IWebHostEnvironment;
/**
* Represents a type used to perform logging.
*/
logger?: object;
/**
* the base url of the current request
*/
baseURL?: string;
httpMethod?: Http;
/**
* the form sent with the request. only populated if content-type is \'application/x-www-form-urlencoded\' or \'multipart/form-data\'
*/
form?: Array<any>;
/**
* the files sent with the request. only populated when content-type is \'multipart/form-data\'
*/
files?: Array<any>;
/**
* get or set whether the response has started. you\'d only use this if you\'re writing to the response stream by yourself.
*/
responseStarted?: boolean;
validationFailed?: boolean;
}
export namespace EndpointOfEmptyRequestAndListOfGetCommunicationDto {
}
@@ -1,48 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { RequestExample } from './request-example';
import { ResponseHeader } from './response-header';
/**
* a class used for providing a textual description about an endpoint for swagger
*/
export interface EndpointSummary {
/**
* the short summary of the endpoint
*/
summary?: string;
/**
* the long description of the endpoint
*/
description?: string;
/**
* specify multiple request examples by adding to this collection.
*/
requestExamples?: Array<RequestExample>;
/**
* an example request object to be used in swagger/ openapi. multiple examples can be specified by setting this property multiple times or by adding to the RequestExamples collection.
*/
exampleRequest?: any | null;
/**
* the descriptions for endpoint parameters. you can add descriptions for route/query params and request dto properties. what you specify here will take precedence over xml comments of dto classes (if they are also specified).
*/
params?: { [key: string]: string; };
/**
* the descriptions of the different responses/ status codes an endpoint can return
*/
responses?: { [key: string]: string; };
/**
* the response examples for each status code
*/
responseExamples?: { [key: string]: any; };
responseHeaders?: Array<ResponseHeader>;
}
@@ -1,58 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { GetCommunicationDto } from './get-communication-dto';
import { ClaimsPrincipal } from './claims-principal';
import { EndpointDefinition } from './endpoint-definition';
import { Http } from './http';
import { IWebHostEnvironment } from './i-web-host-environment';
import { ValidationFailure } from './validation-failure';
export interface EndpointWithoutRequestOfListOfGetCommunicationDto {
definition?: EndpointDefinition;
httpContext?: object;
validationFailures?: Array<ValidationFailure>;
/**
* the response object that is serialized to the response stream.
*/
response?: Array<GetCommunicationDto> | null;
user?: ClaimsPrincipal;
/**
* Represents a set of key/value application configuration properties.
*/
config?: object;
env?: IWebHostEnvironment;
/**
* Represents a type used to perform logging.
*/
logger?: object;
/**
* the base url of the current request
*/
baseURL?: string;
httpMethod?: Http;
/**
* the form sent with the request. only populated if content-type is \'application/x-www-form-urlencoded\' or \'multipart/form-data\'
*/
form?: Array<object>;
/**
* the files sent with the request. only populated when content-type is \'multipart/form-data\'
*/
files?: Array<object>;
/**
* get or set whether the response has started. you\'d only use this if you\'re writing to the response stream by yourself.
*/
responseStarted?: boolean;
validationFailed?: boolean;
}
export namespace EndpointWithoutRequestOfListOfGetCommunicationDto {
}
-20
View File
@@ -1,20 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* represents an endpoint version
*/
export interface EpVersion {
current?: number;
startingReleaseVersion?: number;
deprecatedAt?: number;
}
@@ -1,17 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { MethodInfo } from './method-info';
export interface FuncOfObject {
target?: any | null;
method?: MethodInfo;
}
@@ -1,58 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { GetCommunicationDto } from './get-communication-dto';
import { ClaimsPrincipal } from './claims-principal';
import { EndpointDefinition } from './endpoint-definition';
import { Http } from './http';
import { IWebHostEnvironment } from './i-web-host-environment';
import { ValidationFailure } from './validation-failure';
export interface GetAllCommunicationsEndpoint {
definition?: EndpointDefinition;
httpContext?: object;
validationFailures?: Array<ValidationFailure>;
/**
* the response object that is serialized to the response stream.
*/
response?: Array<GetCommunicationDto> | null;
user?: ClaimsPrincipal;
/**
* Represents a set of key/value application configuration properties.
*/
config?: object;
env?: IWebHostEnvironment;
/**
* Represents a type used to perform logging.
*/
logger?: object;
/**
* the base url of the current request
*/
baseURL?: string;
httpMethod?: Http;
/**
* the form sent with the request. only populated if content-type is \'application/x-www-form-urlencoded\' or \'multipart/form-data\'
*/
form?: Array<object>;
/**
* the files sent with the request. only populated when content-type is \'multipart/form-data\'
*/
files?: Array<object>;
/**
* get or set whether the response has started. you\'d only use this if you\'re writing to the response stream by yourself.
*/
responseStarted?: boolean;
validationFailed?: boolean;
}
export namespace GetAllCommunicationsEndpoint {
}
@@ -10,8 +10,14 @@
export interface GetCommunicationDto { export interface GetCommunicationDto {
id?: number;
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;
} }
@@ -12,5 +12,7 @@
export interface GetProviderDto { export interface GetProviderDto {
id?: number; id?: number;
price?: number; price?: number;
providerTypeId?: number;
providerType?: string | null;
} }
+6 -1
View File
@@ -11,7 +11,12 @@
export interface GetStaffDto { export interface GetStaffDto {
id?: number; id?: number;
firstName?: string | null;
lastName?: string | null;
profession?: string | null;
email?: string | null;
f4T2NumberApproval?: string | null; f4T2NumberApproval?: string | null;
f4T2ExpirationDate?: string; f4T2ExpirationDate?: Date | null;
experienceLevel?: string | null;
} }
-27
View File
@@ -1,27 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* enum for specifying a http verb
*/
export const Http = {
NUMBER_1: 1,
NUMBER_2: 2,
NUMBER_3: 3,
NUMBER_4: 4,
NUMBER_5: 5,
NUMBER_6: 6,
NUMBER_7: 7,
NUMBER_8: 8,
NUMBER_9: 9
} as const;
export type Http = typeof Http[keyof typeof Http];
-17
View File
@@ -1,17 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface IIdentity {
name?: string | null;
authenticationType?: string | null;
isAuthenticated?: boolean;
}
@@ -1,19 +0,0 @@
/**
* PyroFetes
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface IWebHostEnvironment {
webRootPath?: string;
/**
* A read-only file provider abstraction.
*/
webRootFileProvider?: object;
}

Some files were not shown because too many files have changed in this diff Show More