Skip to content
Snippets Groups Projects
Commit 53106d02 authored by Alex ORLUC's avatar Alex ORLUC
Browse files

FEAT #14537 TIME 1:20 set min range for new range admin + synchro with column db

parent 899b33fd
No related branches found
No related tags found
No related merge requests found
......@@ -150,20 +150,19 @@ export class IssuingSiteComponent implements OnInit {
})
).subscribe();
}
initAutocompleteCountries() {
this.countriesFilteredResult = this.adminFormGroup.controls['addressCountry'].valueChanges
.pipe(
startWith(''),
map(value => this._filter(value))
);
.pipe(
startWith(''),
map(value => this._filter(value))
);
}
private _filter(value: string): string[] {
const filterValue = value.toLowerCase();
console.log(this.countries);
return this.countries.filter(option => option.toLowerCase().includes(filterValue));
}
}
initAutocompleteAddressBan() {
this.addressBANInfo = this.translate.instant('lang.autocompleteInfo');
......
......@@ -51,12 +51,12 @@
</div>
</div>
<mat-table #table [dataSource]="adminService.getDataSource()" matSort matSortDisableClear>
<ng-container matColumnDef="customerAccountNumber">
<ng-container matColumnDef="label">
<mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">
{{'lang.customerAccountNumber' | translate}}
{{'lang.issuingSite' | translate}}
</mat-header-cell>
<mat-cell *matCellDef="let element" style="flex:2">
{{element.customerAccountNumber}} </mat-cell>
{{element.label}} </mat-cell>
</ng-container>
<ng-container matColumnDef="trackerNumber">
<mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">
......@@ -65,12 +65,12 @@
<mat-cell *matCellDef="let element" style="flex:2">
{{element.trackerNumber}} </mat-cell>
</ng-container>
<ng-container matColumnDef="registredMailType">
<mat-header-cell *matHeaderCellDef mat-sort-header>
<ng-container matColumnDef="typeLabel">
<mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">
{{'lang.type' | translate}}
</mat-header-cell>
<mat-cell *matCellDef="let element">
{{element.registeredMailType}} </mat-cell>
<mat-cell *matCellDef="let element" style="flex:2">
{{element.typeLabel}} </mat-cell>
</ng-container>
<ng-container matColumnDef="rangeNumber">
<mat-header-cell *matHeaderCellDef mat-sort-header>
......@@ -92,7 +92,7 @@
</mat-header-cell>
<mat-cell *matCellDef="let element">
<span
[ngClass]="{'statusLabelWarn': ['SPD','END'].indexOf(element.status) > -1, 'statusLabelPrimary': ['SPD','END'].indexOf(element.status) == -1}"
[ngClass]="{'statusLabelPrimary': ['OK'].indexOf(element.status) > -1, 'statusLabelWarn': ['SPD'].indexOf(element.status) > -1, 'statusLabelDanger': ['END'].indexOf(element.status) > -1}"
class="label">{{element.statusLabel}}</span>
</mat-cell>
</ng-container>
......@@ -115,7 +115,7 @@
<mat-header-cell *matHeaderCellDef></mat-header-cell>
<mat-cell *matCellDef="let element" style="justify-content: flex-end;">
<button mat-icon-button color="accent" matTooltip="{{'Activer la plage' | translate}}"
(click)="$event.stopPropagation();activate(element)" *ngIf="element.status !== 'OK'" [disabled]="element.fullness === 100">
(click)="$event.stopPropagation();activate(element)" *ngIf="element.status === 'SPD'" [disabled]="element.fullness === 100">
<mat-icon class="fa fas fa-play fa-2x" aria-hidden="true"></mat-icon>
</button>
<button mat-icon-button color="warn" matTooltip="{{'Clôturer la plage' | translate}}"
......
......@@ -33,10 +33,14 @@
stroke: red;
}
.statusLabelWarn {
.statusLabelDanger {
color : $warn;
}
.statusLabelWarn {
color : $secondary;
}
.statusLabelPrimary {
color : $primary;
}
\ No newline at end of file
......@@ -43,8 +43,8 @@ export class RegisteredMailListComponent implements OnInit {
data: any[] = [];
displayedColumns = ['trackerNumber', 'customerAccountNumber', 'registredMailType', 'rangeNumber', 'currentNumber', 'status', 'fullness', 'actions'];
filterColumns = ['customerAccountNumber', 'trackerNumber', 'registredMailType', 'rangeNumber', 'currentNumber', 'fullness', 'statusLabel'];
displayedColumns = ['trackerNumber', 'label', 'typeLabel', 'rangeNumber', 'currentNumber', 'status', 'fullness', 'actions'];
filterColumns = ['label', 'trackerNumber', 'typeLabel', 'rangeNumber', 'currentNumber', 'fullness', 'statusLabel'];
@ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
@ViewChild(MatSort, { static: false }) sort: MatSort;
......@@ -77,7 +77,8 @@ export class RegisteredMailListComponent implements OnInit {
this.data = data['ranges'].map((item: any) => {
return {
...item,
statusLabel : item.status !== 'OK' ? this.translate.instant('lang.inactive') : this.translate.instant('lang.active'),
statusLabel : this.translate.instant('lang.registeredMail_' + item.status),
typeLabel : this.translate.instant('lang.registeredMail_' + item.registeredMailType),
rangeNumber : `${item.rangeStart} - ${item.rangeEnd}`,
};
});
......@@ -103,8 +104,22 @@ export class RegisteredMailListComponent implements OnInit {
filter((data: string) => data === 'ok'),
exhaustMap(() => this.http.put(`../rest/registeredMail/ranges/${row.id}`, dataTosend)),
tap(() => {
row.status = 'OK';
row.statusLabel = this.translate.instant('lang.active');
this.data = this.data.map((item: any) => {
return {
...item,
status : item.status === 'OK' && item.registeredMailType === row.registeredMailType && item.siteId === row.siteId ? 'END' : item.status
};
});
this.data.forEach(item => {
if (item.status === 'OK' && item.registeredMailType === row.registeredMailType && item.siteId === row.siteId) {
item.status = 'END';
item.statusLabel = this.translate.instant('lang.registeredMail_' + item.status);
} else if (item.id === row.id) {
item.status = 'OK';
item.statusLabel = this.translate.instant('lang.registeredMail_' + item.status);
}
});
setTimeout(() => {
this.adminService.setDataSource('admin_regitered_mail', this.data, this.sort, this.paginator, this.filterColumns);
}, 0);
......@@ -128,7 +143,7 @@ export class RegisteredMailListComponent implements OnInit {
exhaustMap(() => this.http.put(`../rest/registeredMail/ranges/${row.id}`, dataTosend)),
tap(() => {
row.status = 'END';
row.statusLabel = this.translate.instant('lang.inactive');
row.statusLabel = this.translate.instant('lang.registeredMail_' + row.status);
setTimeout(() => {
this.adminService.setDataSource('admin_regitered_mail', this.data, this.sort, this.paginator, this.filterColumns);
}, 0);
......
......@@ -19,8 +19,8 @@
</div>
<mat-card *ngIf="!loading" class="card-app-content">
<div class="alert-message alert-message-danger" style="min-width: 100%;"
*ngIf="adminFormGroup.controls['status'].value === 'OK'"
[innerHTML]="'La plage est en <b>cours d\'utilisation</b>, vous ne pouvez pas la modifier.'"></div>
*ngIf="adminFormGroup.controls['status'].value === 'OK' || adminFormGroup.controls['status'].value === 'END' "
[innerHTML]="'La plage est en <b>cours d\'utilisation</b> ou <b>clôturée</b>, vous ne pouvez pas la modifier.'"></div>
<form style="display: contents;" (ngSubmit)="onSubmit()" [formGroup]="adminFormGroup">
<div>
<mat-form-field>
......@@ -28,8 +28,8 @@
<input matInput formControlName="trackerNumber">
</mat-form-field>
<plugin-select-search *ngIf="customerAccountNumberList.length > 0" [showLabel]="true"
[label]="this.translate.instant('lang.customerAccountNumber')"
[placeholderLabel]="this.translate.instant('lang.customerAccountNumber')"
[label]="this.translate.instant('lang.issuingSite')"
[placeholderLabel]="this.translate.instant('lang.issuingSite')"
[datas]="customerAccountNumberList" [class]="''"
[formControlSelect]="adminFormGroup.controls['siteId']">
</plugin-select-search>
......@@ -39,13 +39,13 @@
</plugin-select-search>
<div style="display: grid;grid-template-columns: 1fr 1fr;grid-gap: 20px;">
<mat-form-field>
<mat-label>{{'lang.start' | translate}}</mat-label>
<input matInput type="number" [min]="1" (keypress)="onlyNumbers($event)"
<mat-label>{{'lang.registeredMailStart' | translate}}</mat-label>
<input matInput type="number" [min]="minRange" (keypress)="onlyNumbers($event)"
formControlName="rangeStart">
</mat-form-field>
<mat-form-field>
<mat-label>{{'lang.end' | translate}}</mat-label>
<input matInput type="number" [min]="1" (keypress)="onlyNumbers($event)"
<mat-label>{{'lang.registeredMailEnd' | translate}}</mat-label>
<input matInput type="number" [min]="this.adminFormGroup.controls['rangeStart'].value" (keypress)="onlyNumbers($event)"
formControlName="rangeEnd">
</mat-form-field>
</div>
......
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { HttpClient } from '@angular/common/http';
import { ActivatedRoute, Router } from '@angular/router';
......@@ -21,21 +21,22 @@ export class RegisteredMailComponent implements OnInit {
adminFormGroup: FormGroup;
id: number = null;
minRange: number = 1;
customerAccountNumberList: any[] = [];
registeredMailType: any[] = [
{
id: '2D',
label: 'National sans AR'
label: this.translate.instant('lang.registeredMail_2D')
},
{
id: '2C',
label: 'National avec AR'
label: this.translate.instant('lang.registeredMail_2C')
},
{
id: 'RW',
label: 'International'
label: this.translate.instant('lang.registeredMail_RW')
}
];
......@@ -59,14 +60,13 @@ export class RegisteredMailComponent implements OnInit {
this.adminFormGroup = this._formBuilder.group({
id: [null],
siteId: [null],
trackerNumber: [null],
registeredMailType: [null],
rangeStart: [1],
rangeEnd: [2],
siteId: [null, Validators.required],
trackerNumber: [null, Validators.required],
registeredMailType: [null, Validators.required],
rangeStart: [1, Validators.required],
rangeEnd: [2, Validators.required],
status: ['SPD']
});
this.loading = false;
} else {
......@@ -74,8 +74,15 @@ export class RegisteredMailComponent implements OnInit {
this.id = params['id'];
this.creationMode = false;
await this.getData();
this.getMinRange();
}
this.adminFormGroup.controls['registeredMailType'].valueChanges.pipe(
tap((value: string) => {
this.getMinRange();
})
).subscribe();
this.adminFormGroup.controls['rangeStart'].valueChanges.pipe(
tap((value: string) => {
if (value > this.adminFormGroup.controls['rangeEnd'].value) {
......@@ -154,6 +161,26 @@ export class RegisteredMailComponent implements OnInit {
}
}
getMinRange() {
this.http.get(`../rest/registeredMail/ranges/last/type/${this.adminFormGroup.controls['registeredMailType'].value}`).pipe(
tap((data: any) => {
if (data.lastNumber === 1) {
this.minRange = data.lastNumber;
} else {
this.minRange = data.lastNumber + 1;
}
this.adminFormGroup.controls['rangeStart'].setValue(this.minRange);
if (this.adminFormGroup.controls['rangeEnd'].value < this.adminFormGroup.controls['rangeStart'].value) {
this.adminFormGroup.controls['rangeEnd'].setValue(this.adminFormGroup.controls['rangeStart'].value + 1);
}
}),
catchError((err: any) => {
this.notify.handleSoftErrors(err);
return of(false);
})
).subscribe();
}
onSubmit() {
const objToSubmit = {};
Object.keys(this.adminFormGroup.controls).forEach(key => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment