diff --git a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.html b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.html index 0b82bd8..069a60a 100644 --- a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.html +++ b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.html @@ -1 +1,117 @@ -

charge-dialog works!

+
+ + +

{{ title }}

+
+ + +
+
+ + Charge + + + Le nom de la charge est obligatoire + + +
+ +
+ + Montant + + + Le montant de la charge est obligatoire + + +
+ +
+ + Description + + +
+ +
+ + Cursus + + + {{ cursus.viewValue }} + + + + Le cursus est obligatoire + + +
+ + + +
+ Status +
+ + + + + + + + +
+
diff --git a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.scss b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.scss index e69de29..6907bb3 100644 --- a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.scss +++ b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.scss @@ -0,0 +1,31 @@ +.form-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 700px !important; + width: 600px !important; +} + +.form-field { + width: 80%; + margin-bottom: 1rem; +} + +mat-card-content { + display: flex; + flex-direction: column; + align-items: center; +} + +mat-card-actions { + width: 80%; + display: flex; + justify-content: space-between; +} + +.full-width { + width: 100%; +} + + diff --git a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.ts b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.ts index d4132a7..f83a027 100644 --- a/src/app/etablissement/charges/charge-dialog/charge-dialog.component.ts +++ b/src/app/etablissement/charges/charge-dialog/charge-dialog.component.ts @@ -1,12 +1,90 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; +import { + FormBuilder, + FormGroup, + FormsModule, + ReactiveFormsModule, + Validators, +} from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatDialogRef } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { + MatSlideToggleModule, + _MatSlideToggleRequiredValidatorModule, +} from '@angular/material/slide-toggle'; @Component({ selector: 'bgui-charge-dialog', standalone: true, - imports: [], + imports: [ + CommonModule, + ReactiveFormsModule, + MatInputModule, + MatFormFieldModule, + MatDatepickerModule, + MatButtonModule, + MatIconModule, + MatCardModule, + MatSelectModule, + MatSlideToggleModule, + FormsModule, + _MatSlideToggleRequiredValidatorModule, + ], templateUrl: './charge-dialog.component.html', - styleUrl: './charge-dialog.component.scss' + styleUrl: './charge-dialog.component.scss', }) export class ChargeDialogComponent { + myForm!: FormGroup; + showAlert: any; + title: string = 'Ajouter une charge'; + + isChecked = true; + + cycles = [ + { value: 'cycle1', viewValue: 'Cycle 1' }, + { value: 'cycle2', viewValue: 'Cycle 2' }, + { value: 'cycle3', viewValue: 'Cycle 3' }, + ]; + + constructor( + private fb: FormBuilder, + private dialogRef: MatDialogRef + ) {} + + ngOnInit(): void { + this.myForm = this.fb.group({ + charge: ['', Validators.required], + montant: ['', Validators.required], + description: [''], + cursus: [''], + status: [''], + }); + } + + onSubmit(): void { + if (this.myForm.valid) { + this.onSave(); + } + } + + onSave(): void { + if (this.myForm.valid) { + console.log(this.myForm.value); + this.dialogRef.close(this.myForm.value); + } + } + + onCancel(): void { + this.dialogRef.close(); + } + } diff --git a/src/app/etablissement/charges/charges.component.html b/src/app/etablissement/charges/charges.component.html index ed92675..31a22b6 100644 --- a/src/app/etablissement/charges/charges.component.html +++ b/src/app/etablissement/charges/charges.component.html @@ -1 +1,169 @@ -

charges works!

+ + +
+
+
+
+
+
+
+
+
+

Charges {{ dataSource.data[0].description }}

