Newer
Older
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { HttpClient } from '@angular/common/http';
import { ActivatedRoute, Router } from '@angular/router';
import { NotificationService } from '../../../service/notification/notification.service';
import { HeaderService } from '../../../service/header.service';
import { AppService } from '../../../service/app.service';
import { tap, catchError } from 'rxjs/operators';
import { of } from 'rxjs/internal/observable/of';
selector: 'app-registered-mail',
templateUrl: './registered-mail.component.html',
styleUrls: ['./registered-mail.component.scss']
})
export class RegisteredMailComponent implements OnInit {
creationMode: boolean;
loading: boolean = true;
adminFormGroup: FormGroup;
id: number = null;
customerAccountNumberList: any[] = [];
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{
id: '2D',
label: 'National sans AR'
},
{
id: '2C',
label: 'National avec AR'
},
{
id: 'RW',
label: 'International'
}
];
constructor(
private translate: TranslateService,
public http: HttpClient,
private route: ActivatedRoute,
private router: Router,
private notify: NotificationService,
private headerService: HeaderService,
public appService: AppService,
private _formBuilder: FormBuilder,
) { }
ngOnInit(): void {
this.route.params.subscribe(async (params) => {
this.getIssuingSites();
if (typeof params['id'] === 'undefined') {
this.creationMode = true;
this.headerService.setHeader(this.translate.instant('lang.registeredMailNumberRangesCreation'));
this.adminFormGroup = this._formBuilder.group({
id: [null],
trackerNumber: [null],
rangeStart: [1],
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
});
this.loading = false;
} else {
this.headerService.setHeader(this.translate.instant('lang.registeredMailNumberRangesModification'));
this.id = params['id'];
this.creationMode = false;
await this.getData();
}
this.adminFormGroup.controls['rangeStart'].valueChanges.pipe(
tap((value: string) => {
if (value > this.adminFormGroup.controls['rangeEnd'].value) {
this.adminFormGroup.controls['rangeStart'].setErrors({'rangeError': true});
} else {
this.adminFormGroup.controls['rangeStart'].setErrors(null);
this.adminFormGroup.controls['rangeEnd'].setErrors(null);
}
})
).subscribe();
this.adminFormGroup.controls['rangeEnd'].valueChanges.pipe(
tap((value: string) => {
if (value < this.adminFormGroup.controls['rangeStart'].value) {
this.adminFormGroup.controls['rangeEnd'].setErrors({'rangeError': true});
} else {
this.adminFormGroup.controls['rangeStart'].setErrors(null);
this.adminFormGroup.controls['rangeEnd'].setErrors(null);
}
})
).subscribe();
});
}
getIssuingSites() {
this.http.get('../rest/registeredMail/sites').pipe(
tap((data: any) => {
this.customerAccountNumberList = data['sites'].map((item: any) => {
return {
id: item.id,
label: `${item.siteLabel} (${item.accountNumber})`
};
});
}),
catchError((err: any) => {
this.notify.handleSoftErrors(err);
return of(false);
})
).subscribe();
}
getData() {
return new Promise((resolve) => {
this.http.get(`../rest/registeredMail/ranges/${this.id}`).pipe(
tap((data: any) => {
this.adminFormGroup = this._formBuilder.group({
id: [this.id],
siteId: [data.range.siteId],
trackerNumber: [data.range.trackerNumber],
registeredMailType: [data.range.registeredMailType],
rangeStart: [data.range.rangeStart],
rangeEnd: [data.range.rangeEnd],
status: [data.range.status]
if (data.range.status === 'OK' || data.range.status === 'END') {
this.adminFormGroup.disable();
}
resolve(true);
this.loading = false;
}),
catchError((err: any) => {
this.notify.handleSoftErrors(err);
return of(false);
})
).subscribe();
});
}
onlyNumbers(event) {
let k;
k = event.charCode;
if (this.adminFormGroup.controls['rangeStart'].value === null && k === 48) {
return false;
} else {
return (k >= 48 && k <= 57);
}
}
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
onSubmit() {
const objToSubmit = {};
Object.keys(this.adminFormGroup.controls).forEach(key => {
objToSubmit[key] = this.adminFormGroup.controls[key].value;
});
if (this.creationMode) {
this.http.post('../rest/registeredMail/ranges', objToSubmit)
.subscribe(() => {
this.notify.success(this.translate.instant('lang.registeredMailNumberRangesAdded'));
this.router.navigate(['/administration/registeredMails']);
}, (err) => {
this.notify.error(err.error.errors);
});
} else {
this.http.put('../rest/registeredMail/ranges/' + this.id, objToSubmit)
.subscribe(() => {
this.notify.success(this.translate.instant('lang.registeredMailNumberRangesUpdated'));
this.router.navigate(['/administration/registeredMails']);
}, (err) => {
this.notify.error(err.error.errors);
});
}
}