Files
familytree/myshare/UI/src/app/staff/staff.pass.component.ts
T
2025-09-25 17:21:13 +10:00

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();
}
}