+
+
+
+ +
+ +
+
+
+ + Filter + + +
+ +
+
+ + + + + Charges + + {{ + element.charges + }} + + + + + + Description + + {{ + element.description + }} + + + + + + Montant + + {{ + element.montant + }} + + + + + + Date + + {{ + element.date + }} + + + + + Status + + {{ + element.status + }} + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
diff --git a/src/app/etablissement/charges/charges.component.scss b/src/app/etablissement/charges/charges.component.scss index e69de29..3cc09fb 100644 --- a/src/app/etablissement/charges/charges.component.scss +++ b/src/app/etablissement/charges/charges.component.scss @@ -0,0 +1,22 @@ +.cursor { + cursor: pointer; +} + +.text-dark-blue { + color: #003366; /* Replace with your desired color */ +} + +.custom-fee-badge { + background-color: #f5f5f5; /* Replace with your desired background color */ + border-radius: 4px; + width: 75px !important; + padding: 4px 8px; +} + +.small-icon { + font-size: 1.5rem; /* Adjust size as needed */ +} + +.m-3 { + margin: 2rem; +} diff --git a/src/app/etablissement/charges/charges.component.ts b/src/app/etablissement/charges/charges.component.ts index ccd4325..49d5853 100644 --- a/src/app/etablissement/charges/charges.component.ts +++ b/src/app/etablissement/charges/charges.component.ts @@ -1,12 +1,184 @@ -import { Component } from '@angular/core'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { CommonModule } from '@angular/common'; +import { Component, ViewChild } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; +import { MatSort, MatSortModule } from '@angular/material/sort'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterLink, RouterOutlet } from '@angular/router'; +import { MatChipsModule } from '@angular/material/chips'; +import { ChargeDialogComponent } from './charge-dialog/charge-dialog.component'; +import { MatDialog } from '@angular/material/dialog'; + +export interface Element { + description: string; + montant: string; + charges: string; + date: string; + status: string; +} + +const ELEMENT_DATA: Element[] = [ + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Inactive', + }, + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Inactive', + }, + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Active', + }, + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Inactive', + }, + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Inactive', + }, + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + status: 'Active', + }, + { + description: 'Another description', + montant: '50 000 XOF', + charges: 'Example charges', + date: '2024-06-15', + status: 'Active', + }, +]; @Component({ selector: 'bgui-charges', standalone: true, - imports: [], + imports: [ + RouterLink, + MatCardModule, + CommonModule, + MatButtonModule, + MatIconModule, + MatTabsModule, + MatTableModule, + MatPaginatorModule, + MatInputModule, + MatMenuModule, + MatSortModule, + RouterOutlet, + MatChipsModule, + ], templateUrl: './charges.component.html', - styleUrl: './charges.component.scss' + styleUrl: './charges.component.scss', }) export class ChargesComponent { + displayedColumns: string[] = [ + 'charges', + 'montant', + 'description', + 'date', + 'status', + 'actions', + ]; + dataSource = new MatTableDataSource(ELEMENT_DATA); + + ngOnInit() { + console.log(this.dataSource); + } + constructor(private dialog: MatDialog) {} + @ViewChild(MatPaginator) paginator!: MatPaginator; + @ViewChild(MatSort) sort!: MatSort; + + ngAfterViewInit() { + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value; + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + editItem(element: Element) { + // Implémentez la logique pour éditer un élément + console.log('Editing item', element); + } + + deleteItem(element: Element) { + // Implémentez la logique pour supprimer un élément + console.log('Deleting item', element); + } + + inviteCollaborator(element: Element) { + // Implémentez la logique pour inviter un collaborateur + console.log('Inviting collaborator for', element); + } + public openDialog() { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const dialogRef = this.dialog.open(ChargeDialogComponent, { + width: '800px', + height: '1000px', + }); + } } diff --git a/src/app/etablissement/classes/classe-dialog/classe-dialog.component.html b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.html new file mode 100644 index 0000000..6bcb40e --- /dev/null +++ b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.html @@ -0,0 +1,71 @@ +
+ + +

Créer une classe

+
+ + +
+
+ + Cycle + + + {{ cycle.viewValue }} + + + + Le cycle est obligatoire + + +
+ +
+ + Classe + + + La classe est obligatoire + + +
+ +
+ + Description + + +
+ + + + + +
+
diff --git a/src/app/etablissement/classes/classe-dialog/classe-dialog.component.scss b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.scss new file mode 100644 index 0000000..cefe94f --- /dev/null +++ b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.scss @@ -0,0 +1,15 @@ +.form-container { + width: 600px; + height: 400px; + margin: auto; /* Center the form horizontally */ +} + +.form-field { + width: 100% !important; /* Fields occupy 80% of the form's width */ + margin: 0 auto; /* Center the fields horizontally */ +} + +.mat-card { + max-width: 400px; /* Ensure the card does not exceed 400px */ + margin: 0 auto; /* Center the card horizontally */ +} diff --git a/src/app/etablissement/classes/classe-dialog/classe-dialog.component.spec.ts b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.spec.ts new file mode 100644 index 0000000..4eddec1 --- /dev/null +++ b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ClasseDialogComponent } from './classe-dialog.component'; + +describe('ClasseDialogComponent', () => { + let component: ClasseDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ClasseDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ClasseDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/etablissement/classes/classe-dialog/classe-dialog.component.ts b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.ts new file mode 100644 index 0000000..c038359 --- /dev/null +++ b/src/app/etablissement/classes/classe-dialog/classe-dialog.component.ts @@ -0,0 +1,75 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { + FormBuilder, + FormGroup, + ReactiveFormsModule, + Validators, +} from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatDialogRef } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; + +@Component({ + selector: 'bgui-classe-dialog', + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + MatInputModule, + MatFormFieldModule, + MatDatepickerModule, + MatButtonModule, + MatIconModule, + MatCardModule, + MatSelectModule, + ], + templateUrl: './classe-dialog.component.html', + styleUrl: './classe-dialog.component.scss', +}) +export class ClasseDialogComponent { + myForm!: FormGroup; + showAlert: any; + + cycles = [ + { value: 'cycle1', viewValue: 'Cycle 1' }, + { value: 'cycle2', viewValue: 'Cycle 2' }, + { value: 'cycle3', viewValue: 'Cycle 3' }, + ]; + + constructor( + private fb: FormBuilder, + private dialogRef: MatDialogRef + ) {} + + ngOnInit(): void { + this.myForm = this.fb.group({ + cycle: ['', Validators.required], + classe: ['', Validators.required], + description: [''], + }); + } + + onSubmit(): void { + if (this.myForm.valid) { + this.onSave(); + } + } + + onSave(): void { + if (this.myForm.valid) { + console.log(this.myForm.value); + this.dialogRef.close(this.myForm.value); + } + } + + onCancel(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/etablissement/classes/classes.component.html b/src/app/etablissement/classes/classes.component.html index 1c25343..9bb5514 100644 --- a/src/app/etablissement/classes/classes.component.html +++ b/src/app/etablissement/classes/classes.component.html @@ -71,13 +71,13 @@
-
+ +
+
- @@ -209,23 +233,40 @@
-
+
- + + +
+ + Filter + + +
+ +
+
+
+
+
+
+
+
+
+
+

Classe {{ dataSource.data[0].description }}

+
+
+
+ +
+ + +
+
+ +
+ + Filter + + +
+ +
+
+
+ + + + Charges + + {{ + element.charges + }} + + + + + + Description + + {{ + element.description + }} + + + + + + Montant + + {{ + element.montant + }} + + + + + + Date + + {{ + element.date + }} + + + + + + + + + + + + + + + + + + +
+ + + + + + + + diff --git a/src/app/etablissement/classes/consult-classe/consult-classe.component.scss b/src/app/etablissement/classes/consult-classe/consult-classe.component.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/etablissement/classes/consult-classe/consult-classe.component.scss diff --git a/src/app/etablissement/classes/consult-classe/consult-classe.component.spec.ts b/src/app/etablissement/classes/consult-classe/consult-classe.component.spec.ts new file mode 100644 index 0000000..5672f67 --- /dev/null +++ b/src/app/etablissement/classes/consult-classe/consult-classe.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConsultClasseComponent } from './consult-classe.component'; + +describe('ConsultClasseComponent', () => { + let component: ConsultClasseComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ConsultClasseComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ConsultClasseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/etablissement/classes/consult-classe/consult-classe.component.ts b/src/app/etablissement/classes/consult-classe/consult-classe.component.ts new file mode 100644 index 0000000..76102f6 --- /dev/null +++ b/src/app/etablissement/classes/consult-classe/consult-classe.component.ts @@ -0,0 +1,104 @@ +import { CommonModule } from '@angular/common'; +import { Component, ViewChild, AfterViewInit } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatDialog } from '@angular/material/dialog'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; +import { MatSort, MatSortModule } from '@angular/material/sort'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterLink, RouterOutlet } from '@angular/router'; +import { ChargeDialogComponent } from '../../charges/charge-dialog/charge-dialog.component'; + +export interface Element { + description: string; + montant: string; + charges: string; + date: string; +} + +const ELEMENT_DATA: Element[] = [ + { + description: 'Barnoin test', + montant: '100 000 XOF', + charges: 'test', + date: '2023-01-01', + }, +]; + +@Component({ + selector: 'bgui-consult-classe', + standalone: true, + imports: [ + RouterLink, + MatCardModule, + CommonModule, + MatButtonModule, + MatIconModule, + MatTabsModule, + MatTableModule, + MatPaginatorModule, + MatInputModule, + MatMenuModule, + MatSortModule, + RouterOutlet, + ], + templateUrl: './consult-classe.component.html', + styleUrls: ['./consult-classe.component.scss'], +}) +export class ConsultClasseComponent implements AfterViewInit { + displayedColumns: string[] = [ + 'charges', + 'description', + 'montant', + 'date', + 'actions', + ]; + + constructor(private dialog: MatDialog) {} + + dataSource = new MatTableDataSource(ELEMENT_DATA); + + ngOnInit() { + console.log(this.dataSource); + } + + @ViewChild(MatPaginator) paginator!: MatPaginator; + @ViewChild(MatSort) sort!: MatSort; + + ngAfterViewInit() { + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value; + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + editItem(element: Element) { + // Implémentez la logique pour éditer un élément + console.log('Editing item', element); + } + + deleteItem(element: Element) { + // Implémentez la logique pour supprimer un élément + console.log('Deleting item', element); + } + + inviteCollaborator(element: Element) { + // Implémentez la logique pour inviter un collaborateur + console.log('Inviting collaborator for', element); + } + + public openDialog() { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const dialogRef = this.dialog.open(ChargeDialogComponent, { + width: '800px', + height: '1000px', + }); + } +} diff --git a/src/app/etablissement/classes/edit-classe/edit-classe.component.html b/src/app/etablissement/classes/edit-classe/edit-classe.component.html new file mode 100644 index 0000000..e54de42 --- /dev/null +++ b/src/app/etablissement/classes/edit-classe/edit-classe.component.html @@ -0,0 +1 @@ +

edit-classe works!

diff --git a/src/app/etablissement/classes/edit-classe/edit-classe.component.scss b/src/app/etablissement/classes/edit-classe/edit-classe.component.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/etablissement/classes/edit-classe/edit-classe.component.scss diff --git a/src/app/etablissement/classes/edit-classe/edit-classe.component.spec.ts b/src/app/etablissement/classes/edit-classe/edit-classe.component.spec.ts new file mode 100644 index 0000000..2c1c7c2 --- /dev/null +++ b/src/app/etablissement/classes/edit-classe/edit-classe.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditClasseComponent } from './edit-classe.component'; + +describe('EditClasseComponent', () => { + let component: EditClasseComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [EditClasseComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(EditClasseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/etablissement/classes/edit-classe/edit-classe.component.ts b/src/app/etablissement/classes/edit-classe/edit-classe.component.ts new file mode 100644 index 0000000..90e9990 --- /dev/null +++ b/src/app/etablissement/classes/edit-classe/edit-classe.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'bgui-edit-classe', + standalone: true, + imports: [], + templateUrl: './edit-classe.component.html', + styleUrl: './edit-classe.component.scss', +}) +export class EditClasseComponent {} diff --git a/src/app/etablissement/etablissement.component.html b/src/app/etablissement/etablissement.component.html index eb9b696..b92e0f5 100644 --- a/src/app/etablissement/etablissement.component.html +++ b/src/app/etablissement/etablissement.component.html @@ -1,5 +1,3 @@ - - - - - + + + diff --git a/src/app/etablissement/etablissement.routes.ts b/src/app/etablissement/etablissement.routes.ts index 631ebd1..a5eb8f4 100644 --- a/src/app/etablissement/etablissement.routes.ts +++ b/src/app/etablissement/etablissement.routes.ts @@ -3,16 +3,22 @@ import { Routes } from '@angular/router'; import { ViewEtablissementComponent } from './view-etablissement/view-etablissement.component'; import { EtablissementComponent } from './etablissement.component'; import { ChargesComponent } from './charges/charges.component'; -import { ClassesComponent } from './classes/classes.component'; import { MatricesComponent } from './matrices/matrices.component'; import { TransactionsComponent } from './transactions/transactions.component'; +import { ClassesComponent } from './classes/classes.component'; +import { ConsultClasseComponent } from './classes/consult-classe/consult-classe.component'; +import { EditClasseComponent } from './classes/edit-classe/edit-classe.component'; export const etablissementRoutes: Routes = [ { path: '', component: EtablissementComponent, children: [ - { path: '', redirectTo: 'view-etablissement', pathMatch: 'full' }, + { + path: '', + redirectTo: 'view-etablissement', + pathMatch: 'full', + }, { path: 'view-etablissement', @@ -26,6 +32,16 @@ export const etablissementRoutes: Routes = [ path: 'classes', component: ClassesComponent, }, + + { + path: 'classes/edit-classe', + component: EditClasseComponent, + }, + { + path: 'classes/consult-classe', + component: ConsultClasseComponent, + }, + { path: 'transactions', component: TransactionsComponent, diff --git a/src/app/etablissement/preferences/preferences.component.html b/src/app/etablissement/preferences/preferences.component.html index e936c09..0477a48 100644 --- a/src/app/etablissement/preferences/preferences.component.html +++ b/src/app/etablissement/preferences/preferences.component.html @@ -1,302 +1,331 @@ -
-
-
-
- -
-
-
+
+ + +
+
+
+ +
+ Aperçu du logo de l'établissement +
+ - - -
-
-
-
-
-
-
-
- -
- -
-
- - Filtrer - - + +
+
- - - - - Classes - - {{ - element.classes - }} - +
+
+ + Name + + + Name is required + + +
+
- - - - Cycles - - {{ - element.cycles - }} - +
+
+ + Website + + +
+
- - - - Charges associées - - {{ - element.charges - }} - +
+
+ + Phone + + + Phone is required + + +
+
- - - - Date - - {{ - element.date - }} - +
+
+ + Country + + + Country is required + + +
+
- - - - - - - - - - - - - - +
+
+ + City + + + City is required + + +
+
- - -
- -
-
-
+
+
+ + Address + + + Address is required + +
-
-
-
- -
-
-
-
-
-
-
-
- -
- -
-
- - Filtrer - - - - - - - Classes - - {{ - element.classes - }} - +
+
+ + Associer un business + +
+
- - - - Cycles - - {{ - element.cycles - }} - +
+
+ + Business + + + {{ business.viewValue }} + + + +
+
- - - - Charges associées - - {{ - element.charges - }} - + + + + + + + - - - - Date - - {{ - element.date - }} - +
+ - - - - - - - - - - - + + + + + + + --> - - -
- -
-
+ + +

Lien de paiement

+
+ +
+
+
+ + Lien de paiement + + + Le lien de paiement est requis + +
-
-
-
- - + + + + + + + + + + + +

Etablissement par defaut

+
+ +
+
+
+ Logo école + {{ etablissement }} +
+
+ + + + +
+
+
+
+
diff --git a/src/app/etablissement/preferences/preferences.component.scss b/src/app/etablissement/preferences/preferences.component.scss index e69de29..275c6be 100644 --- a/src/app/etablissement/preferences/preferences.component.scss +++ b/src/app/etablissement/preferences/preferences.component.scss @@ -0,0 +1,63 @@ + + +.full-width{ + width: 100% !important; + // margin: 10px; + margin-bottom: 10px; +} + +.d-flex{ + justify-content: space-between; + margin-left: 80px !important; + margin-right: 150px !important; + +} + +button{ + border-radius:0px !important +} + +#statusId{ + margin-left: 3.5rem !important; +} + +#rowStatus, #card-actions-button{ + padding-bottom: 30px !important; +} + + +.preference-card { + max-width: 600px; +// max-height: 1500px !important; + margin:20px !important; +} + + +.preference-card-header{ + justify-content: center; + text-align: center !important; + padding: auto; + margin-bottom: 20px !important; +} + + +#container-etablissement{ + max-height:250px !important; +} + + +#defaultcard{ + max-width: 80% !important; + height: 70px !important; + margin: auto !important; + background-color: rgb(181, 184, 185); +} + + +.d-flex[_ngcontent-ng-c4117379772] { + justify-content: space-between; + margin-left: 80px !important; + margin-right: 150px !important; +} + + diff --git a/src/app/etablissement/preferences/preferences.component.ts b/src/app/etablissement/preferences/preferences.component.ts index 50ff4a4..b4f11e7 100644 --- a/src/app/etablissement/preferences/preferences.component.ts +++ b/src/app/etablissement/preferences/preferences.component.ts @@ -1,158 +1,161 @@ -import { Component, ViewChild } from '@angular/core'; -import { RouterLink } from '@angular/router'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { Component } from '@angular/core'; +import { Router, RouterLink } from '@angular/router'; import { MatTabsModule } from '@angular/material/tabs'; import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; +import { + FormBuilder, + FormGroup, + FormsModule, + ReactiveFormsModule, + Validators, +} from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; -import { MatTableDataSource, MatTableModule } from '@angular/material/table'; -import { CreateTpeComponent } from 'src/app/tpe/create-tpe/create-tpe.component'; - - -export interface Element { - classes: string; - cycles: string; - charges: string; - date: string; - actions: string; -} - -const ELEMENT_DATA: Element[] = [ - { - classes: 'Classe 1', - cycles: 'Cycle 1', - charges: 'Charge 1', - date: '2023-01-01', - actions: 'Action 1', - }, - { - classes: 'Classe 2', - cycles: 'Cycle 2', - charges: 'Charge 2', - date: '2023-02-01', - actions: 'Action 2', - }, - { - classes: 'Classe 3', - cycles: 'Cycle 3', - charges: 'Charge 3', - date: '2023-03-01', - actions: 'Action 3', - }, - { - classes: 'Classe 4', - cycles: 'Cycle 4', - charges: 'Charge 4', - date: '2023-04-01', - actions: 'Action 4', - }, - { - classes: 'Classe 5', - cycles: 'Cycle 5', - charges: 'Charge 5', - date: '2023-05-01', - actions: 'Action 5', - }, - { - classes: 'Classe 6', - cycles: 'Cycle 6', - charges: 'Charge 6', - date: '2023-06-01', - actions: 'Action 6', - }, - { - classes: 'Classe 7', - cycles: 'Cycle 7', - charges: 'Charge 7', - date: '2023-07-01', - actions: 'Action 7', - }, - { - classes: 'Classe 8', - cycles: 'Cycle 8', - charges: 'Charge 8', - date: '2023-08-01', - actions: 'Action 8', - }, - { - classes: 'Classe 9', - cycles: 'Cycle 9', - charges: 'Charge 9', - date: '2023-09-01', - actions: 'Action 9', - }, - { - classes: 'Classe 10', - cycles: 'Cycle 10', - charges: 'Charge 10', - date: '2023-10-01', - actions: 'Action 10', - }, -]; - - +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatTableModule } from '@angular/material/table'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatDialogRef } from '@angular/material/dialog'; +import { AuthService } from 'src/app/_helpers/services/auth.service'; +import { DialogEtablissementComponent } from '../view-etablissement/dialog-etablissement/dialog-etablissement.component'; @Component({ selector: 'bgui-preferences', standalone: true, imports: [ - RouterLink, - MatTabsModule, - MatCardModule, CommonModule, MatButtonModule, MatIconModule, + MatTabsModule, MatTableModule, + MatInputModule, + RouterLink, FormsModule, + MatCardModule, MatPaginatorModule, - MatInputModule, - MatMenuModule, + ReactiveFormsModule, + MatFormFieldModule, + MatSelectModule, + MatDatepickerModule, + MatCheckboxModule, + MatSlideToggleModule, ], templateUrl: './preferences.component.html', styleUrl: './preferences.component.scss', }) export class PreferencesComponent { - deleteItem(_t101: any) { - throw new Error('Method not implemented.'); + copyLink() { + const paymentLink = this.lienForm.get('paymentLink')!.value; + if (paymentLink) { + navigator.clipboard.writeText(paymentLink).then(() => { + alert('Lien copié dans le presse-papiers'); + }); + } + } + shareLink() { + const paymentLink = this.lienForm.get('paymentLink')!.value; + if (paymentLink) { + if (navigator.share) { + navigator + .share({ + title: 'Lien de paiement', + text: 'Voici le lien de paiement:', + url: paymentLink, + }) + .catch(error => { + console.error('Error sharing', error); + }); + } else { + alert("Le partage n'est pas pris en charge par votre navigateur."); + } + } } - editItem(_t101: any) { + onFileSelected($event: Event) { throw new Error('Method not implemented.'); } - inviteCollaborator(_t101: any) { + etablissement: string = 'Barnoin'; + onSubmit() { throw new Error('Method not implemented.'); } - setDefault(_t101: any) { + onCancel() { throw new Error('Method not implemented.'); } - displayedColumns: string[] = [ - 'classes', - 'cycles', - 'charges', - 'date', - 'actions', + + etablishmentForm: FormGroup; + lienForm: FormGroup; + + countries = [ + { value: 'CI', viewValue: "Cote d'ivoire" }, + { value: 'SN', viewValue: 'Senegal' }, + { value: 'ML', viewValue: 'Mali' }, + { value: 'GN', viewValue: 'Guinée' }, + { value: 'BF', viewValue: 'Burkina Faso' }, + { value: 'NE', viewValue: 'Niger' }, + { value: 'TG', viewValue: 'Togo' }, + { value: 'BJ', viewValue: 'Bénin' }, + { value: 'CM', viewValue: 'Cameroun' }, + { value: 'CD', viewValue: 'Congo RDC CDF' }, + { value: 'KM', viewValue: 'Comores' }, + { value: 'FR', viewValue: 'France' }, ]; - dataSource = new MatTableDataSource(ELEMENT_DATA); - @ViewChild(MatPaginator) paginator!: MatPaginator; - element: any; - dialog: any; - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value; - this.dataSource.filter = filterValue.trim().toLowerCase(); - } - ngAfterViewInit() { - this.dataSource.paginator = this.paginator; - } + business = [ + { value: 'CI', viewValue: "Cote d'ivoire" }, + { value: 'SN', viewValue: 'Senegal' }, + { value: 'ML', viewValue: 'Mali' }, + { value: 'GN', viewValue: 'Guinée' }, + { value: 'BF', viewValue: 'Burkina Faso' }, + { value: 'NE', viewValue: 'Niger' }, + { value: 'TG', viewValue: 'Togo' }, + { value: 'BJ', viewValue: 'Bénin' }, + { value: 'CM', viewValue: 'Cameroun' }, + { value: 'CD', viewValue: 'Congo RDC CDF' }, + { value: 'KM', viewValue: 'Comores' }, + { value: 'FR', viewValue: 'France' }, + ]; + + hide = true; + + public myForm!: FormGroup; + activites: any; + fonctions: any; + services: any; + groupes: any; + isChecked!: boolean; + country: any; + + constructor( + private fb: FormBuilder, + private authservice: AuthService + // private dialogRef: MatDialogRef, + // private router: Router + ) { + this.etablishmentForm = this.fb.group({ + name: ['', Validators.required], + website: [''], + logo: [''], + phone: [''], + country: ['', Validators.required], + city: [''], + address: ['', Validators.required], + business: [false], + businessSelect: [''], + schoolLevels: this.fb.group({ + maternelle: this.fb.array([]), + primaire: this.fb.array([]), + college: this.fb.array([]), + lycee: this.fb.array([]), + }), + }); - public openDialog() { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const dialogRef = this.dialog.open(CreateTpeComponent, { - width: '800px', - height: '1000px', + this.lienForm = this.fb.group({ + paymentLink: ['', Validators.required], }); } } diff --git a/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.html b/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.html index 37129e6..645d0bc 100644 --- a/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.html +++ b/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.html @@ -160,3 +160,5 @@ + + diff --git a/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.ts b/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.ts index caebddf..31e5570 100644 --- a/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.ts +++ b/src/app/etablissement/view-etablissement/dialog-etablissement/dialog-etablissement.component.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; import { diff --git a/src/app/etablissement/view-etablissement/view-etablissement.component.html b/src/app/etablissement/view-etablissement/view-etablissement.component.html index 32c4c74..8228d8e 100644 --- a/src/app/etablissement/view-etablissement/view-etablissement.component.html +++ b/src/app/etablissement/view-etablissement/view-etablissement.component.html @@ -1,4 +1,3 @@ -
@@ -22,11 +21,11 @@
-
+ +
+
+ [routerLink]="['/etablissement/preferences']"> arrow_circle_right Passer sur cet établissement diff --git a/src/app/tpe/groupe-tpe/groupe-tpe.component.html b/src/app/tpe/groupe-tpe/groupe-tpe.component.html index cce1f32..6283bc9 100644 --- a/src/app/tpe/groupe-tpe/groupe-tpe.component.html +++ b/src/app/tpe/groupe-tpe/groupe-tpe.component.html @@ -19,6 +19,7 @@ (click)="openDialog()" style="border-radius: 15px" class="btn btn-sl btn-success m-5"> + add Ajouter un groupe diff --git a/src/app/utilisateurs/utilisateurs.component.html b/src/app/utilisateurs/utilisateurs.component.html index fd9281d..4507265 100644 --- a/src/app/utilisateurs/utilisateurs.component.html +++ b/src/app/utilisateurs/utilisateurs.component.html @@ -1,13 +1,16 @@ -
+
-
Utilisateur
- {{ - date | date: 'dd/MM/yyyy HH:mm:ss' - }} +
diff --git a/src/app/utilisateurs/utilisateurs.component.scss b/src/app/utilisateurs/utilisateurs.component.scss index e8799a9..e69de29 100644 --- a/src/app/utilisateurs/utilisateurs.component.scss +++ b/src/app/utilisateurs/utilisateurs.component.scss @@ -1,7 +0,0 @@ -.bold-text { - color:blue; - font-weight: bold; - font-size: 16px; /* Ajustez la taille de la police selon vos besoins */ -} - - diff --git a/src/app/utilisateurs/view-user/view-user.component.html b/src/app/utilisateurs/view-user/view-user.component.html index 96e6b41..81c61e6 100644 --- a/src/app/utilisateurs/view-user/view-user.component.html +++ b/src/app/utilisateurs/view-user/view-user.component.html @@ -24,6 +24,7 @@ style="border-radius: 15px" [routerLink]="['/utilisateurs/create-users']" class="btn btn-sl btn-success m-5"> + add Ajouter
@@ -96,7 +97,6 @@ {{ user.email }} - Actions - -