192 lines
5.4 KiB
TypeScript
192 lines
5.4 KiB
TypeScript
import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
import { FormsModule, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms';
|
|
import { Subject, Subscription} from 'rxjs';
|
|
import { MessageService } from 'primeng/api';
|
|
|
|
import {Staff, Code, userRole, ResetPassword} from '../models';
|
|
import { LookupService, Utils } from '../shares';
|
|
import { StaffService } from './staff.service';
|
|
import { CommonModule } from '@angular/common';
|
|
import { ButtonModule } from 'primeng/button';
|
|
|
|
@Component({
|
|
templateUrl: 'staff.pass.component.html',
|
|
selector: 'staff-pass',
|
|
imports:[ReactiveFormsModule,CommonModule,ButtonModule],
|
|
styleUrls: ['staff.pass.component.css']
|
|
})
|
|
export class StaffPassComponent implements OnInit, OnDestroy {
|
|
returnUrl ='';
|
|
loginUser ='';
|
|
_error ='';
|
|
_id= -1;
|
|
|
|
isNew = false;
|
|
validationPoints?: Code[];
|
|
msg="[adminUser Component] ";
|
|
private formBuilder = inject(UntypedFormBuilder);
|
|
//for focus input
|
|
// @ViewChild('mystaffid') mystaffNo!: MatInput;
|
|
isChange = true; // disable use false//true for not disable. make sure it true is disable button.
|
|
private subscription:Subscription = new Subscription();
|
|
subChanged$ = new Subject<boolean>();
|
|
adminuserForm = this.formBuilder.group({
|
|
id: [0], //Validators.required
|
|
|
|
password: ['',Validators.required], //Validators.required
|
|
passwordAgain: ['',Validators.required], //Validators.required
|
|
|
|
|
|
});
|
|
constructor(
|
|
private staffService: StaffService,
|
|
private messageService: MessageService,
|
|
private lookupService: LookupService,
|
|
private router: Router, private route: ActivatedRoute,
|
|
) {
|
|
|
|
|
|
//item = {id:userRole.Normal, name: 'Switch', status:'Switch'};
|
|
//this.Roles.push(item);
|
|
}
|
|
getClassForRequire(prev:string,name:string){
|
|
const notok = !this.adminuserForm.controls[name].valid &&
|
|
this.adminuserForm.controls[name].touched;
|
|
let str =prev;
|
|
if (notok)
|
|
str += " ng-invalid ng-dirty";
|
|
return str;
|
|
}
|
|
ngOnInit():void {
|
|
this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';
|
|
const id = Number(this.route.snapshot.paramMap.get('id'));
|
|
// now load thing up
|
|
const user = Utils.getCurrentUser();
|
|
// console.log(this.msg + "current login user ", user);
|
|
if (user.username === '')
|
|
alert("you are not login.");
|
|
else
|
|
this.loginUser = user.firstName;
|
|
this._id = id;
|
|
//console.log(this.msg + " " + id );
|
|
this.subscription.add(this.adminuserForm.valueChanges.subscribe(x => this.isChange = false));
|
|
this.subscription.add(this.subChanged$.subscribe(x => this.isChange = x));
|
|
|
|
|
|
}
|
|
getEditText(): string {
|
|
|
|
return "Reset Password";
|
|
|
|
}
|
|
// this for disable submit button
|
|
get isFieldsChange() {
|
|
const chan = this.isChange || !this.adminuserForm.valid; // this disable so need true valid = true not
|
|
//console.log(this.msg + 'is fields change', chan);
|
|
return chan;
|
|
}
|
|
searchUser(): void {
|
|
const staffid = this.adminuserForm.controls["stafflinkNo"].value;
|
|
// console.log(this.msg + " the staffid is ", staffid);
|
|
if (staffid != '') {
|
|
//this.form.controls['your form control name'].value
|
|
this.staffService.loadStaffById(staffid).subscribe({
|
|
next: x => {
|
|
//console.log(this.msg + " this is stafflink no ", x);
|
|
// now get current user.
|
|
|
|
if (x.statusCode == 1) {
|
|
//this.error = true;
|
|
const fname = x.data.firstname + " " + x.data.lastname;
|
|
this.adminuserForm.patchValue({name:fname, addedBy:this.loginUser});
|
|
|
|
}
|
|
else {
|
|
this.messageService.add({severity:'error', summary: 'Error', detail: x.message });
|
|
}
|
|
},
|
|
error: e => {
|
|
const message = e || e.message;
|
|
//this.toastr.error(message);
|
|
console.log("error ", e);
|
|
}
|
|
});
|
|
}
|
|
else
|
|
{
|
|
//this.toastr.error("please enter staff link no");
|
|
}
|
|
}
|
|
|
|
|
|
// convenience getter for easy access in form fields
|
|
get f() { return this.adminuserForm.controls;}
|
|
validate(adminuser:any, passwordAgain:string): boolean {
|
|
let result = true;
|
|
const pass = adminuser.password.trim();
|
|
if (pass == '')
|
|
{
|
|
this._error = 'password is blank or empty';
|
|
result = false;
|
|
}
|
|
if (pass !== passwordAgain)
|
|
{
|
|
this._error = 'password is not match';
|
|
result = false;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
onSubmit(): void {
|
|
// if form valid then go save
|
|
//make sure
|
|
const okToSave = this.adminuserForm.valid;
|
|
|
|
if (okToSave)
|
|
{
|
|
let adminuserValue = this.adminuserForm.value;
|
|
|
|
let adminuser:ResetPassword = {
|
|
id: this._id,
|
|
password: adminuserValue.password,
|
|
|
|
};
|
|
this._error ='';
|
|
const again = adminuserValue.passwordAgain;
|
|
const allOK = this.validate(adminuserValue, again);
|
|
if (allOK)
|
|
{
|
|
this.subscription.add (
|
|
this.staffService.saveResetPassword(adminuser).subscribe({
|
|
next: x => {
|
|
if (x.statusCode >= 1)
|
|
{
|
|
this.messageService.add({severity:'success', summary: 'Save user', detail: adminuser.id.toString() });
|
|
this.router.navigate([this.returnUrl]);
|
|
}
|
|
else
|
|
{
|
|
this.messageService.add({severity:'error', summary: 'Error', detail: x.message });
|
|
}
|
|
},
|
|
error: e => {
|
|
const message = e || e.message;
|
|
// this.toastr.error(message);
|
|
console.log("error ", e);
|
|
}
|
|
})
|
|
);
|
|
}
|
|
else
|
|
this.messageService.add({severity:'error', summary: 'Error', detail: this._error });
|
|
}
|
|
}
|
|
goBack(): void {
|
|
this.router.navigate([this.returnUrl]);
|
|
}
|
|
ngOnDestroy() {
|
|
this.subscription.unsubscribe();
|
|
}
|
|
}
|