Commit 0e9b53cc by zadi francice

16/05/2024

parent d57ad174
...@@ -41,7 +41,7 @@ export class AuthService { ...@@ -41,7 +41,7 @@ export class AuthService {
return ( return (
this.http this.http
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
.post<any>('http://192.168.1.223:8000/api/token/verify/', body, { .post<any>('http://192.168.1.223:8001/api/token/verify/', body, {
headers, headers,
observe: 'response', observe: 'response',
}) })
...@@ -64,7 +64,7 @@ export class AuthService { ...@@ -64,7 +64,7 @@ export class AuthService {
this.http this.http
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
.post<any>( .post<any>(
'http://192.168.1.223:8000/api/token/', 'http://192.168.1.223:8001/api/token/',
user, user,
this.httpOptions this.httpOptions
) )
...@@ -89,7 +89,7 @@ export class AuthService { ...@@ -89,7 +89,7 @@ export class AuthService {
this.http this.http
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
.post<any>( .post<any>(
'http://192.168.1.223:8000/api-token-refresh/', 'http://192.168.1.223:8001/api-token-refresh/',
{ token: this.token }, { token: this.token },
this.httpOptions this.httpOptions
) )
......
export interface IOperateur {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
name: any;
id: number;
code: string;
liens: string;
etat: true;
status: number;
information: string;
}
export interface ITransaction {
transaction_id: number;
type_paiement: number;
type_paiement_label: string;
marchand: string;
service: string;
montant: number;
date: Date;
commentaire: string;
etat: boolean;
status: number;
reference: string;
}
// interface ITypeOperateur {
// id_type_paiement: number;
// label: string;
// total_montant: number;
// }
// interface ITransaction {
// type_paiement: number;
// type_paiement_label: string;
// marchand: string;
// service: string;
// montant: number;
// date: string;
// commentaire: string;
// etat: boolean;
// status: number;
// reference: string;
// transaction_id: number;
// }
// interface IMerchantData {
// merchant_key: string;
// solde: number;
// total_transaction: number;
// total_journee: number;
// revesement: number;
// type_operateur: ITypeOperateur[];
// last_five_transactions: ITransaction[];
// }
import { TestBed } from '@angular/core/testing';
import { OperateurService } from './operateur.service';
describe('OperateurService', () => {
let service: OperateurService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(OperateurService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { IOperateur } from 'src/app/_interfaces/trafics/operateur/operateur';
@Injectable({
providedIn: 'root',
})
export class OperateurService {
private OpUrl = 'http://192.168.1.223:8001/operateur/';
constructor(
private http: HttpClient
// public operateur: IOperateur
) {}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
getOperator(): Observable<any> {
return this.http.get<IOperateur[]>(this.OpUrl);
}
}
import { TestBed } from '@angular/core/testing';
import { PaiementService } from './paiement.service';
describe('PaiementService', () => {
let service: PaiementService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(PaiementService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class PaiementService {
constructor() {}
}
import { TestBed } from '@angular/core/testing';
import { TransactionService } from './transaction.service';
describe('TransactionService', () => {
let service: TransactionService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(TransactionService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, catchError, throwError } from 'rxjs';
import { ITransaction } from 'src/app/_interfaces/trafics/transaction/transaction';
@Injectable({
providedIn: 'root',
})
export class TransactionService {
//private HtUrl = 'http://192.168.1.223:8001/transactions/';
private HtUrl = 'http://192.168.1.223:8001/api/tableau_bord/1/';
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
};
constructor(private httpClient: HttpClient) {}
getAll(): Observable<ITransaction[]> {
return this.httpClient
.get<ITransaction[]>(this.HtUrl)
.pipe(catchError(this.errorHandler));
}
create(transaction: ITransaction): Observable<ITransaction> {
return this.httpClient
.post<ITransaction>(
this.HtUrl,
JSON.stringify(transaction),
this.httpOptions
)
.pipe(catchError(this.errorHandler));
}
find(transaction_id: number): Observable<ITransaction> {
return this.httpClient
.get<ITransaction>(`${this.HtUrl}/${transaction_id}`)
.pipe(catchError(this.errorHandler));
}
update(
transaction_id: number,
transaction: ITransaction
): Observable<ITransaction> {
const url = `${this.HtUrl}/${transaction_id}`;
return this.httpClient
.put<ITransaction>(url, transaction, this.httpOptions)
.pipe(catchError(this.errorHandler));
}
// update(transaction_id: number, transaction: ITransaction): Observable<ITransaction> {
// return this.httpClient;
// transaction.pipe(catchError(this.errorHandler));
// }
delete(transaction_id: number) {
return this.httpClient
.delete(`${this.HtUrl}/${transaction_id}`, this.httpOptions)
.pipe(catchError(this.errorHandler));
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
errorHandler(error: any) {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
errorMessage = error.error.message;
} else {
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
return throwError(errorMessage);
}
}
...@@ -21,7 +21,10 @@ ...@@ -21,7 +21,10 @@
<ul class="fxt-socials"></ul> <ul class="fxt-socials"></ul>
</div> </div>
<div class="fxt-form"> <div class="fxt-form">
<form name="form" #f="ngForm" (ngSubmit)="user.valid && onSubmit()"> <form
name="form"
#f="ngForm"
(ngSubmit)="f.form.valid && onSubmit()">
<div class="form-group"> <div class="form-group">
<div class="fxt-transformY-50 fxt-transition-delay-1"> <div class="fxt-transformY-50 fxt-transition-delay-1">
<mat-form-field class="gui-form-width" appearance="fill"> <mat-form-field class="gui-form-width" appearance="fill">
...@@ -31,7 +34,7 @@ ...@@ -31,7 +34,7 @@
matInput matInput
placeholder="pat@example.com" placeholder="pat@example.com"
name="email" name="email"
[(ngModel)]="user.username" [(ngModel)]="form.email"
required /> required />
<!-- <mat-error *ngIf="email.invalid" >{{ <!-- <mat-error *ngIf="email.invalid" >{{
getErrorMessage() getErrorMessage()
...@@ -42,12 +45,12 @@ ...@@ -42,12 +45,12 @@
class="form_error" class="form_error"
style="color: red" style="color: red"
*ngIf=" *ngIf="
username.errors && email.errors &&
f.submitted && f.submitted &&
username.touched && email.touched &&
username.invalid email.invalid
"> ">
<div *ngIf="user.errors?.required">username est Requis!</div> <div *ngIf="form.errors?.required">Email est Requis!</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
...@@ -59,25 +62,27 @@ ...@@ -59,25 +62,27 @@
[type]="hide ? 'password' : 'text'" [type]="hide ? 'password' : 'text'"
id="password" id="password"
name="password" name="password"
[(ngModel)]="user.password" [(ngModel)]="form.password"
required required
minlength="5" /> minlength="8" />
<button <button
mat-icon-button mat-icon-button
matSuffix matSuffix
(click)="hide = !hide" (click)="hide = !hide"
[attr.aria-label]="'Hide password'" [attr.aria-label]="'Hide password'"
[attr.aria-pressed]="hide"> [attr.aria-pressed]="hide">
<mat-icon>visibility</mat-icon> <mat-icon>{{
hide ? 'visibility_off' : 'visibility'
}}</mat-icon>
</button> </button>
</mat-form-field> </mat-form-field>
</div> </div>
<div class="form_error" style="color: red" *ngIf="f.submitted"> <div class="form_error" style="color: red" *ngIf="f.submitted">
<div *ngIf="user.password.errors?.required"> <div *ngIf="form.password.errors?.required">
Le mot de passe est obligatoire Le mot de passe est obligatoire
</div> </div>
<div *ngIf="user.password.errors?.minlength"> <div *ngIf="form.password.errors?.minlength">
Le mot de passe doit contenir au moins 5 caractères Le mot de passe doit contenir au moins 8 caractères
</div> </div>
</div> </div>
</div> </div>
...@@ -98,7 +103,7 @@ ...@@ -98,7 +103,7 @@
<div class="form-group m-b-125"> <div class="form-group m-b-125">
<div class="fxt-transformY-50 fxt-transition-delay-4"> <div class="fxt-transformY-50 fxt-transition-delay-4">
<button <button
(click)="login()" (click)="connexionlogin()"
[disabled]="f.invalid" [disabled]="f.invalid"
[disabled]="!password" [disabled]="!password"
mat-raised-button mat-raised-button
......
// import { Component, OnInit, inject } from '@angular/core';
// import { CommonModule } from '@angular/common';
// import {
// FormControl,
// FormsModule,
// ReactiveFormsModule,
// Validators,
// } from '@angular/forms';
// import { CarouselComponent } from '../../../shared/carousel/carousel.component';
// import { MatFormFieldModule } from '@angular/material/form-field';
// import { MatInputModule } from '@angular/material/input';
// import { MatButtonModule } from '@angular/material/button';
// import { MatIconModule } from '@angular/material/icon';
// import { MatCheckboxModule } from '@angular/material/checkbox';
// import { Router, RouterLink } from '@angular/router';
// import { AuthService } from 'src/app/_helpers/services/auth.service';
// @Component({
// selector: 'bgui-login-standard-user',
// standalone: true,
// imports: [
// CommonModule,
// CarouselComponent,
// MatFormFieldModule,
// ReactiveFormsModule,
// MatInputModule,
// MatButtonModule,
// MatIconModule,
// MatCheckboxModule,
// RouterLink,
// FormsModule,
// ],
// templateUrl: './login-standard-user.component.html',
// styleUrls: ['./login-standard-user.component.scss'],
// providers: [AuthService],
// })
// export class LoginStandardUserComponent implements OnInit {
// router = inject(Router);
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
// //authService: any;
// constructor(private authService: AuthService) {}
// images = [
// {
// imageSrc: './assets/images/carousel-auth/orange-with-variant.png',
// imageAlt: 'nature1',
// },
// {
// imageSrc: './assets/images/carousel-auth/silver-modern-with-variant.png',
// imageAlt: 'nature1',
// },
// ];
// username = new FormControl('', [Validators.required]);
// password = new FormControl('', [Validators.required]);
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
// user: any = {
// username: '',
// password: '',
// };
// getErrorMessage() {
// if (this.username.hasError('required')) {
// return 'Impossible de trouver votre compte Beasy';
// }
// return this.username.hasError('email') ? 'Identifiant non valide' : '';
// }
// getErrorAuth() {
// this.msgAuth = '';
// }
// hide = true;
// isActive = false;
// msgAuth = '';
// // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
// ngOnInit() {
// this.user = {
// username: '',
// password: '',
// };
// }
// login() {
// console.log('Username:', this.user);
// this.authService.login({
// username: this.user.username,
// password: this.user.password,
// });
// let token: string;
// console.log('Token ==> ', this.authService.token);
// if (this.authService.token) {
// token = this.authService.token;
// } else {
// const localStorageToken = localStorage.getItem('token');
// token = localStorageToken ? String(localStorageToken) : '';
// }
// console.log('Token ==> ', token);
// if (token) {
// this.authService.verifyToken(token).subscribe(result => {
// if (result.status) {
// console.log('Token vérifié avec succès');
// console.log('accessToken', token);
// localStorage.setItem('isLoggedIn', 'true');
// localStorage.setItem('token', token);
// localStorage.setItem('username', this.user.username);
// // Remplacez 'dash' par l'URL de la page à laquelle vous souhaitez rediriger
// console.log("Redirection vers 'dash'");
// this.router.navigate(['/admin']);
// } else {
// console.error('Erreur lors de la vérification du token');
// }
// });
// } else {
// console.log('Token non trouvé');
// }
// }
// refreshToken() {
// this.authService.refreshToken();
// }
// logout() {
// this.authService.logout();
// }
// onSubmit() {}
// }
import { Component, OnInit, inject } from '@angular/core'; import { Component, OnInit, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { import {
...@@ -13,7 +146,6 @@ import { MatButtonModule } from '@angular/material/button'; ...@@ -13,7 +146,6 @@ import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon'; import { MatIconModule } from '@angular/material/icon';
import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatCheckboxModule } from '@angular/material/checkbox';
import { Router, RouterLink } from '@angular/router'; import { Router, RouterLink } from '@angular/router';
import { AuthService } from 'src/app/_helpers/services/auth.service';
@Component({ @Component({
selector: 'bgui-login-standard-user', selector: 'bgui-login-standard-user',
...@@ -32,15 +164,8 @@ import { AuthService } from 'src/app/_helpers/services/auth.service'; ...@@ -32,15 +164,8 @@ import { AuthService } from 'src/app/_helpers/services/auth.service';
], ],
templateUrl: './login-standard-user.component.html', templateUrl: './login-standard-user.component.html',
styleUrls: ['./login-standard-user.component.scss'], styleUrls: ['./login-standard-user.component.scss'],
providers: [AuthService],
}) })
export class LoginStandardUserComponent implements OnInit { export class LoginStandardUserComponent implements OnInit {
router = inject(Router);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
//authService: any;
constructor(private authService: AuthService) {}
images = [ images = [
{ {
imageSrc: './assets/images/carousel-auth/orange-with-variant.png', imageSrc: './assets/images/carousel-auth/orange-with-variant.png',
...@@ -52,21 +177,20 @@ export class LoginStandardUserComponent implements OnInit { ...@@ -52,21 +177,20 @@ export class LoginStandardUserComponent implements OnInit {
}, },
]; ];
username = new FormControl('', [Validators.required]); email = new FormControl('', [Validators.required, Validators.email]);
password = new FormControl('', [Validators.required]); password = new FormControl('', [Validators.required]);
// eslint-disable-next-line @typescript-eslint/no-explicit-any form: any = {
user: any = { email: '',
username: '',
password: '', password: '',
}; };
getErrorMessage() { getErrorMessage() {
if (this.username.hasError('required')) { if (this.email.hasError('required')) {
return 'Impossible de trouver votre compte Beasy'; return 'Impossible de trouver votre compte Beasy';
} }
return this.username.hasError('email') ? 'Identifiant non valide' : ''; return this.email.hasError('email') ? 'Adresse e-mail non valide' : '';
} }
getErrorAuth() { getErrorAuth() {
...@@ -77,56 +201,48 @@ export class LoginStandardUserComponent implements OnInit { ...@@ -77,56 +201,48 @@ export class LoginStandardUserComponent implements OnInit {
isActive = false; isActive = false;
msgAuth = ''; msgAuth = '';
private router = inject(Router);
// constructor(private router:Router) {
// //...
// }
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
ngOnInit() { ngOnInit(): void {
this.user = { //...
username: '',
password: '',
};
} }
login() {
console.log('Username:', this.user); onSubmit(): void {
this.authService.login({ console.log(this.form);
username: this.user.username, this.connexionlogin();
password: this.user.password,
});
let token: string;
console.log('Token ==> ', this.authService.token);
if (this.authService.token) {
token = this.authService.token;
} else {
const localStorageToken = localStorage.getItem('token');
token = localStorageToken ? String(localStorageToken) : '';
} }
console.log('Token ==> ', token); connexionlogin() {
if (token) { //console.log("Nous sommes ici");
this.authService.verifyToken(token).subscribe(result => { if (
if (result.status) { this.form.email === 'mrfrancice@gmail.com' &&
console.log('Token vérifié avec succès'); this.form.password === 'p@ssw0rd'
console.log('accessToken', token); ) {
localStorage.setItem('isLoggedIn', 'true'); localStorage.setItem('isLoggedIn', 'true');
localStorage.setItem('token', token); localStorage.setItem('token', this.form.email);
localStorage.setItem('username', this.user.username); // Remplacez 'page-accueil' par l'URL de la page à laquelle vous souhaitez rediriger
// Remplacez 'dash' par l'URL de la page à laquelle vous souhaitez rediriger
console.log("Redirection vers 'dash'"); console.log("Redirection vers 'dash'");
this.router.navigate(['/admin']); this.router.navigate(['/admin']);
//window.location.href = '/';
} else { } else {
console.error('Erreur lors de la vérification du token'); this.router.navigate(['/auth']);
} this.msgAuth = 'Login ou PassWord incorrect...';
});
} else {
console.log('Token non trouvé');
} }
} }
refreshToken() { // deconnxionlogin()
this.authService.refreshToken(); // {
}
logout() {
this.authService.logout();
}
onSubmit() {} // localStorage.setItem('isLoggedIn', "false");
// localStorage.removeItem('token');
// // // Remplacez 'page-accueil' par l'URL de la page à laquelle vous souhaitez rediriger
// // console.log("Redirection vers 'dash'");
// // this.router.navigate(['/admin']);
// // //window.location.href = '/';
// }
} }
import { Component, type OnInit } from '@angular/core'; import { Component, type OnInit } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { PagetitleComponent } from '../shared/ui/pagetitle/pagetitle.component'; import { PagetitleComponent } from '../shared/ui/pagetitle/pagetitle.component';
import {RouterOutlet} from "@angular/router"; import { RouterLink, RouterOutlet } from '@angular/router';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { FormsModule } from '@angular/forms';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatPaginatorModule } from '@angular/material/paginator';
import { MatTableModule } from '@angular/material/table';
import { IOperateur } from '../_interfaces/trafics/operateur/operateur';
import { ITransaction } from '../_interfaces/trafics/transaction/transaction';
import { TransactionService } from '../_services/trafics/transaction/transaction.service';
@Component({ @Component({
selector: 'bgui-admin-test', selector: 'bgui-admin-test',
standalone: true, standalone: true,
imports: [CommonModule, PagetitleComponent, RouterOutlet], imports: [
MatFormFieldModule,
MatInputModule,
MatTableModule,
MatPaginatorModule,
CommonModule,
HttpClientModule,
RouterLink,
FormsModule,
CommonModule,
PagetitleComponent,
RouterOutlet,
],
templateUrl: './admin-test.component.html', templateUrl: './admin-test.component.html',
styleUrls: ['./admin-test.component.scss'], styleUrls: ['./admin-test.component.scss'],
}) })
export class AdminTestComponent implements OnInit { export class AdminTestComponent implements OnInit {
// biome-ignore lint/complexity/noBannedTypes: <explanation> //private url = 'http://192.168.1.223:8001/operateur/';
breadCrumbItems: Array<{}> | undefined; breadCrumbItems: Array<{}> | undefined;
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
dataSource: any; transactions: ITransaction[] = [];
operateurs: IOperateur[] = [];
// biome-ignore lint/complexity/noUselessConstructor: <explanation> selectedOperateur: string = '';
constructor() {}
ngOnInit() { constructor(
this.breadCrumbItems = [ private httpClient: HttpClient,
{ label: 'Résumé Des Transactions.' }, public transactionService: TransactionService
/* { label: 'Invoice List', active: true },*/ //public operateur: IOperateur
]; ) {}
ngOnInit(): void {
this.transactionService.getAll().subscribe((data: ITransaction[]) => {
this.transactions = data;
console.log('transactions===>', this.transactions);
//this.fetchOperateurs();
});
} }
displayedColumns: string[] = [
'transaction_id',
//'type_paiement',
'type_paiement_label',
'marchand',
'service',
'montant',
'date',
'commentaire',
'etat',
'status',
'reference',
];
// dataSource = new MatTableDataSource(this.transactions);
// @ViewChild(MatPaginator) paginator!: MatPaginator | undefined;
// constructor() {}
// ngOnInit() {
// this.breadCrumbItems = [
// { label: 'Résumé Des Transactions.' },
// /* { label: 'Invoice List', active: true },*/
// ];
// }
} }
...@@ -162,7 +162,7 @@ const ELEMENT_DATA: PElement[] = [ ...@@ -162,7 +162,7 @@ const ELEMENT_DATA: PElement[] = [
styleUrl: './suivi-paiement.component.scss', styleUrl: './suivi-paiement.component.scss',
}) })
export class SuiviPaiementComponent { export class SuiviPaiementComponent {
private url = 'http://192.168.1.223:8000/operateur/'; private url = 'http://192.168.1.223:8001/operateur/';
operateurs: IOperateur[] = []; operateurs: IOperateur[] = [];
selectedOperateur: string = ''; selectedOperateur: string = '';
......
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
<ng-container matColumnDef="date"> <ng-container matColumnDef="date">
<mat-header-cell *matHeaderCellDef> Date </mat-header-cell> <mat-header-cell *matHeaderCellDef> Date </mat-header-cell>
<mat-cell *matCellDef="let transaction"> <mat-cell *matCellDef="let transaction">
{{ transaction.date }} {{ transaction.date | date: 'dd/mm/yyyy' }}
</mat-cell> </mat-cell>
</ng-container> </ng-container>
...@@ -153,12 +153,3 @@ ...@@ -153,12 +153,3 @@
[showFirstLastButtons]="true"> [showFirstLastButtons]="true">
</mat-paginator> </mat-paginator>
</div> </div>
<!-- id ID[...]
transaction_id* Transaction id[...]
action* Action[...]
date Date[...]
description* Description[...]
marchand_code* Marchand code[...]
service_code* Service code[...]
type_paiement_code* Type paiement code -->
...@@ -30,7 +30,7 @@ import { FormsModule } from '@angular/forms'; ...@@ -30,7 +30,7 @@ import { FormsModule } from '@angular/forms';
export class SuiviTransactionComponent { export class SuiviTransactionComponent {
//private HtUrl = 'http://192.168.1.223:8000/transaction-history/'; //private HtUrl = 'http://192.168.1.223:8000/transaction-history/';
private url = 'http://192.168.1.223:8000/operateur/'; private url = 'http://192.168.1.223:8001/operateur/';
transactions: ITransaction[] = []; transactions: ITransaction[] = [];
operateurs: IOperateur[] = []; operateurs: IOperateur[] = [];
......
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { RouterLink } from '@angular/router';
import { CarouselComponent } from 'src/app/shared/carousel/carousel.component';
@Component({ @Component({
selector: 'bgui-create-users', selector: 'bgui-create-users',
standalone: true, standalone: true,
imports: [], imports: [
CommonModule,
CarouselComponent,
MatFormFieldModule,
ReactiveFormsModule,
MatInputModule,
MatButtonModule,
MatIconModule,
MatCheckboxModule,
RouterLink,
FormsModule,
],
templateUrl: './create-users.component.html', templateUrl: './create-users.component.html',
styleUrl: './create-users.component.scss', styleUrl: './create-users.component.scss',
}) })
export class CreateUsersComponent {} export class CreateUsersComponent {
name!: string;
lastName!: string;
email!: string;
password!: string;
ffPassword!: string;
images = [
{
imageSrc: './assets/images/carousel-auth/orange-with-variant.png',
imageAlt: 'nature1',
},
{
imageSrc: './assets/images/carousel-auth/silver-modern-with-variant.png',
imageAlt: 'nature1',
},
];
isActive = false;
register() {}
}
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { DeleteUserComponent } from './delete-user.component';
describe('DeleteUserComponent', () => {
let component: DeleteUserComponent;
let fixture: ComponentFixture<DeleteUserComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [DeleteUserComponent]
})
.compileComponents();
fixture = TestBed.createComponent(DeleteUserComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
@Component({
selector: 'bgui-delete-user',
standalone: true,
imports: [CommonModule],
templateUrl: './delete-user.component.html',
styleUrl: './delete-user.component.scss',
})
export class DeleteUserComponent {}
<div class="content sm-gutter">
<!-- END DASHBOARD TILES -->
<div class="row">
<!-- BEGIN WORLD MAP WIDGET - MAP -->
<div class="col-md-12 col-vlg-12 m-b-10">
<div class="row-fluid">
<div class="span12">
<div class="grid simple">
<div class="card">
<div class="card-title">
<div class="card-body m-3">
<h5 class="mb-3">Modifer Utilisateur</h5>
<form
method="post"
action="add_ppci_other_user"
class="add_ppci_other_user">
<div class="row">
<div class="col-md-5 mb-2">
<input
type="text"
placeholder="Nom"
class="form-control"
name="first_name"
value=""
required="" />
</div>
<div class="col-md-5">
<input
type="text"
placeholder="Prénoms"
class="form-control"
name="last_name"
value=""
required="" />
</div>
<div class="col-md-5">
<input
type="email"
placeholder="Email"
class="form-control"
name="username"
value=""
required="" />
</div>
<div class="col-md-5">
<input
type="text"
placeholder="Mot de passe"
class="form-control"
name="password"
value=""
required="" />
</div>
<input
type="hidden"
class="form-control"
name="user_id"
value="2807" />
<input
type="hidden"
class="form-control"
name="id"
value="" />
<div class="col-md-12 row" style="margin-top: 30px">
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Transactions" />
Transactions
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Liste reversement" />
Liste reversement
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Demande de reversement" />
Demande de reversement
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Services" />
Services
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Intégrations" />
Intégrations
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Application android" />
Application android
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Compte associé" />
Compte associé
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Utilisateurs" />
Utilisateurs
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Mon profile" />
Mon profile
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Modifer" />
Modifer
</label>
</div>
<div class="col-md-3">
<label>
<input
type="checkbox"
name="access[]"
value="Mot de passe" />
Mot de passe
</label>
</div>
</div>
<div class="col-md-12 text-center">
<br />
<div class="card-title">
<button
id="add_ppci_other_user"
class="btn-round btn btn-primary btn-sm m-1">
Enregistrer <i class="fa fa-save"></i>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { EditUserComponent } from './edit-user.component';
describe('EditUserComponent', () => {
let component: EditUserComponent;
let fixture: ComponentFixture<EditUserComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [EditUserComponent]
})
.compileComponents();
fixture = TestBed.createComponent(EditUserComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule, MatCardTitle } from '@angular/material/card';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
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 { MatTableModule } from '@angular/material/table';
import { RouterOutlet, RouterLink } from '@angular/router';
import { CarouselComponent } from 'src/app/shared/carousel/carousel.component';
@Component({
selector: 'bgui-edit-user',
standalone: true,
imports: [
CommonModule,
MatPaginator,
MatTableModule,
MatFormFieldModule,
MatInputModule,
CarouselComponent,
MatCardModule,
MatCardTitle,
ReactiveFormsModule,
MatButtonModule,
MatIconModule,
MatCheckboxModule,
RouterOutlet,
MatPaginatorModule,
RouterLink,
FormsModule,
MatMenuModule,
],
templateUrl: './edit-user.component.html',
styleUrl: './edit-user.component.scss',
})
export class EditUserComponent {
name!: string;
lastName!: string;
email!: string;
password!: string;
ffPassword!: string;
images = [
{
imageSrc: './assets/images/carousel-auth/orange-with-variant.png',
imageAlt: 'nature1',
},
{
imageSrc: './assets/images/carousel-auth/silver-modern-with-variant.png',
imageAlt: 'nature1',
},
];
// email = new FormControl('', [Validators.required, Validators.email]);
// password = new FormControl('', [Validators.required]);
// form: any = {
// email: '',
// password: '',
// };
// getErrorMessage() {
// if (this.email.hasError('required')) {
// return 'Impossible de trouver votre compte Beasy';
// }
// return this.email.hasError('email') ? 'Adresse e-mail non valide' : '';
// }
// getErrorAuth() {
// this.msgAuth = '';
// }
// hide = true;
isActive = false;
// msgAuth = '';
// private router = inject(Router);
// constructor(private router:Router) {
// //...
// }
// ngOnInit(): void {
// //...
// }
// onSubmit(): void {
// console.log(this.form);
// this.connexionlogin();
// }
// connexionlogin() {
// //console.log("Nous sommes ici");
// if (
// this.form.email === 'mrfrancice@gmail.com' &&
// this.form.password === 'p@ssw0rd'
// ) {
// localStorage.setItem('isLoggedIn', 'true');
// localStorage.setItem('token', this.form.email);
// // Remplacez 'page-accueil' par l'URL de la page à laquelle vous souhaitez rediriger
// console.log("Redirection vers 'dash'");
// this.router.navigate(['/admin']);
// //window.location.href = '/';
// } else {
// this.router.navigate(['/auth']);
// this.msgAuth = 'Login ou PassWord incorrect...';
// }
// }
register() {}
}
import type { Routes } from '@angular/router';
import { UtilisateursComponent } from './utilisateurs.component';
import { CreateUsersComponent } from './create-users/create-users.component';
import { EditUserComponent } from './edit-user/edit-user.component';
import { DeleteUserComponent } from './delete-user/delete-user.component';
import { ViewUserComponent } from './view-user/view-user.component';
export const userRoutes: Routes = [
{
path: '',
component: UtilisateursComponent,
children: [
{ path: '', redirectTo: 'utilisateurs', pathMatch: 'full' },
{
path: 'create-users',
component: CreateUsersComponent,
},
{
path: 'edit-user/id',
component: EditUserComponent,
},
{
path: 'delete-user/id',
component: DeleteUserComponent,
},
{
path: 'view-user',
component: ViewUserComponent,
},
],
},
];
<div class="container-fluid"><h3>Utilisateurs</h3></div>
<div>
<router-outlet></router-outlet>
</div>
<div class="page-title d-flex justify-content-between"> <div class="page-title d-flex justify-content-between">
<h3>Utilisateurs</h3> <a [routerLink]="['create-users/']" class="btn btn-sm btn-success m-2">
<a routerLink="#" class="btn btn-sm btn-success m-2">
Ajouter un utilisateur Ajouter un utilisateur
</a> </a>
</div> </div>
...@@ -42,16 +47,19 @@ ...@@ -42,16 +47,19 @@
<ng-container matColumnDef="actions"> <ng-container matColumnDef="actions">
<mat-header-cell *matHeaderCellDef>Actions</mat-header-cell> <mat-header-cell *matHeaderCellDef>Actions</mat-header-cell>
<mat-cell *matCellDef="let user" style="text-align: right"> <mat-cell *matCellDef="let user" style="text-align: right">
<a href="#" class="btn btn-info" [routerLink]="['view-user']">Voir</a> <a href="#" class="m-2" [routerLink]="['view-user']"
<a href="#" class="btn btn-primary m-1" [routerLink]="['edit-user/id']" ><mat-icon style="color: blue" title="Voir"
>Editer</a >remove_red_eye</mat-icon
></a
>
<a href="#" class="m-2" [routerLink]="['edit-user/id']"
><mat-icon style="color: green" title="Modifier">edit</mat-icon></a
>
<a href="#" class="m-2" [routerLink]="['delete-user/id']"
><mat-icon style="color: red" title="Supprimer"
>delete_sweep</mat-icon
></a
> >
<button
type="button"
class="btn btn-danger"
[routerLink]="['delete-user/id']">
Supprimer
</button>
</mat-cell> </mat-cell>
</ng-container> </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
...@@ -65,29 +73,3 @@ ...@@ -65,29 +73,3 @@
[showFirstLastButtons]="true"> [showFirstLastButtons]="true">
</mat-paginator> </mat-paginator>
</div> </div>
<!-- <hr />
<div>
<table>
<thead>
<tr>
<th>id</th>
<th>code</th>
<th>liens</th>
<th>etat</th>
<th>status</th>
<th>information</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of dataTypePaiements">
<td>{{ item.id }}</td>
<td>{{ item.code }}</td>
<td>{{ item.lien }}</td>
<td>{{ item.etat }}</td>
<td>{{ item.status }}</td>
<td>{{ item.information }}</td>
</tr>
</tbody>
</table>
</div> -->
...@@ -10,7 +10,7 @@ import { MatButtonModule } from '@angular/material/button'; ...@@ -10,7 +10,7 @@ import { MatButtonModule } from '@angular/material/button';
import { MatCardModule, MatCardTitle } from '@angular/material/card'; import { MatCardModule, MatCardTitle } from '@angular/material/card';
import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatIconModule } from '@angular/material/icon'; import { MatIconModule } from '@angular/material/icon';
import { RouterLink } from '@angular/router'; import { RouterLink, RouterOutlet } from '@angular/router';
import { CarouselComponent } from '../shared/carousel/carousel.component'; import { CarouselComponent } from '../shared/carousel/carousel.component';
import { MatMenuModule } from '@angular/material/menu'; import { MatMenuModule } from '@angular/material/menu';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
...@@ -78,21 +78,19 @@ const ELEMENT_DATA: IUsers[] = [ ...@@ -78,21 +78,19 @@ const ELEMENT_DATA: IUsers[] = [
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
CarouselComponent, CarouselComponent,
MatFormFieldModule,
MatCardModule, MatCardModule,
MatCardTitle, MatCardTitle,
ReactiveFormsModule, ReactiveFormsModule,
MatInputModule,
MatInputModule,
MatButtonModule, MatButtonModule,
MatIconModule, MatIconModule,
MatCheckboxModule, MatCheckboxModule,
MatTableModule, RouterOutlet,
MatPaginatorModule, MatPaginatorModule,
RouterLink, RouterLink,
FormsModule, FormsModule,
MatMenuModule, MatMenuModule,
], ],
providers: [],
templateUrl: './utilisateurs.component.html', templateUrl: './utilisateurs.component.html',
styleUrl: './utilisateurs.component.scss', styleUrl: './utilisateurs.component.scss',
}) })
......
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ViewUserComponent } from './view-user.component';
describe('ViewUserComponent', () => {
let component: ViewUserComponent;
let fixture: ComponentFixture<ViewUserComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ViewUserComponent]
})
.compileComponents();
fixture = TestBed.createComponent(ViewUserComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { RouterLink } from '@angular/router';
import { CarouselComponent } from 'src/app/shared/carousel/carousel.component';
@Component({
selector: 'bgui-view-user',
standalone: true,
imports: [
CommonModule,
CarouselComponent,
MatFormFieldModule,
ReactiveFormsModule,
MatInputModule,
MatButtonModule,
MatIconModule,
MatCheckboxModule,
RouterLink,
FormsModule,
],
templateUrl: './view-user.component.html',
styleUrl: './view-user.component.scss',
})
export class ViewUserComponent {
name!: string;
lastName!: string;
email!: string;
password!: string;
ffPassword!: string;
images = [
{
imageSrc: './assets/images/carousel-auth/orange-with-variant.png',
imageAlt: 'nature1',
},
{
imageSrc: './assets/images/carousel-auth/silver-modern-with-variant.png',
imageAlt: 'nature1',
},
];
// email = new FormControl('', [Validators.required, Validators.email]);
// password = new FormControl('', [Validators.required]);
// form: any = {
// email: '',
// password: '',
// };
// getErrorMessage() {
// if (this.email.hasError('required')) {
// return 'Impossible de trouver votre compte Beasy';
// }
// return this.email.hasError('email') ? 'Adresse e-mail non valide' : '';
// }
// getErrorAuth() {
// this.msgAuth = '';
// }
// hide = true;
isActive = false;
// msgAuth = '';
// private router = inject(Router);
// constructor(private router:Router) {
// //...
// }
// ngOnInit(): void {
// //...
// }
// onSubmit(): void {
// console.log(this.form);
// this.connexionlogin();
// }
// connexionlogin() {
// //console.log("Nous sommes ici");
// if (
// this.form.email === 'mrfrancice@gmail.com' &&
// this.form.password === 'p@ssw0rd'
// ) {
// localStorage.setItem('isLoggedIn', 'true');
// localStorage.setItem('token', this.form.email);
// // Remplacez 'page-accueil' par l'URL de la page à laquelle vous souhaitez rediriger
// console.log("Redirection vers 'dash'");
// this.router.navigate(['/admin']);
// //window.location.href = '/';
// } else {
// this.router.navigate(['/auth']);
// this.msgAuth = 'Login ou PassWord incorrect...';
// }
// }
register() {}
}
export const environment = { export const environment = {
production: false, production: false,
apiBaseUrl: 'http://192.168.1.223:8000', apiBaseUrl: 'http://192.168.1.223:8001',
env: 'local', env: 'local',
}; };
...@@ -19,6 +19,6 @@ ...@@ -19,6 +19,6 @@
export const environment = { export const environment = {
production: false, production: false,
apiBaseUrl: 'http://192.168.1.223:8000', apiBaseUrl: 'http://192.168.1.223:8001',
env: 'local', env: 'local',
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment